Posso abrir a próxima mensagem não lida em mutt com uma única chave?

16

Existe uma maneira de abrir a próxima mensagem não lida muttcom uma única chave? Posso passar para a próxima não lida com next-new-then-unread, que está vinculada Tabpor padrão. No entanto, se não houver mensagens não lidas na caixa de correio atual, seria necessário usá-lo next-unread-mailbox(não vinculado por padrão). Isso está abaixo do ideal de qualquer maneira, porque se eu tiver uma nova mensagem, saia mutte abra muttnovamente, isso não me levará à caixa de correio que contém as "novas" mensagens. (Presumivelmente, a caixa de correio não é mais lida.)

Além disso, esses dois passam para a próxima mensagem na exibição de índice e eu tenho que abrir manualmente a mensagem na exibição de pager (com Enter). Existe uma maneira de abrir a próxima mensagem não lida, não importa em qual caixa de correio está?

Estou usando o neomutt, portanto, uma solução parcial que encontrei é usar os comandos da barra lateral.

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

O problema é que isso abre automaticamente a próxima caixa de correio não lida (na barra lateral). Portanto, se houver mensagens não lidas na caixa de correio atual e em outra, esse comando abrirá a mensagem na outra caixa de correio em vez da atual.

Sparhawk
fonte

Respostas:

3

Para iniciantes, você pode usar uma macro como esta para ir automaticamente para a nova mensagem:

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

Observe, no entanto, que se não houver novas mensagens, apenas a Enter tecla será pressionada e a mensagem atual será aberta.

Como alternativa, se Maildirfor usado, poderíamos usar um ~/bin/mutt-new.shscript que verificaria se há novos emails:

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

Adicione isto a ~/.muttrc:

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

EDITAR:

Que tal isso: o script a seguir primeiro verifica se há novos emails na caixa de correio atual:

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

Adicione isto 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:

Você disse:

Isso é sub-ideal de qualquer maneira, porque se eu tiver uma nova mensagem, saia do mutt e abra-o novamente, isso não me levará à caixa de correio que contém as "novas" mensagens. (Presumivelmente, a caixa de correio não é mais lida.)

Isso pode ser corrigido por:

set mark_old=no
Arkadiusz Drabczyk
fonte
Obrigado pela resposta. Um grande problema dessa abordagem é que ela é executada <next-unread-mailbox>independentemente de haver mensagens não lidas na caixa de correio atual. Nesse caso, ele alternaria para a outra caixa de correio e não abriria a próxima mensagem não lida na caixa de correio atual. Outro problema (conforme minha pergunta) é que <next-unread-mailbox>não procura mensagens novas / não lidas, mas caixas de correio não lidas .
Sparhawk
@ Sparhawk: veja editar. Essa é uma pergunta interessante. Infelizmente, muttnão é totalmente programável e é uma pena.
Arkadiusz Drabczyk
@ Sparhawk: veja mais uma edição. A macro que eu sugeri abre automaticamente um novo email na caixa de correio atual, se houver algum antes de passar para outras maliboxes. Também sugeri como desativar a marcação de mensagens Odepois de sair mutt.
precisa saber é o seguinte
Obrigado. Estou de férias no momento, mas testarei quando voltar. Parece promissor.
Sparhawk