Чи можу я відкрити наступне непрочитане повідомлення в mutt одним ключем?


17

Чи є спосіб відкрити наступне непрочитане повідомлення muttодним ключем? Я можу перейти до наступного непрочитаного, з next-new-then-unreadяким пов'язано Tabза замовчуванням. Однак, якщо в поточній поштовій скриньці немає непрочитаних повідомлень, тоді я б повинен був використовувати її next-unread-mailbox(незв'язаний за замовчуванням). Це все одно недостатньо оптимально, тому що якщо у мене з’явиться нове повідомлення, вийдіть muttі відкрийте його muttзнову, це не перемістить мене до поштової скриньки, що містить "нові" повідомлення. (Імовірно, поштову скриньку вже не читають.)

Крім того, обидва вони переходять до наступного повідомлення в індексному перегляді, і мені доведеться вручну відкривати повідомлення в режимі перегляду пейджера (з Enter). Чи є спосіб відкрити наступне непрочитане повідомлення, незалежно від того, в якій поштовій скриньці воно знаходиться?

Я використовую neomutt, тому одним частковим вирішенням, яке я знайшов, є використання команд бічної панелі.

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

Проблема полягає в тому, що це автоматично відкриває наступну непрочитану поштову скриньку (з бічної панелі). Отже, якщо в поточній поштовій скриньці та іншому є непрочитані повідомлення, ця команда відкриє повідомлення в іншій поштовій скриньці замість поточної.

Відповіді:


4

Для початку ви можете використовувати такий макрос, щоб автоматично перейти до нового повідомлення:

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

Однак зауважте, що якщо нових повідомлень немає, Enter буде натиснута лише клавіша та відкриється поточне повідомлення.

Як альтернатива, якщо Maildirвона використовується, ми можемо використовувати ~/bin/mutt-new.shсценарій, який би перевіряв, чи є нова пошта:

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

Додайте це до ~/.muttrc:

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

Редагувати:

Як щодо цього: наступний сценарій спочатку перевірить, чи є нова пошта в поточній поштовій скриньці:

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

Додайте це до ~/.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"'

Редагувати:

Ти сказав:

Це все одно недостатньо оптимально, тому що якщо у мене з’явиться нове повідомлення, вийдіть з mutt, потім знову відкрийте mutt, це не перемістить мене до поштової скриньки, що містить "нові" повідомлення. (Імовірно, поштову скриньку вже не читають.)

Це можна виправити за допомогою:

set mark_old=no

Дякую за відповідь. Основна проблема такого підходу полягає в тому, що він працює <next-unread-mailbox>незалежно від того, чи є непрочитані повідомлення в поточній поштовій скриньці. У цьому випадку воно переключиться на іншу поштову скриньку, а не відкриє наступне непрочитане повідомлення у поточній поштовій скриньці. Ще одна проблема (на моє запитання) полягає в тому, <next-unread-mailbox>що шукає непрочитані / нові повідомлення, а непрочитані поштові скриньки .
Sparhawk

@Sparhawk: див. Редагування. Це цікаве питання. На жаль, muttце не повністю сценарно, і це соромно.
Аркадіуш Драбчик

@Sparhawk: див. Ще одну редакцію. Макрос, який я запропонував, автоматично відкриває нову електронну пошту в поточній поштовій скриньці, якщо вона є, перш ніж перейти до інших малібокс. Я також запропонував відключити маркування повідомлень як Oпісля від'їзду mutt.
Аркадіуш Драбчик

Спасибі. Наразі я у відпустці, але протестую, коли повернусь. Це виглядає перспективно.
Sparhawk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.