Spec-Zone.ru › Elisp

Пакетный режим

Параметр командной строки ‘-batch’ заставляет Emacs работать в неинтерактивном режиме. В этом режиме Emacs не считывает команды с терминала, не изменяет режимы терминала и не ожидает вывода на экран, который можно стирать. Идея состоит в том, что вы указываете программы на Lisp для выполнения; после их завершения Emacs должен выйти. Указать программы для выполнения можно с помощью ‘-l file’, который загружает библиотеку с именем file, ‘-f function’, который вызывает function без аргументов, или ‘--eval=form’.

Переменная: noninteractive

Эта переменная равна non-nil, когда Emacs работает в пакетном режиме.

Если указанная программа на Lisp сигнализирует о необработанной ошибке в пакетном режиме, Emacs завершается с ненулевым кодом выхода после вызова отладчика Lisp, который выводит трассировку стека Lisp (см. Вызов отладчика) в стандартный поток ошибок:

$ emacs -Q --batch --eval '(error "foo")'; echo $?

Error: error ("foo")
mapbacktrace(#f(compiled-function (evald func args flags) #<bytecode -0x4f85c5
7c45e2f81>))
debug-early-backtrace()
debug-early(error (error "foo"))
signal(error ("foo"))
error("foo")
eval((error "foo") t)
command-line-1(("--eval" "(error \"foo\")"))
command-line()
normal-top-level()
foo
255

Любой вывод программы на Lisp, который обычно направлялся бы в область эха с помощью message или, например, с помощью prin1, если в качестве потока используется t (см. Потоки вывода), в пакетном режиме вместо этого направляется в стандартные дескрипторы Emacs: message записывает данные в дескриптор стандартного потока ошибок, а prin1 и другие функции печати — в стандартный поток вывода. Аналогичным образом ввод, который обычно поступал бы из минибуфера, считывается из дескриптора стандартного потока ввода. Таким образом, Emacs ведет себя почти как неинтерактивная прикладная программа. (Вывод в область эха, который обычно генерирует сам Emacs, например эхо команд, полностью подавляется.)

Текст, содержащий символы, отличные от ASCII, и записываемый в дескрипторы стандартного потока вывода или ошибок, по умолчанию кодируется с помощью locale-coding-system (см. Локали), если он не является non-nil; это поведение можно переопределить, привязав coding-system-for-write к выбранной вами кодировке (см. Явное кодирование и декодирование).

В пакетном режиме Emacs увеличивает значение переменной gc-cons-percentage со значения по умолчанию ‘0.1’ до ‘1.0’. Пакетные задания, рассчитанные на длительное выполнение, должны снова уменьшать это значение, поскольку это означает, что по умолчанию будет выполняться меньше сборок мусора (и потребляться больше памяти).

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Batch-Mode.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API