在 中撰写消息时mutt
,我看到以下标题:
From:
To:
Cc:
Bcc:
Subject:
Reply-To:
Fcc: ~/.mail/sent
Mix: <no chain defined>
Security: None
Run Code Online (Sandbox Code Playgroud)
我不知道Mix:
标题是做什么用的,而且我认为我永远不需要它。同样,我不需要编辑Reply-To:
标题。
这两条无用的线路占用了宝贵的空间。是否可以完全删除这些标题?我可以指定在撰写菜单中显示哪些标题吗?
好吧,我得到了一个(非常hacky)的解决方案。答:可以通过编辑mutt
的代码来删除这些标头,但到目前为止还不可能以任何其他方式。
首先,没有标志或任何检查源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;
Run Code Online (Sandbox Code Playgroud)
根据上面的代码进行这些更改:
HDR_REPLYTO
枚举 -> 使Reply-To
标题消失Prompts
-> 使Reply-To
标题字符串消失draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);
-> 消失Reply-To
标题564
-567
以避免由于缺少而导致编译错误HDR_REPLYTO
-> 消失Reply-To
标题编辑选项#undef MIXMASTER
(或者可以提前添加此行以避免任何检查为正)-> 消失标题Mix
。然后./configure
创建make
您的个性化mutt
. 您可能必须修复一些编译和配置问题。
它起作用了mutt-1.5.21
。
我真的不知道mutt的代码是如何工作的,我看到他们使用curses
windows。如果有人花更多时间理解这段代码及其工作原理,请发布后续内容。