diff -urN mutt-1.5.19.old/PATCHES mutt-1.5.19/PATCHES
--- mutt-1.5.19.old/PATCHES	2008-03-20 05:07:06.000000000 +0900
+++ mutt-1.5.19/PATCHES	2009-02-04 12:48:35.000000000 +0900
@@ -0,0 +1 @@
+mutt-1.5.19-ja-yy.delete_prefix.patch
diff -urN mutt-1.5.19.old/hdrline.c mutt-1.5.19/hdrline.c
--- mutt-1.5.19.old/hdrline.c	2009-01-06 04:20:53.000000000 +0900
+++ mutt-1.5.19/hdrline.c	2009-02-04 12:47:40.000000000 +0900
@@ -251,6 +251,7 @@
 #define THREAD_NEW (threads && hdr->collapsed && hdr->num_hidden > 1 && mutt_thread_contains_unread (ctx, hdr) == 1)
 #define THREAD_OLD (threads && hdr->collapsed && hdr->num_hidden > 1 && mutt_thread_contains_unread (ctx, hdr) == 2)
   size_t len;
+  char *subj;
 
   hdr = hfi->hdr;
   ctx = hfi->ctx;
@@ -548,11 +549,12 @@
 
     case 's':
       
+      subj = option (OPTDELETEPREFIX) ? hdr->env->real_subj : hdr->env->subject;
       if (flags & M_FORMAT_TREE && !hdr->collapsed)
       {
 	if (flags & M_FORMAT_FORCESUBJ)
 	{
-	  mutt_format_s (dest, destlen, "", NONULL (hdr->env->subject));
+	  mutt_format_s (dest, destlen, "", NONULL (subj));
 	  snprintf (buf2, sizeof (buf2), "%s%s", hdr->tree, dest);
 	  mutt_format_s_tree (dest, destlen, prefix, buf2);
 	}
@@ -560,7 +562,7 @@
 	  mutt_format_s_tree (dest, destlen, prefix, hdr->tree);
       }
       else
-	mutt_format_s (dest, destlen, prefix, NONULL (hdr->env->subject));
+	mutt_format_s (dest, destlen, prefix, NONULL (subj));
       break;
 
     case 'S':
diff -urN mutt-1.5.19.old/init.h mutt-1.5.19/init.h
--- mutt-1.5.19.old/init.h	2009-01-06 04:20:53.000000000 +0900
+++ mutt-1.5.19/init.h	2009-02-04 12:47:40.000000000 +0900
@@ -510,6 +510,19 @@
   ** If this option is \fIset\fP, mutt's received-attachments menu will not show the subparts of
   ** individual messages in a multipart/digest.  To see these subparts, press ``v'' on that menu.
   */
+  { "delete_prefix",	DT_BOOL, R_NONE, OPTDELETEPREFIX, 0 },
+  /*
+  ** .pp
+  ** If set, prefix in Subject: field generated by some mailing lists 
+  ** (something like "Subject: [foo-ML:0012] real-subject") can be deleted 
+  ** when displaying in index-mode and editing in message reply. 
+  ** Deletion pattern can be configured by $$delete_regexp variable.
+  */
+  { "delete_regexp",	DT_RX,	 R_NONE, UL &DeleteRegexp, UL "^(\\[[A-Za-z0-9_.: \\-]*\\][ ]*)" },
+  /*
+  ** .pp
+  ** A regular expression used in $$delete_prefix function.
+  */
   { "display_filter",	DT_PATH, R_PAGER, UL &DisplayFilter, UL "" },
   /*
   ** .pp
diff -urN mutt-1.5.19.old/mutt.h mutt-1.5.19/mutt.h
--- mutt-1.5.19.old/mutt.h	2008-09-26 07:00:03.000000000 +0900
+++ mutt-1.5.19/mutt.h	2009-02-04 12:47:40.000000000 +0900
@@ -325,6 +325,7 @@
   OPTCONFIRMAPPEND,
   OPTCONFIRMCREATE,
   OPTDELETEUNTAG,
+  OPTDELETEPREFIX,
   OPTDIGESTCOLLAPSE,
   OPTDUPTHREADS,
   OPTEDITHDRS,
diff -urN mutt-1.5.19.old/mutt_regex.h mutt-1.5.19/mutt_regex.h
--- mutt-1.5.19.old/mutt_regex.h	2008-03-20 05:07:06.000000000 +0900
+++ mutt-1.5.19/mutt_regex.h	2009-02-04 12:47:40.000000000 +0900
@@ -51,5 +51,6 @@
 WHERE REGEXP ReplyRegexp;
 WHERE REGEXP Smileys;
 WHERE REGEXP GecosMask;
+WHERE REGEXP DeleteRegexp;
 
 #endif /* MUTT_REGEX_H */
diff -urN mutt-1.5.19.old/parse.c mutt-1.5.19/parse.c
--- mutt-1.5.19.old/parse.c	2009-01-06 04:20:53.000000000 +0900
+++ mutt-1.5.19/parse.c	2009-02-04 12:47:40.000000000 +0900
@@ -1446,6 +1446,18 @@
 	e->real_subj = e->subject + pmatch[0].rm_eo;
       else
 	e->real_subj = e->subject;
+      if (option (OPTDELETEPREFIX))
+      {
+        /* if this option is set, mutt will delete the string as [prefix], 
+         * [prefix:number] and [prefix number] in Subject line.
+         */
+	if (regexec (DeleteRegexp.rx, e->real_subj, 1, pmatch, 0) == 0)
+	{
+	  e->real_subj = e->real_subj + pmatch[0].rm_eo;
+	  if (regexec (ReplyRegexp.rx, e->real_subj, 1, pmatch, 0) == 0)
+	    e->real_subj = e->real_subj + pmatch[0].rm_eo;
+	}
+      }
     }
 
     /* check for missing or invalid date */
