Posso aprire il prossimo messaggio non letto in mutt con una sola chiave?


16

C'è un modo per aprire il prossimo messaggio non letto muttcon una sola chiave? Posso passare al prossimo non letto con next-new-then-unread, che è associato per Tabimpostazione predefinita. Tuttavia, se non ci sono messaggi non letti nella cassetta postale corrente, dovrei next-unread-mailboxinvece utilizzare (non associato per impostazione predefinita). Questo è comunque non ottimale, perché se ho un nuovo messaggio, esci mutt, quindi apro di muttnuovo, questo non mi sposterà nella casella di posta contenente i "nuovi" messaggi. (Presumibilmente la casella di posta non viene più letta.)

Inoltre, entrambi passano al messaggio successivo in visualizzazione indice e devo aprire manualmente il messaggio in visualizzazione cercapersone (con Enter). C'è un modo per aprire il prossimo messaggio non letto, indipendentemente dalla cassetta postale in cui si trova?

Sto usando Neomutt, quindi una soluzione parziale che ho trovato è usare i comandi della barra laterale.

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

Il problema è che questo apre automaticamente la casella di posta successiva non letta (dalla barra laterale). Pertanto, se nella casella di posta corrente sono presenti messaggi non letti e un altro, questo comando aprirà il messaggio nell'altra casella di posta anziché in quella corrente.

Risposte:


3

Per cominciare, puoi usare una macro come questa per passare automaticamente al nuovo messaggio:

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

Si noti tuttavia che se non ci sono nuovi messaggi Enter verrà premuto solo il tasto e il messaggio corrente verrà aperto.

In alternativa, se Maildirusato, potremmo usare uno ~/bin/mutt-new.shscript che verificherebbe se ci sono nuovi messaggi:

#!/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>'

Aggiungi questo a ~/.muttrc:

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

MODIFICARE:

Che ne dici di questo: il seguente script controllerà prima se c'è nuova posta nella cassetta postale corrente:

#!/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

Aggiungi questo 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"'

MODIFICARE:

Tu hai detto:

Questo è comunque non ottimale, perché se ho un nuovo messaggio, esco da mutt, quindi apro di nuovo mutt, questo non mi sposterà nella cassetta postale contenente i "nuovi" messaggi. (Presumibilmente la casella di posta non viene più letta.)

Questo può essere risolto da:

set mark_old=no

Grazie per la risposta. Un grave problema con questo approccio è che funziona <next-unread-mailbox>indipendentemente dal fatto che ci siano messaggi non letti nella cassetta postale corrente. In questo caso, passerebbe all'altra cassetta postale e non aprirà il prossimo messaggio non letto nella cassetta postale corrente. Un altro problema (secondo la mia domanda) è che <next-unread-mailbox>non cerca nuovi messaggi non letti / nuovi ma cassette postali non letti .
Sparhawk,

@Sparhawk: vedi modifica. Questa è una domanda interessante. Sfortunatamente muttnon è completamente gestibile da script ed è un peccato.
Arkadiusz Drabczyk,

@Sparhawk: vedi l'ennesima modifica. La macro che ho suggerito apre automaticamente una nuova e-mail nella casella di posta corrente, se presente, prima di passare ad altri malibox. Ho anche suggerito come disabilitare la marcatura dei messaggi come Odopo aver lasciato mutt.
Arkadiusz Drabczyk il

Grazie. Sono in vacanza al momento, ma lo proverò quando torno. Sembra promettente.
Sparhawk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.