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

15

Existe uma maneira de abrir a próxima mensagem não lida em mutt com uma única chave? Eu posso passar para a próxima não lida com next-new-then-unread , que está vinculada a Tab por padrão. No entanto, se não houver mensagens não lidas na caixa de correio atual, eu teria que usar next-unread-mailbox (não vinculado por padrão). Isso é sub-ótimo mesmo assim, porque se eu tiver uma nova mensagem, saia do mutt , abra mutt novamente, isso não me moverá para a caixa de correio que contém as "novas" mensagens. (Presumivelmente a caixa de correio não está mais lida.)

Além disso, ambos movem para a próxima mensagem na visualização de índice, e eu tenho que abrir manualmente a mensagem na visã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 ela esteja?

Estou usando o neomutt, portanto, uma solução parcial encontrada é 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 outra, esse comando abrirá a mensagem na outra caixa de correio em vez da atual.

    
por Sparhawk 07.10.2015 / 01:15

1 resposta

2

Para começar, você pode usar uma macro como essa para pular automaticamente para a nova mensagem:

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

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

Como alternativa, se Maildir for usado, poderíamos usar um script ~/bin/mutt-new.sh que verificaria se há novos e-mails:

#!/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 isso a ~/.muttrc :

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

EDITAR:

Que tal isto: o seguinte script irá primeiro verificar se há novas mail 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 isso 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:

This is sub-optimal anyway, because if I have a new message, quit mutt, then open mutt again, this won't move me to the mailbox containing the "new" messages. (Presumably the mailbox is not unread any more.)

Isso pode ser corrigido por:

set mark_old=no
    
por 19.12.2017 / 03:21

Tags