mutt - filtre mensagens como essas

mutt - filtre mensagens como essas

Gostaria de replicar o recurso "Filtrar mensagens como estas" do GMail. Basicamente, espero vincular uma chave no mutt, como *, e que possa "Limitar" as mensagens exibidas àquelas enviadas pelo mesmo remetente (ou remetentes, se prefixados com;)

macro index * "<enter-command>set sender=display-address<enter><limit>$sender<enter>" "Filter Messages Like"

Estou tentando a abordagem macro acima, mas tenho dificuldade para ler o endereço do remetente em uma variável no mutt. A macro é o caminho certo a seguir aqui? e qual é a maneira correta de ler cabeçalhos de mensagens em variáveis?

Responder1

Infelizmente não é possível preencher a variável da função. Mesmo que você consiga chamar function <display-address> :push @ou :exec display-addressusar lua no neomutt – ela é exibida na barra inferior, mas a variável permanece vazia.

Depois de consultar esta edição hoje no #neomutt IRC a melhor opção no momento é usar arquivo temporário.

  • Esta macro irá canalizar a mensagem para o formail que retorna o from header, passa-o para o awk para obter apenas o endereço de e-mail e redireciona a saída para /tmp/sender
  • defina a variável $my_sender com o conteúdo do /tmp/sender
  • limite o índice com $my_sender
macro index,pager * \
"<pipe-message>formail -X from:|awk -F'[<>]' '{print $2}'>/tmp/sender<enter>\
:set my_sender=\"`cat /tmp/sender`\"\n\
l~f \"$my_sender\"\n" \
"Filter Messages Like"

Requisitos: formail

ou você pode usar qualquer outro comando para analisar o endereço de e-mail da mensagem.


EDIT: funciona apenas uma vez por sessão do neomutt. Provavelmente há um problema com a expansão de variáveis ​​​​dentro da macro, pois está entre aspas duplas e tem que ser assim. Então provavelmente ainda não é possível, pelo menos facilmente.

Responder2

Esta resposta é baseada emJakub Jindraa resposta. Infelizmente, não tive reputação suficiente para publicá-lo como um comentário à resposta correta, mas pensei que isso poderia ajudar outras pessoas que encontrassem o mesmo problema.

Esta é uma solução alternativa para sua macro que pode resolver o problema de expansão única:

macro index,pager k "<pipe-message>formail -X from:|awk -F'[<>]' '{print \"set my_tmp_pipe_decode=\\\"\"$2\"\\\"\" }'>/tmp/sender<enter>:source /tmp/sender<enter>l~f $my_tmp_pipe_decode<enter>" "Filter Messages Like"

A principal diferença é que em vez de catbaixar o arquivo, tentei source. Desta forma, você não terá o problema de expansão de variáveis ​​e funciona quantas vezes quiser em uma sessão. Aparentemente, sourcenão é uma expansão única em comparação com catum comando mutt interno, no entanto, caté um comando bash externo que deve ser expandido.

Mais uma vez, o crédito deve ir para Jakub Jindra.

informação relacionada