Разнообразные команды – ЧАСТЬ 4

Вы можете сделать так, чтобы в качестве редактора для программ вроде mail  использовался ваш существующий процесс Emacs, путем применения клиента и сервера Emacs. Вот как это делается.

Во-первых, подготовка.  Внутри Emacs, вызовите функцию server-start.  (Ваш файл

‘.emacs’ может делать это автоматически, если вы добавите в него выражение (serverstart).) Затем, извне Emacs, установите переменную среды EDITOR равной  ‘emacsclient’. (Заметьте,  что некоторые программы используют другую переменную среды; например,

чтобы TEX использовал ‘emacsclient’, вам нужно установить переменную  среды TEXEDIT

равной ‘emacsclient +%d %s’.)

Впоследствии,  когда любая программа вызывает указанную программу EDITOR, в результате  вашему главному Emacs будет отправлено сообщение,  чтобы он обратился к файлу. (Программа emacsclient делает именно это.) Emacs немедленно показывает  этот буфер, и вы сразу можете начать его редактирование.

Когда вы завершите редактирование этого буфера, наберите C-x # (server-edit).  Это сохранит файл и пошлет программе emacsclient сообщение, приказывающее выйти. Программы, использующие EDITOR, ожидают, пока “редактор” (на самом деле, emacsclient) не выйдет. C-x # также проверяет другие отложенные внешние запросы на редактирование различных файлов и выбирает следующий.

Вы можете  переключиться в серверный  буфер вручную, если хотите;  необязательно попадать в него с помощью C-x #. Но C-x # дает единственный способ сказать, что “закончили” с текущим.

Если вы установите переменную server-window  равной окну или фрейму, C-x # будет показывать серверный буфер в этом окне или фрейме.

Пока mail  или другое приложение ожидает завершения emacsclient,  emacsclient  не читает терминальный ввод. Поэтому терминал, который использовала mail,  как бы блокируется на это время. Чтобы редактировать в вашем главном Emacs, вам нужна возможность использовать  Emacs без этого терминала. Есть два способа добиться этого:

Используя оконную систему, запускайте mail  и главный Emacs в двух разных окнах.

Пока mail  ожидает emacsclient,  окно, в котором она запущена, блокируется, но вы можете использовать Emacs, переключив окно.

Используйте  для запуска других  программ, таких  как  mail,  режим Shell в  Emacs; тогда emacsclient блокирует только подоболочку в Emacs, и вы можете продолжать использовать Emacs для редактирования этого файла.

Некоторые программы записывают для вашего редактирования  временные файлы. После  того,  как  вы отредактировали такой временный  файл, программа считывает его и удаляет. Если сервер Emacs позже попросят отредактировать файл с тем же именем, он не должен предполагать, что этот файл имеет какое-либо отношение к предыдущему появлению этого же имени. Сервер делает это, уничтожая буфер временного  файла, когда вы закончили с ним. Используйте переменную server-temp-file-regexp, чтобы указать, какие файлы являются временными в этом смысле;  ее значением  должно быть регулярное выражение, совпадающее с именами временных файлов.

Если вы запускаете emacsclient с ключом ‘-no-wait’, он возвращается сразу, не дожи-

даясь, пока вы “завершите” с буфером в Emacs.

30.4  Вывод твердой копии

Команды Emacs для создания твердой копии позволяют вам напечатать весь буфер или только его часть с заголовками или без них. Смотрите также команды печати Dired (см. Раздел 14.10 [Другие действия над файлами], с. 132) и дневника (см. Раздел 29.10.1 [Команды дневника], с. 313).

M-x print-buffer

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

M-x lpr-buffer

Выдать распечатку текущего буфера без заголовков  страниц.

M-x print-region

Как print-buffer, но печатать только текущую область.

M-x lpr-region

Как lpr-buffer, но печатать только текущую область.

Все команды печати (кроме использующих Postscript) передают программе lpr дополнительные ключи,  базирующиеся  на значении переменной  lpr-switches.   Ее значение должно быть списком строк,  причем каждая строка — это ключ,  начинающийся с ‘-’. Например, чтобы сделать ширину строк равной восьмидесяти столбцам для всех распечаток, получаемых из Emacs, установите lpr-switches так:

(setq lpr-switches  ’("-w80"))

Вы  можете  указать,  какой  принтер должен использоваться, установив переменную

printer-name.

Переменная  lpr-command задает имя используемой  программы печати;  значение по умолчанию зависит от типа вашей операционной системы.  На большинстве систем это "lpr".  Переменная lpr-headers-switches похожим образом задает дополнительные  ключи для создания заголовков страниц. Переменная lpr-add-switches указывает, нужно ли передавать программе печати ключи ‘-T’  и ‘-J’  (подходящие для lpr): nil означает, что добавлять их не надо. lpr-add-switches должна быть равна nil,  если ваша программа печати не совместима с lpr.

30.5  Печать через Postscript

Эти команды преобразуют  содержимое буфера в Postscript и либо печатают его, либо оставляют в другом буфере Emacs.

M-x ps-print-buffer

Выводит распечатку текущего буфера в форме Postscript.

M-x ps-print-region

Выводит распечатку текущей области в форме Postscript.

M-x ps-print-buffer-with-faces

Выводит распечатку текущего буфера в форме Postscript, показывая использо-

ванные в тексте начертания средствами Postscript.

M-x ps-print-region-with-faces

Выводит распечатку текущей области в форме Postscript, показывая использо-

ванные в тексте начертания средствами Postscript.

M-x ps-spool-buffer

Генерирует Postscript для текста текущего буфера.

M-x ps-spool-region

Генерирует Postscript для текущей области.

M-x ps-spool-buffer-with-faces

Генерирует Postscript для текущего буфера, показывая использованные начер-

тания.

M-x ps-spool-region-with-faces

Генерирует Postscript для текущей области, показывая использованные начер-

тания.

Команды работы с Postscript, ps-print-buffer и ps-print-region,  печатают содержимое буфера в форме Postscript.  Одна команда печатает весь буфер, другая — только область. Соответствующие команды с окончанием ‘-with-faces’, ps-print-buffer-withfaces  и ps-print-region-with-faces,  используют средства Postscript для передачи начертаний (шрифтов и цветов) в свойствах печатаемого текста.

Если вы используете цветной дисплей, вы можете напечатать буфер, содержащий  код программы, с цветовой подсветкой, включив в этом буфере  режим Font-Lock и вызвав ps-print-buffer-with-faces.

Команды, чьи имена содержат ‘spool’  на месте ‘print’, генерируют вывод Postscript в буфере Emacs, а не посылают  его на принтер.

30.6  Переменные, управляющие печатью в Postscript

Все команды печати через Postscript используют переменные  ps-lpr-command  и pslpr-switches, указывающие, как  нужно  печатать.   ps-lpr-command  задает имя запускаемой команды, ps-lpr-switches задает ключи командной строки, а ps-printer-name

задает принтер. Если вы не установили первые две переменные сами, они получают свои начальные значения от lpr-command и lpr-switches.  Если ps-printer-name  равна nil, используется printer-name.

Переменная ps-print-header контролирует, будут ли эти команды добавлять строки заголовка для каждой страницы, — установите ее равной  nil, чтобы выключить заголовки. Вы можете отключить обработку цветов, установив ps-print-color-p в значение nil.

Переменная ps-paper-type указывает, для какого размера станицы нужно форматировать; допустимые значения включают a4, a3, a4small,  b4, b5, executive, ledger,  legal, letter,  letter-small,  statement,   tabloid.    По умолчанию это letter.    Вы  можете определить дополнительные  размеры бумаги, изменяя переменную ps-page-dimensionsdatabase.

Переменная ps-landscape-mode указывает ориентацию текста на странице. По умолчанию она равна nil, что обозначает “портретный” режим. Любое отличное от nil значение задает “ландшафтный” режим.

Переменная ps-number-of-columns задает число колонок; она играет роль и в “портрет-

ном”, и в “ландшафтном” режиме. По умолчанию это 1.

Переменная  ps-font-family указывает, какое семейство шрифтов нужно  использовать при печати обычного текста.  Допустимые значения включают Courier, Helvetica, NewCenturySchlbk, Palatino и Times.  Переменная ps-font-size  задает размер шрифта для обычного текста. По умолчанию это 8.5 пунктов.

Многие другие переменные для настройки этих команд определены и описаны в файле на Лиспе ‘ps-print.el’.

30.7  Сортировка текста

Emacs предоставляет несколько команд для сортировки текста в буфере. Все они оперируют с содержимым области (текстом между точкой и меткой). Эти команды разделяют текст области на большое число записей сортировки, определяют ключ сортировки для каждой записи и затем переставляют записи в порядке, определяемом ключами сортировки.   Записи располагаются таким образом, чтобы их ключи  находились в алфавитном или, для числовой сортировки, числовом порядке.   При алфавитной сортировке  все буквы верхнего регистра от ‘A’  до ‘Z’  идут перед ‘а’ нижнего регистра, в соответствии с последовательностью знаков ASCII.

Различие команд сортировки состоит в том, как они делят текст на записи сортировки, и какая часть каждой записи используется в качестве ключа сортировки.  Большинство команд считают каждую строку отдельной записью, но некоторые используют в качестве таких  записей абзацы или страницы.  Большинство команд сортировки используют всю запись сортировки в качестве своего собственного ключа, но некоторые используют в качестве ключа сортировки только часть записи.

M-x sort-lines

Разделить область на строки и отсортировать в соответствии с полным тек-

стом строки. Числовой аргумент означает сортировку по убыванию.

M-x sort-paragraphs

Разделить область на абзацы и отсортировать, сравнивая текст абзацев целиком (за исключением пустых строк в начале).   Числовой аргумент означает сортировку по убыванию.

M-x sort-pages

Разделить область на страницы и отсортировать, сравнивая полный текст страниц (за исключением пустых строк в начале).  Числовой аргумент означает, что сортировка производится по убыванию.

M-x sort-fields

Разделить область на строки и отсортировать, сравнивая содержимое одного поля в каждой строке.   Поля разделяются пропусками, так что первый отрезок последовательных непробельных знаков в строке составляет поле 1, второй такой отрезок составляет поле 2, и так далее.

Поле, по которому должна производится сортировка, указывается с помощью числового аргумента: 1 используется для сортировки по полю 1, и так далее. Отрицательный аргумент означает отсчет полей справа, а не слева; то есть минус 1 обозначает сортировку по последнему полю.  Если содержание полей сортировки в нескольких строках одинаково, эти строки остаются в том же относительном порядке, в каком они были изначально.

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

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

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

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