Чтение почты с помощью Rmail – ЧАСТЬ 1

Rmail — это подсистема Emacs для чтения и размещения  получаемой вами почты. Rmail хранит почтовые сообщения в файлах, называемых Rmail-файлами.  Чтение сообщений в Rmail-файле осуществляется в специальном основном режиме, режиме Rmail, который переопределяет большинство  букв для запуска команд управления почтой.  Команда rmail-mode  используется для входа в режим Rmail, она запускает ловушку rmail-modehook, как обычно; но не выполняйте  эту команду вручную, она не может делать ничего существенного,  если этот буфер не обращается  к правильному Rmail-файлу.

27.1  Основные понятия Rmail

При простейшем использовании Rmail, у вас есть один Rmail-файл ‘~/RMAIL’, в котором сохраняется вся ваша почта.  Этот файл называется первичным Rmail-файлом. Команда M-x rmail считывает ваш первичный Rmail-файл, вставляет в него новую почту из ваших входных файлов,  отображает первое  непрочитанное сообщение  и позволяет вам начать чтение. Переменная rmail-file-name задает имя первичного Rmail-файла.

Rmail использует сужение, чтобы скрыть из Rmail-файла  все сообщения, кроме одного. Показанное сообщение называется текущим.  Специальные команды режима Rmail могут осуществлять такие вещи, как удаление текущего сообщения,  копирование  его в другой файл, посылка ответа или перемещение к другому сообщению.  Вы также можете создать несколько Rmail-файлов и использовать Rmail для обмена сообщениями между ними.

В пределах Rmail-файла  сообщения расположены  последовательно в порядке поступления; вы можете  использовать другие способы  сортировки.  Сообщениям присваиваются последовательные  целые числа в качестве их номеров сообщений. Номер текущего сообщения показывается в строке режима Rmail, за ним идет общее число сообщений в файле. Вы можете перейти на сообщение, задавая его номер с помощью ключа j (см. Раздел 27.3 [Перемещение в Rmail], с. 276).

Следуя обычным правилам Emacs, изменения в Rmail-файле становятся постоянными только после сохранения  этого файла. Вы можете осуществить это с помощью команды s (rmail-save), которая также  сперва вычеркивает удаляемые сообщения из файла (см. Раздел 27.4 [Удаление сообщений], с. 277). Для записи файла без вычеркивания следует использовать C-x C-s.  Rmail также сохраняет Rmail-файл при поступлении новой почты из входного почтового файла (см. Раздел 27.5 [Входной почтовый файл], с. 278).

Выйти из Rmail можно с помощью q (rmail-quit), при этом Rmail-файл очищается и сохраняется, и происходит переход в другой буфер. Но формально нет необходимости ‘выходить’. Если вы переключились из Rmail к редактированию в других буферах и больше не возвращались  обратно, на самом деле вы вышли.  (Команда Rmail b делает это для вас.)  Достаточно просто убедиться, что вы сохранили Rmail-файл (как  и любой другой измененный вами файл). Достаточно удобный способ сделать это предоставляет команда C-x s (см. Раздел 14.3 [Сохранение],  с. 108).

27.2  Прокрутка в сообщении

Когда Rmail показывает  сообщение, не помещающееся на экране, вам придется прокручивать это сообщение, чтобы прочитать оставшуюся часть.  Вы могли бы сделать это с помощью C-v, M-v и M-<, но в Rmail прокруткой приходится пользоваться настолько часто, что ее команды заслуживают более простого набора.

hSPCi              Прокручивает вперед (scroll-up).

hDELi              Прокручивает назад (scroll-down).

.         Прокручивает к началу сообщения (rmail-beginning-of-message).

Так как во время чтения сообщения  наиболее частой процедурой является прокрутка по целому экрану, Rmail делает hSPCi  и hDELi  синонимами C-v (scroll-up) и M-v (scrolldown).

Команда . (rmail-begining-of-message) прокручивает к началу выбранного сообщения. Это не совсем то же, что и M-<: во-первых, она не оставляет  метку, а во-вторых, она переустанавливает границы буфера до пределов текущего сообщения, если вы их изменили.

27.3  Перемещение по сообщениям

Самое основное, что вы можете сделать с сообщением — прочитать его.  В Rmail вы можете прочитать сообщение, сделав его текущим. Обычно при этом последовательно перемещаются по файлу, так как сообщения в нем расположены в порядке получения. При входе в Rmail вы попадаете на первое сообщение, которое никогда еще не было текущим (это первое сообщения,  имеющее  атрибут ‘unseen’; см.  Раздел 27.9 [Атрибуты  сообщений], с. 281). Чтобы увидеть другие новые сообщения, двигайтесь вперед, для повторного просмотра старых двигайтесь назад.

n                Перейти к следующему неудаленному сообщению, пропуская все промежуточ-

ные удаленные сообщения (rmail-next-undeleted-message).

p                Перейти   к    предыдущему   неудаленному    сообщению    (rmail-previousundeleted-message).

M-n            Перейти к следующему сообщению, включая удаленные (rmail-next-message).

M-p            Перейти к  предыдущему сообщению, включая удаленные  (rmail-previousmessage).

j       Перейти к первому сообщению. С аргументом n — перейти к  сообщению с номером n (rmail-show-message).

>                Перейти к последнему сообщению (rmail-last-message).

<                Перейти к первому сообщению (rmail-first-message).

M-s regexp hRETi

Перейти к следующему сообщению, содержащему совпадение с регулярным вы-

ражением regexp (rmail-search).

M-s regexp hRETi

Перейти к предыдущему  сообщению, содержащему совпадение с regexp.

n and p — это обычный способ перемещения по сообщениям в Rmail.   Они перемещают по сообщениям последовательно,  но пропускают удаленные  сообщения,  что обычно вы и хотели бы делать. Эти команды называются rmail-next-undeleted-message и rmail-previous-undeleted-message.  Если вы не хотите  пропускать удаленные сообщения, например, если вы хотите переместиться к сообщению, чтобы отменить его удаление, используйте  варианты M-n и M-p (rmail-next-message и rmail-previous-message).  Числовой аргумент в любой из этих команд используется как счетчик повторов.

В Rmail вы можете  задать числовой аргумент, набрав только цифру.  При этом не требуется сначала набирать C-u.

Команда M-s (rmail-search) — это версия поиска для Rmail.  Обычная команда наращиваемого поиска C-s работает в Rmail, но она осуществляет поиск только в пределах текущего сообщения.  Цель команды M-s — поиск другого сообщения.  Она считывает регулярное выражение (см.  Раздел 12.5 [Регулярные выражения], с. 91) без наращивания и затем осуществляет поиск совпадения, начиная с начала следующего сообщения. Потом она выбирает  сообщение, содержащее совпадение.  Если regexp пусто, M-s использует регулярное выражение, заданное при предыдущем поиске.

Чтобы найти в файле другое сообщения в обратном направлении, задайте команде M-s

отрицательный аргумент. В Rmail это можно сделать как M-s.

Также возможен поиск сообщения по метке. См. Раздел 27.8 [Метки сообщений], с. 281.

Для передвижения к сообщению,  задаваемому абсолютным номером, используйте  команду j (rmail-show-message) с номером сообщения в качестве аргумента. Без аргумента, команда j выбирает  первое сообщение.  < (rmail-first-message) также выбирает первое сообщение. Команда > (rmail-last-message) выбирает последнее.

27.4  Удаление сообщений

Когда вам больше не нужно хранить какое-то сообщение, его можно удалить. При этом удаляемое сообщение метится как возможно игнорируемое и некоторые команды Rmail не будут замечать его присутствия, но тем не менее оно продолжает существовать в Rmailфайле и сохраняет свой номер.

Вычеркивание в Rmail-файле (или его очистка) действительно уничтожает удаленные сообщения. Остальные  сообщения последовательно перенумеровываются.   Вычеркивание

— это единственное  действие, кроме  разбора дайджеста (см.   Раздел 27.15 [Дайджест сообщений], с. 287), которое изменяет номера сообщений.

d                Удалить текущее  сообщение и перейти к следующему  неудаленному (rmaildelete-forward).

C-d            Удалить текущее сообщение и перейти к предыдущему неудаленному (rmaildelete-backward).

u                Отменить удаление текущего сообщения или перейти назад к удаленному со-

общению и отменить его удаление (rmail-undelete-previous-message).

x                 Очистить Rmail-файл (rmail-expunge).

Существуют две команды Rmail для удаления сообщений. Обе они удаляют текущее сообщение и выбирают другое. Команда d (rmail-delete-forward) переходит к следующему сообщению, пропуская уже удаленные, в то время как C-d (rmail-delete-backward) передвигает к предыдущему неудаленному сообщению. Если же нет неудаленного сообщения, к которому можно перейти в указанном направлении, то текущим остается сообщение, которое было только что удалено. Числовой аргумент меняет направление движения после удаления.

Всякий раз, когда Rmail удаляет сообщение,  он вызывает функции, перечисленные в rmail-delete-message-hook.  Когда вызываются функции этой ловушки, сообщение уже помечено как удаленное, но все еще является  текущим в этом буфере Rmail.

Для того чтобы все удаленные  сообщения  окончательно исчезли из Rmail-файла, надо набрать x (rmail-expunge). Пока это не сделано, есть возможность отмены удаления сообщений. Команда отмены удаления, u (rmail-undelete-previous-message), предназначена для отмены действия команды d в большинстве случаев. Она отменяет удаление текущего сообщения,  если оно было удалено. В противном случае она двигается к предыдущему сообщению до тех пор, пока не будет найдено удаленное сообщение, и производит отмену удаления этого сообщения.

Обычно вы можете отменить действие d с помощью команды u, так как u передвигает назад и отменяет удаление сообщения,  произведенное командой d.  Но это не работает, когда d пропускает несколько уже удаленных сообщений, которые следуют за удаляемым сообщением; в этом случае команда u будет отменять удаление последнего сообщения из тех,  что были пропущены.  Не существует совершенного  способа обойти эту проблему. Однако, повторяя команду u, можно в конце концов вернуться к сообщению, для которого вы собирались отменить удаление. Можно также добраться до этого сообщения с помощью команды M-p и затем набрать u.

Удаленное сообщение имеет атрибут ‘deleted’, и как результат при удалении текущего сообщения в строке режима появляется слово ‘deleted’. На самом деле, удаление или отмена удаления сообщения — это не более чем добавление или уничтожение этого атрибута. См. Раздел 27.9 [Атрибуты сообщений], с. 281.

Источник: Ричард Столмен, Руководство по GNU Emacs

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий