Я определил некоторые функции для запуска асинхронного фонового процесса, используя async-shell-command
в моем .emacs, но каждый раз, когда я запускаю команды, создается новое окно (не фрейм), и там отображается буфер процесса. Как я могу выполнить команду без буфера «всплывающих»?
23
start-process
команду sudo? Я попытался обертывание моего призыва кstart-process
в ,(let ((default-directory "/sudo::")) ... )
но он не работает для меня."program"
в этом случае только имя программы (например, nautilus, caja, firefox) и"arg1 arg2 ..."
должно быть в четвертом позиционном аргументеstart-process
. Я понял это, прочитав документацию :)Как упоминал Тихон,
(start-process)
это путь. Если вы не хотите создавать буфер, но по-прежнему хотите реагировать на состояние фонового процесса, вы также можете использовать его(set-process-sentinel)
. Вот модифицированный пример, который я беру из своейprojector
посылки:Из описания функции Emacs:
GNU страницы руководства на процессы довольно хорошо для получения дополнительной информации.
источник
set-process-sentinel
делает немного точнее? Я получил общее представление о наличии функции, которая управляет процессом, но я не до конца понимаю все детали. Благодарность!M-x describe-function
и введете,set-process-sentinel
вы получите краткий ответ из документации Emacs: (set-process-sentinel PROCESS SENTINEL) Дайте PROCESS сторожевого SENTINEL; ноль по умолчанию. Часовой вызывается как функция, когда процесс меняет состояние. Он получает два аргумента: процесс и строку, описывающую изменение.C-h f
...Нет необходимости менять способ запуска асинхронной команды. Emacs имеет общую способность , чтобы позволить вам контролировать , где , или любой буфер будет всплывающим, изменяя единую структуру данных, то
display-buffer-alist
.В приведенном ниже решении вы можете видеть, что функция действия
display-buffer-no-window
(т. Е. Без всплывающего окна) настроена на привязку к любому буферу с началом имени*Asynchronous Shell Command*
(emacs добавляет инкрементный суффикс, когда его просят создать более одного).Чтобы увидеть список других доступных параметров отображения, введите
C-h f display-buffer
и найдите список «функций действия».источник