Mutt

mutt:定義顯示哪些標題(在撰寫中)

  • October 5, 2015

在 中撰寫消息時mutt,我看到以下標題:

   From: 
     To: 
     Cc:
    Bcc:
Subject:
Reply-To:
    Fcc: ~/.mail/sent
    Mix: <no chain defined>
Security: None

我不知道Mix:標題的用途,而且我認為我永遠不需要它。同樣,我不需要編輯Reply-To:標題。

這兩條無用的線路正在佔用寶貴的空間。是否可以完全刪除這些標題?我可以指定在撰寫菜單中顯示哪些標題嗎?

好的,我有一個(非常老套的)解決方案。答:可以通過編輯mutt’s 的程式碼來刪除這些標頭,但目前還不能以任何其他方式。

首先,在mutt的原始碼中沒有任何標誌或任何檢查來防止這些標題出現在撰寫菜單視窗中。至少我什麼都沒看到。

因此,無需編輯mutt程式碼就無法指定在撰寫菜單中顯示哪些標題。

我查看了源apt-get source mutt程式碼mutt

重要的部分在於compose.c

[...]

[line 60]
//  HDR_REPLYTO,

[...]

[line 77]
static char *Prompts[] =
{
 "From: ",
 "To: ",
 "Cc: ",
 "Bcc: ",
 "Subject: ",
//  "Reply-To: ",
 "Fcc: "
};

[...]

[line 251]
static void draw_envelope (HEADER *msg, char *fcc)
{
 draw_envelope_addr (HDR_FROM, msg->env->from);
 draw_envelope_addr (HDR_TO, msg->env->to);
 draw_envelope_addr (HDR_CC, msg->env->cc);
 draw_envelope_addr (HDR_BCC, msg->env->bcc);
 mvprintw (HDR_SUBJECT, 0, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
 mutt_paddstr (W, NONULL (msg->env->subject));
//  draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);
 mvprintw (HDR_FCC, 0, TITLE_FMT, Prompts[HDR_FCC - 1]);
 mutt_paddstr (W, fcc);

 if (WithCrypto)
   redraw_crypt_lines (msg);

#undef MIXMASTER
#ifdef MIXMASTER
 redraw_mix_line (msg->chain);
#endif

[...]

[line 564]
//      case OP_COMPOSE_EDIT_REPLY_TO:
//  menu->redraw = edit_address_list (HDR_REPLYTO, &msg->env->reply_to);
//        mutt_message_hook (NULL, msg, M_SEND2HOOK);
//  break;

根據上面的程式碼進行這些更改:

  • 註釋掉第 60 行,HDR_REPLYTO列舉 ->Reply-To標題消失
  • 註釋掉Prompts數組中的“Reply-To:”字元串 -> 消失Reply-To標題字元串
  • 註釋掉draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);-> 消失Reply-To標題
  • 註釋掉行564-567避免由於缺少而導致編譯錯誤HDR_REPLYTO-> 消失Reply-To標題編輯選項
  • 在 def 檢查之前添加#undef MIXMASTER(或者可能更早添加此行以避免任何檢查為正)-> 消失Mix標題。

然後./configuremake創建您的個性化mutt。您可能需要修復一些編譯和配置問題。

它起作用了mutt-1.5.21

我真的不知道 mutt 的程式碼是如何工作的,我看到他們使用curseswindows。如果有人花更多時間理解此程式碼及其工作原理,請發布後續內容。

引用自:https://unix.stackexchange.com/questions/104127