Приложение A  Аргументы командной строки – ЧАСТЬ 1

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

Аргументы, начинающиеся со знака ‘-’, называются ключами. Остальные аргументы задают файлы, к которым нужно обратиться. Emacs обращается к указанным файлам во время запуска. Имя файла, заданное в командной строке последним, становится текущим буфером; другие файлы также присутствуют, но в других буферах.  Как  обычно, особый аргумент ‘-’ говорит,  что все последующие аргументы являются именами файлов, а не ключами, даже если начинаются на ‘-’.

Командные ключи Emacs могут задавать многие вещи, например размер и положение X-окна, используемого Emacs, его цвета и так  далее.   Некоторые ключи поддерживают продвинутое использование, это, например, запуск лисповских функций для файлов в пакетном режиме.   Разделы в этой главе описывают доступные ключи,  расположенные  в соответствии с их назначением.

Есть два способа записи ключей: короткие формы, начинающиеся с одного знака ‘-’, и длинные формы, начинающиеся с ‘-’. Например, ‘-d’  — это короткая форма, а ‘-display’

— соответствующая длинная форма.

Длинные формы с ‘-’ легче запомнить, но дольше печатать.  Однако, вы не обязаны писать имя ключа полностью, достаточно любого однозначного сокращения. Когда длинный ключ принимает аргумент, вы можете использовать для разделения имени ключа и аргумента либо пробел, либо знак равенства. Таким образом, вы можете  написать как

‘-display sugar-bombs:0.0’,  так и ‘-display=sugar-bombs:0.0’. Мы рекомендуем использовать знак равенства, так как он более четко показывает  взаимосвязь, и в приведенных ниже таблицах всегда используется знак равенства.

Большинство ключей указывают, как  инициализировать  Emacs, или устанавливают параметры для всего сеанса Emacs. Мы называем их ключами запуска. Немногие ключи указывают, что нужно сделать: например, загрузить библиотеки, вызвать функции или выйти из Emacs. Такие ключи называют ключами действия. Их и имена файлов вместе называют аргументами действия.  Emacs обрабатывает  все аргументы действия в том порядке, в котором они были записаны.

A.1  Аргументы действия

Вот таблица аргументов и ключей действия:

‘файл’        Обратиться к  файлу с помощью find-file.   См.   Раздел 14.2 [Обращение],

с. 106.

‘+номерстроки файл’

Обратиться к файлу с помощью find-file, а затем перейти в нем к строке с номером номерстроки.

‘-l файл’

‘-load=файл’

Загрузить лисповскую библиотеку с именем файл с помощью функции load. См.  Раздел 23.7 [Библиотеки Лиспа], с. 253.  Библиотека может находиться либо в текущем каталоге, либо в пути поиска библиотек Emacs, как он задан переменной EMACSLOADPATH (см. Раздел A.5.1 [Общие переменные], с. 388).

‘-f функция’

‘-funcall=функция’

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

‘-eval выражение’

Вычислить лисповское выражение.

‘-insert=файл’

Вставить содержимое  файла в текущий буфер. Это похоже  на действие M-x insert-file. См. Раздел 14.10 [Разнообразные действия с файлами], с. 132.

‘-kill’        Прекратить работу Emacs без подтверждения.

Файл инициализации может получить доступ к значениям аргументов действия через список в переменной command-line-args.  Файл инициализации может перекрыть обычную обработку аргументов действия или определить новые путем чтения и установки этой переменной.

A.2  Ключи запуска

Ключи запуска задают параметры для данного сеанса Emacs. В этом разделе описаны более общие ключи запуска; некоторые другие ключи, относящиеся к X Windows, вводятся в следующих разделах.

Некоторые ключи запуска влияют на процесс загрузки файлов инициализации. Обычно Emacs загружает ‘site-start.el’,  если он существует, затем ваш собственный файл инициализации ‘~/.emacs’, если он существует, и наконец, ‘default.el’, если он существует; определенные ключи запрещают загрузку некоторых из этих файлов или заменяют их другими файлами.

‘-t устройство’

‘-terminal=устройство’

Использовать устройство в качестве терминала для ввода и вывода.

‘-d дисплей’

‘-display=дисплей’

Использовать систему X Windows и открыть начальный фрейм Emacs на дис-

плее с заданным именем.

‘-nw’

‘-no-windows’

Не общаться непосредственно с X Windows, не обращая внимания  на перемен-

ную среды DISPLAY, даже если она установлена.

‘-batch’

‘-batch’     Запустить Emacs пакетном режиме, что означает, что редактируемый текст не отображается,  а стандартные команды терминала для прерывания, такие как C-z и C-c, продолжают иметь свое обычное значение. Emacs в пакетном режиме выводит в стандартный поток ошибок stderr  только то, что в нормальном режиме выводилось бы программами в эхо-область.

Пакетный режим используется для запуска программ, написанных на языке Emacs Lisp, из сценариев командного интерпретатора, Make-файлов и так далее.  Обычно при этом также  используются ключи ‘-l’  или ‘-f’,  чтобы запустить Лисп-программу для пакетной обработки.

Ключ  ‘-batch’ подразумевает ‘-q’  (не загружать  файл инициализации).  Он также  заставляет Emacs прекратить работу после того,  как  обработаны все командные ключи.   Кроме  того,  самосохранение  производится только в тех буферах, в которых оно было затребовано явно.

‘-q’

‘-no-init-file’

Не  загружать   ваш   файл  инициализации  Emacs,   ‘~/.emacs’,    а   также

‘default.el’.

‘-no-site-file’

Не загружать файл ‘site-start.el’.  Ключи ‘-q’,  ‘-u’  и ‘-batch’ не влияют на загрузку этого файла — только этот ключ блокирует ее.

‘-u пользователь’

‘-user=пользователь’

Загрузить файл инициализации  Emacs, принадлежащий пользователю, ‘~поль

зователь/.emacs’, вместо вашего собственного.

‘-debug-init’

Включить отладчик Emacs Lisp для обработки ошибок в файле инициализации.

‘-unibyte’

Делать практически все с использованием однобайтных  буферов и строк.  Все буферы и  строки будут однобайтными, если вы (или Лисп-программа) явно не запросите  многобайтный буфер или строку.  Установка переменной среды EMACS_UNIBYTE имеет тот же эффект.

‘-multibyte’

Подавить действие переменной EMACS_UNIBYTE, чтобы Emacs по умолчанию ис-

пользовал многобайтные знаки, как обычно.

A.3  Пример аргументов командной строки

Здесь приведен пример использования Emacs с аргументами и ключами. Он предполагает, что у вас есть программа на Лиспе, называемая ‘hack-c.el’, которая будучи загруженной выполняет некоторые полезные действия над текущим буфером, предположительно программой на Си.

emacs  -batch   foo.c -l hack-c  -f save-buffer  >&  log

Это говорит Emacs обратиться к файлу ‘foo.c’, загрузить ‘hack-c.el’ (которая производит изменения в файле, к которому вы обратились), сохранить ‘foo.c’ (заметьте,  что savebuffer — это функция, которая привязана к C-x C-s), а затем вернуться в оболочку (из-за

‘-batch’).  Ключ  ‘-batch’ также гарантирует, что не будет проблем с перенаправлением вывода в файл ‘log’,  так  как  Emacs не будет предполагать, что он должен работать с терминалом.

A.4  Возврат в Emacs с аргументами

Вы можете задать для Emacs аргументы действия, когда вы возвращаетесь в него после приостановки. Чтобы подготовиться к этому, поместите в ваш файл ‘.emacs’ следующий код (см. Раздел 31.2.3 [Ловушки], с. 349):

(add-hook  ’suspend-hook  ’resume-suspend-hook)

(add-hook  ’suspend-resume-hook  ’resume-process-args)

Для дальнейшей подготовки вы должны выполнить сценарий оболочки, ‘emacs.csh’ (если вы используете в качестве оболочки csh) или ‘emacs.bash’ (если вы пользуетесь bash). Эти сценарии определяют псевдоним с именем edit, который будет возвращать в Emacs, передавая ему новые аргументы командной строки, например файлы для редактирования.

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

Аргументы запуска не распознаются  — так или иначе, их слишком поздно исполнять.

Обратите внимание, возврат в Emacs (с аргументами или без) должен производиться из оболочки, являющейся родительским процессом задания Emacs. Именно поэтому edit

— это псевдоним, а не программа  или сценарий. Невозможно реализовать команду возврата, которую можно было бы запускать из подзадач этой оболочки; например, невозможно определить команду, которую можно было бы сделать значением переменной EDITOR. Следовательно, команда возврата не эквивалентна  по возможностям серверу Emacs (см. Раздел 30.3 [Сервер Emacs], с. 330).

Эти псевдонимы используют сервер Emacs, если оказалось, что он уже запущен. Однако, они не могут определить это абсолютно точно. Они могут полагать, что сервер все еще запущен, Emacs, потому что файл ‘/tmp/.esrv…’ все так же существует, тогда как в действительности вы уничтожили тот Emacs. Если такое происходит, найдите этот файл и удалите его.

A.5  Переменные среды

В этом приложении описано, как  Emacs использует переменные  среды.  Переменная среды — это строка, передаваемая операционной системой в Emacs, а все множество  переменных среды называется средой. Имена переменных среды регистрозависимы,  и для них принято использовать только заглавные буквы.

Так как переменные среды исходят от операционной системы, общего способа для их установки нет; он зависит от используемой вами операционной системы и в особенности от оболочки. Например, так можно установить переменную среды ORGANIZATION в значение

‘не особая’ с использованием bash:

export   ORGANIZATION="не  особая"

а так это можно сделать в csh или tcsh:

setenv  ORGANIZATION  "не  особая"

Когда  Emacs настроен для использования оконной системы X, он наследует большое число переменных среды из библиотеки X. Для дальнейшей информации  смотрите документацию по X Windows.

A.5.1  Общие переменные

AUTHORCOPY

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

gnus.

CDPATH          Используется командой cd для поиска указанного вами каталога, если вы зада-

ли относительное имя.

DOMAINNAME

Имя домена Internet,  где  находится машина, на которой запускается Emacs.

Используется пакетом gnus.

EMACS_UNIBYTE

Определение этой переменной среды указывает Emacs производить почти все процедуры  над однобайтными буферами  и строками.  Это эквивалентно использованию в командной строке  ключа ‘-unibyte’ при каждом вызове. См. Раздел A.2 [Ключи запуска], с. 386.

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

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

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

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