Mutt: определить, какие заголовки отображаются (в compose)

10

При составлении сообщения muttя вижу следующие заголовки:

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

Я не знаю, для чего Mix:нужен заголовок, и не думаю, что он мне когда-нибудь понадобится. Точно так же мне не нужно будет редактировать Reply-To:шапку.

Эти две бесполезные линии занимают ценное пространство. Можно ли полностью удалить эти заголовки? Могу ли я указать, какие заголовки отображаются в меню создания?

Мартин Вегтер
источник
2
Согласно Руководству по Mutt , Mixдля отправки анонимных сообщений через mixmaster(что бы это ни значило)
Robert Hayek,
Ооо, проверяя исходный код, что эти опции недоступны (и, следовательно, говоря «нет, не возможно - но посмотрите здесь, модификация»), заслуживающий доверия источник? :)
полим

Ответы:

3

Хорошо, я получил (очень хакерское) решение. Ответ: Эти заголовки можно удалить, отредактировав 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;

Сделайте эти изменения в соответствии с кодом выше:

  • закомментируйте строку 60, HDR_REPLYTOenum -> исчезает Reply-Toзаголовок
  • закомментируйте строку «Reply-To:» в Promptsмассиве -> исчезнет Reply-Toстрока заголовка
  • закомментировать draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);-> исчезает Reply-Toзаголовок
  • закомментировать строки 564- 567чтобы избежать ошибок компиляции из-за отсутствия HDR_REPLYTO-> пропадает Reply-Toопция редактирования заголовка
  • добавьте #undef MIXMASTERперед проверкой def (или, возможно, добавьте эту строку ранее, чтобы избежать положительных проверок) -> исчезает Mixзаголовок.

Тогда ./configureи makeсоздавай свой персонализированный mutt. Возможно, вам придется решить некоторые проблемы компиляции и конфигурации.

Это сработало mutt-1.5.21.

Я действительно не знаю, как работает код Mutt, я вижу, что они используют cursesокна. Если кто-то тратит больше времени на понимание этого кода и почему он работает, пожалуйста, напишите продолжение.

Polym
источник
спасибо, но я надеялся на какой-то параметр конфигурации. Перекомпиляция Mutt кажется довольно высокой платой.
Мартин Вегтер
Да, знаю. Я изучил код и попытался найти любую возможность для некоторых параметров конфигурации, но их там нет. Поэтому ответ на ваш вопрос выше: «Да, это возможно, но с большим количеством работы. Нет, это невозможно с параметрами конфигурации или аналогичными легко настраиваемыми средствами». Извините, что разочаровал вас, кажется, что нет простого пути: /.
Полим
3

Вы устанавливаете заголовки, которые хотите отображать muttrc, следующим образом:

# headers to show
ignore *                                      # ignore all headers
unignore from: to: cc: date: subject:         # show only these
hdr_order from: to: cc: date: subject:        # and in this order
jasonwryan
источник
спасибо, но это действует только в пейджере (т.е. для полученных сообщений), но не в меню создания.
Мартин Вегтер
У меня работает: что еще у тебя .muttrc?
Джейсонвриан
ну, обычные вещи. около 50 строк. Но ничто из того, что я мог видеть, не помешало быignore
Мартин Вегтер
Вы установили edit_headers?
Джейсонвриан
нет, я не edit_headersустановил
Мартин Вегтер
2

Если вы используете vim:

set editor = "vim -c '/Mix: /d|/Reply-To: /d'"
Бо Баркер
источник
Хаки, но делает свое дело. Linux в двух словах.
ThreeFx