mutt - filtra mensajes como estos

mutt - filtra mensajes como estos

Me gustaría replicar la función "Filtrar mensajes como estos" de GMail. Básicamente, espero vincular una clave en mutt, como *, y eso puede "Limitar" los mensajes mostrados a aquellos enviados por el mismo remitente (o remitentes si tienen el prefijo;)

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

Estoy probando el enfoque macro anterior, pero me cuesta leer la dirección del remitente en una variable en mutt. ¿Es la macro el camino correcto a seguir aquí? ¿Y cuál es la forma correcta de leer los encabezados de los mensajes en variables?

Respuesta1

Lamentablemente, no es posible completar la variable desde la función. Incluso si puedes llamar a la función <display-address> :push @o :exec display-addressusar lua en neomutt, se muestra en la barra inferior, pero la variable permanece vacía.

Después de consultar este problema hoy en #neomutt IRC, la mejor opción en este momento es usar un archivo temporal.

  • Esta macro canalizará el mensaje a formail, que devuelve el archivo from header, lo pasa a awk para obtener solo la dirección de correo electrónico y redirige la salida a /tmp/sender.
  • establecer la variable $my_sender con el contenido de /tmp/sender
  • limitar el índice con $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: formulario de correo

o puede utilizar cualquier otro comando para analizar la dirección de correo electrónico del mensaje.


EDITAR: funciona solo una vez por sesión de neomutt. Probablemente haya un problema con la expansión variable dentro de la macro, ya que está entre comillas dobles y tiene que ser así. Así que probablemente todavía no sea posible, al menos fácilmente.

Respuesta2

Esta respuesta se basa enJakub JindraLa respuesta. Desafortunadamente, no tenía suficiente reputación para publicarlo como comentario sobre su respuesta correcta, pero pensé que esto podría ayudar a otras personas que encuentren el mismo problema.

Esta es una solución alternativa a su macro que puede solucionar el problema de la expansión ú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"

La principal diferencia es que en lugar de cateditar el archivo, lo intenté source. De esta forma no tendrás el problema de la expansión variable y funciona tantas veces como quieras en una sola sesión. Aparentemente, sourceno es una expansión única en comparación con catun comando mutt interno, sin embargo, cates un comando bash externo que debe expandirse.

Una vez más, el mérito debería ser para Jakub Jindra.

información relacionada