[Mew-dist 13668] Re: 本文
SAKAI Kiyotaka
ksakai at example.com
2000年 7月 17日 (月) 20:58:44 JST
>> In article <20000709.002343.126574202.konuma at example.com>, Masaki KONUMA <konuma at example.com> writes:
>> そのうちやるかも:
>> - Summary モードの書式に本文を表示できるようにする
> 本文が見えないと悲しいので、とりあえず、いんちきして表示するようにしま
> した。
ハードコーディングしまくりですが、mewls で Body の先頭 3行の情報を返し、
Mew 側で表示できるようにするためのパッチです。
ただし、
・skip するべき行をどのように取り扱うのがいいのか。
・Body として返す行は、3行固定でいいのか。
といったあたりに課題が残ります。
ちなみに、始めは mewls 側で 1行に連結して返せばいいのではないかと思っ
ていたのですが、そのためには mewls で文字コードのハンドリングができな
ければいけないことに気が付いて挫折しました。
--
酒井 清隆 (E-mail: ksakai at example.com)
-------------- next part --------------
Index: mew-scan.el
===================================================================
RCS file: /home/ksakai/cvsroot/mew-1.95b47/mew-scan.el,v
retrieving revision 1.2
diff -u -r1.2 mew-scan.el
--- mew-scan.el 2000/07/17 11:24:28 1.2
+++ mew-scan.el 2000/07/17 11:49:41
@@ -14,7 +14,7 @@
(defvar mew-scan-fields
'("Filename:" "Subject:" "Date:" "From:" "To:"
- "Content-Type:" "Message-Id:"))
+ "Content-Type:" "Message-Id:" "Body1:" "Body2:" "Body3:"))
(defvar mew-summary-inbox-position (make-marker))
@@ -95,6 +95,9 @@
(to (or (aref vec 4) ""))
(ct (or (aref vec 5) ""))
(id (or (aref vec 6) ""))
+ (body1 (or (aref vec 7) ""))
+ (body2 (or (aref vec 8) ""))
+ (body3 (or (aref vec 9) ""))
(case-fold-search t)
day month ret1 ret2 func faddr nickname duplicated)
(if (string-match "\\([0-9][0-9]?\\) \\([A-Z][a-z][a-z]\\)" date)
@@ -133,6 +136,7 @@
(string-to-int day)
(mew-substring from 14) ""))
;; convert TAB to space
+ (setq subj (concat subj " || " body1 body2 body3))
(while (string-match "\t" subj)
(setq subj (replace-match " " nil nil subj)))
(setq ret2 (mew-substring subj (- width (string-width ret1) 1)))
Index: bin/mewls.c
===================================================================
RCS file: /home/ksakai/cvsroot/mew-1.95b47/bin/mewls.c,v
retrieving revision 1.2
diff -u -r1.2 mewls.c
--- mewls.c 2000/07/17 10:01:24 1.2
+++ mewls.c 2000/07/17 11:43:59
@@ -107,11 +107,12 @@
return p;
}
+#define BLEN 3
void
dumpheader(FILE *fp, char *fname) {
int lim = fread(hbuf, sizeof(char), sizeof(hbuf), fp);
int i;
- char *p, *limp, *end;
+ char *p, *limp, *end, *body[BLEN + 1];
memset(BEGP, 0, sizeof(BEGP));
memset(ENDP, 0, sizeof(ENDP));
@@ -142,8 +143,26 @@
if (p == NULL)
break;
}
- if (*p == '\n') /* header ends */
+ if (*p == '\n') {
+ /* header ends */
+ for (i = 0; i < BLEN + 1; i++) {
+ body[i] = NULL;
+ }
+ i = 0;
+ while (i < BLEN + 1) {
+ p = nextline(p, limp);
+ if (p == NULL) {
+ *(limp - 1) = '\0';
+ break;
+ }
+ *(p - 1) = '\0';
+ while (isspace(*p))
+ p++;
+ if (*p != '\0' && *p != '#' && *p != '>')
+ body[i++] = p;
+ }
break;
+ }
}
final:
@@ -157,6 +176,9 @@
p++;
}
}
+ for (i = 0; i < BLEN; i++)
+ if (body[i] != NULL)
+ printf("Body%d: %s\n", i + 1, body[i]);
printf("\n");
fflush(stdout);
Mew-dist メーリングリストの案内