¿Puedo abrir el siguiente mensaje no leído en mutt con una sola tecla?

16

¿Hay alguna manera de abrir el siguiente mensaje no leído muttcon una sola clave? Puedo pasar al siguiente no leído con next-new-then-unread, que está obligado Tabpor defecto. Sin embargo, si no hay mensajes no leídos en el buzón actual, entonces tendría que usarlos next-unread-mailbox(sin enlazar de forma predeterminada). De todos modos, esto es subóptimo, porque si tengo un nuevo mensaje, salgo mutty luego lo muttvuelvo a abrir , esto no me moverá al buzón que contiene los mensajes "nuevos". (Presumiblemente, el buzón ya no está sin leer).

Además, ambos se mueven al siguiente mensaje en la vista de índice, y tengo que abrir manualmente el mensaje en la vista de buscapersonas (con Enter). ¿Hay alguna manera de abrir el siguiente mensaje no leído, sin importar en qué buzón se encuentre?

Estoy usando neomutt, por lo que una solución parcial que he encontrado es usar los comandos de la barra lateral.

macro index,pager , '<sidebar-next-new><sidebar-open><enter>'

El problema es que esto abre automáticamente el siguiente buzón no leído (desde la barra lateral). Por lo tanto, si hay mensajes no leídos en el buzón actual y otro, este comando abrirá el mensaje en el otro buzón en lugar del actual.

Gavilán
fuente

Respuestas:

3

Para empezar, puede usar una macro como esta para saltar automáticamente al nuevo mensaje:

macro index     .n      "<next-unread-mailbox><enter><next-new-then-unread><enter>" "Go to new mail"

Sin embargo Enter , tenga en cuenta que si no hay mensajes nuevos, solo se presionará la tecla y se abrirá el mensaje actual.

Como alternativa, si Maildirse usa, podríamos usar un ~/bin/mutt-new.shscript que verifique si hay correo nuevo:

#!/usr/bin/env sh

if [ "$(find "$HOME"/.muttmail/box1/new -type f -printf '\n' | wc -l)" -eq 0 ]
then
    printf "I think there's no new mail\n" >&2
    printf "Press [ENTER] to continue\n" >&2
    read -r _
    exit 1
fi

echo 'push <next-unread-mailbox><enter><next-new-then-unread><enter>'

Agregue esto a ~/.muttrc:

macro index     .n        "!~/bin/mutt-new.sh" "Go to new"

EDITAR:

Qué tal esto: el siguiente script primero verificará si hay correo nuevo en el buzón actual:

#!/usr/bin/env sh

cur_mbox=${1/=/}

echo "$1" >> /tmp/PAR
echo "$cur_mbox" >> /tmp/PAR

if [ ! "$(find "$HOME"/.muttmail/"$cur_mbox"/new -type f -printf '\n' | wc -l)" -eq 0 ]
then
    printf "There is new mail in this mailbox\n" >&2
    printf "Press [ENTER] to continue\n" >&2
    read -r _
    echo 'push <next-new-then-unread><enter>'
elif [ ! "$(find "$HOME"/.muttmail/ -type d -name new -exec ls {} \; | wc -l)" -eq 0 ]
then
    printf "There is new mail in other mailboxes\n" >&2
    printf "Press [ENTER] to continue\n" >&2
    read -r _
    echo 'push <next-unread-mailbox><enter><next-new-then-unread><enter>'
else
    printf "I think there's no new mail\n" >&2
    printf "Press [ENTER] to continue\n" >&2
    read -r _
    exit 1
fi

Agregue esto a ~/.muttrc:

folder-hook . 'set my_oldrecord=$record; set record=^; set my_folder=$record; set record=$my_oldrecord'
folder-hook . 'macro index .n "<enter-command>source \"~/bin/mutt-new.sh $my_folder |\"<return>" "Go to new"'

EDITAR:

Tu dijiste:

De todos modos, esto es subóptimo, porque si tengo un nuevo mensaje, salga de mutt, luego abra mutt nuevamente, esto no me moverá al buzón que contiene los mensajes "nuevos". (Presumiblemente, el buzón ya no está sin leer).

Esto se puede solucionar mediante:

set mark_old=no
Arkadiusz Drabczyk
fuente
Gracias por la respuesta. Un problema importante con este enfoque es que se ejecuta <next-unread-mailbox>independientemente de si hay mensajes no leídos en el buzón actual. En este caso, cambiaría al otro buzón y no abriría el siguiente mensaje no leído en el buzón actual. Otro problema (según mi pregunta) es que <next-unread-mailbox>no busca mensajes nuevos / no leídos, sino buzones no leídos .
Sparhawk
@Sparhawk: ver edición. Esa es una pregunta interesante. Desafortunadamente muttno es completamente programable y es una pena.
Arkadiusz Drabczyk
@Sparhawk: vea otra edición más. La macro que sugerí abre automáticamente un nuevo correo electrónico en el buzón actual si hay alguno antes de pasar a otros maliboxes. También sugerí cómo deshabilitar el marcado de mensajes como Odespués de salir mutt.
Arkadiusz Drabczyk
Gracias. Estoy de vacaciones en este momento, pero lo probaré cuando regrese. Se ve prometedor.
Sparhawk