43.1.4 Аргументы командной строки

Вы можете использовать аргументы командной строки для запроса различных действий при запуске Emacs. Обратите внимание, что рекомендуемый способ использования Emacs — запускать его только один раз после входа в систему, а затем выполнять всю редактирование в одной сессии Emacs (см. Вход в Emacs в Руководство GNU Emacs). По этой причине вы можете не использовать аргументы командной строки очень часто; тем не менее, они могут быть полезны при вызове Emacs из скриптов сессий или при отладке Emacs. В этом разделе описывается, как Emacs обрабатывает аргументы командной строки.

Функция: command-line

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

Переменная: command-line-processed

Значение этой переменной равно t после того, как командная строка была обработана.

Если вы пересобираете Emacs, вызвав dump-emacs (см. Сборка Emacs), вы можете захотеть сначала установить эту переменную в nil, чтобы побудить новый пересобранный Emacs обработать свои новые аргументы командной строки.

Переменная: command-switch-alist

Эта переменная представляет собой alist пользовательских опций командной строки и соответствующих функций-обработчиков. По умолчанию она пуста, но вы можете добавить элементы, если хотите.

Опция командной строки — это аргумент в командной строке, имеющий вид:

-option

Элементы command-switch-alist выглядят так:

(option . handler-function)

CAR, option, — это строка, имя опции командной строки (включая начальный дефис). handler-function вызывается для обработки option и принимает имя опции в качестве единственного аргумента.

В некоторых случаях опция в командной строке сопровождается аргументом. В таких случаях handler-function может найти все оставшиеся аргументы командной строки в переменной command-line-args-left (см. ниже). (Весь список аргументов командной строки находится в command-line-args.)

Обратите внимание, что обработка command-switch-alist не обрабатывает знаки равенства в option как особые. То есть, если в командной строке есть опция вида --name=value, то только член command-switch-alist, чей car буквально равен --name=value, будет соответствовать этой опции. Если вы хотите разобрать такие опции, вам нужно использовать command-line-functions вместо этого (см. ниже).

Аргументы командной строки разбираются функцией command-line-1 в файле startup.el. См. также Аргументы командной строки для вызова Emacs в Руководство GNU Emacs.

Переменная: command-line-args

Значение этой переменной — это список аргументов командной строки, переданных Emacs.

Переменная: command-line-args-left

Значение этой переменной — это список аргументов командной строки, которые еще не были обработаны.

Переменная: command-line-functions

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

Эти функции вызываются без аргументов. Они могут получить доступ к рассматриваемому аргументу командной строки через переменную argi, которая временно привязывается в этот момент. Оставшиеся аргументы (включая текущий) находятся в переменной command-line-args-left.

Когда функция распознает и обработает аргумент в argi, она должна вернуть не-nil значение, чтобы сообщить, что она обрахнула этот аргумент. Если она также обработала некоторые последующие аргументы, она может указать на это, удаляя их из command-line-args-left.

Если все эти функции возвращают nil, то аргумент рассматривается как имя файла для посещения.