Czy mogę otworzyć kolejną nieprzeczytaną wiadomość mutt za pomocą jednego klucza?

17

Czy istnieje sposób, aby otworzyć następną nieprzeczytaną wiadomość muttza pomocą jednego klucza? Mogę przejść do następnego nieprzeczytanego next-new-then-unread, który jest Tabdomyślnie związany. Jeśli jednak w bieżącej skrzynce pocztowej nie ma nieprzeczytanych wiadomości, musiałbym użyć next-unread-mailboxzamiast tego (domyślnie niezwiązany). To i tak nie jest optymalne, ponieważ jeśli mam nową wiadomość, wyjdź mutt, a następnie otwórz muttponownie, nie przeniesie mnie to do skrzynki pocztowej zawierającej „nowe” wiadomości. (Prawdopodobnie skrzynka pocztowa nie jest już nieprzeczytana).

Ponadto oba z nich przechodzą do następnej wiadomości w widoku indeksu i muszę ręcznie otworzyć wiadomość w widoku pagera (za pomocą Enter). Czy istnieje sposób otwarcia następnej nieprzeczytanej wiadomości, bez względu na skrzynkę pocztową?

Używam neomutt, więc jednym z częściowych obejść, które znalazłem, jest użycie poleceń paska bocznego.

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

Problem polega na tym, że automatycznie otwiera się następna nieprzeczytana skrzynka pocztowa (z paska bocznego). Dlatego jeśli w bieżącej skrzynce pocztowej i innej są nieprzeczytane wiadomości, to polecenie otworzy wiadomość w innej skrzynce zamiast bieżącej.

Krogulec
źródło

Odpowiedzi:

4

Na początek możesz użyć takiego makra, aby automatycznie przejść do nowej wiadomości:

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

Należy jednak pamiętać, że jeśli nie będzie żadnych nowych wiadomości Enter , zostanie naciśnięty tylko klawisz i bieżąca wiadomość zostanie otwarta.

Alternatywnie, jeśli Maildirjest używany, możemy użyć ~/bin/mutt-new.shskryptu, który sprawdziłby, czy jest nowa poczta:

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

Dodaj to do ~/.muttrc:

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

EDYTOWAĆ:

Co powiesz na to: następujący skrypt najpierw sprawdzi, czy w bieżącej skrzynce pocztowej jest nowa poczta:

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

Dodaj to do ~/.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"'

EDYTOWAĆ:

Powiedziałeś:

To i tak nie jest optymalne, ponieważ jeśli mam nową wiadomość, zamknij mutt, a następnie ponownie otwórz mutt, nie przeniesie mnie to do skrzynki pocztowej zawierającej „nowe” wiadomości. (Prawdopodobnie skrzynka pocztowa nie jest już nieprzeczytana).

Można to naprawić poprzez:

set mark_old=no
Arkadiusz Drabczyk
źródło
Dziękuję za odpowiedź. Głównym problemem związanym z tym podejściem jest to, że działa ono <next-unread-mailbox>niezależnie od tego, czy w bieżącej skrzynce pocztowej są nieprzeczytane wiadomości. W takim przypadku przełączy się na inną skrzynkę pocztową i nie otworzy następnej nieprzeczytanej wiadomości w bieżącej skrzynce pocztowej. Innym problemem (jak na moje pytanie) jest to, że <next-unread-mailbox>nie szuka nieprzeczytanych / nowych wiadomości, ale nieprzeczytane skrzynki pocztowe .
Sparhawk,
@Sparhawk: patrz edycja. To interesujące pytanie. Niestety muttnie jest w pełni skryptowalne i szkoda.
Arkadiusz Drabczyk,
@Sparhawk: zobacz kolejną edycję. Makro, które zasugerowałem, automatycznie otwiera nowy e-mail w bieżącej skrzynce pocztowej, jeśli taki istnieje, przed przejściem do innych złośliwych skrzynek pocztowych. Zasugerowałem również, jak wyłączyć oznaczanie wiadomości Opo wyjściu mutt.
Arkadiusz Drabczyk
Dzięki. W tej chwili jestem na wakacjach, ale przetestuję to, kiedy wrócę. Wygląda obiecująco.
Sparhawk