У меня есть elisp, который запускает внешнюю команду «npm».В emacs, какой лучший способ запустить внешнюю программу в другом окне, которая может быть закрыта одной ключевой командой после завершения выполнения программы?
(defun npm-mode-npm-run()
"Run the 'npm run' command on a project script."
(interactive)
(let ((command
(completing-read
"Run command: " (npm-mode--get-project-scripts))))
(message "Running npm script: %s" command)
(switch-to-buffer npm-mode--buffer-name command)
(erase-buffer)
(ansi-term (getenv "SHELL") "npm-mode-npm-run")
(comint-send-string "*npm-mode-npm-run*" (format "npm run-script %s\n" command))))
В то время как он делает работу, по окончанию выполнения пользователя остается в буфере, который должен быть убит, и что требует дополнительного подтверждения, чтобы убить процесс.
Что бы я хотел - когда программа выйдет, я могу нажать клавишу «q», чтобы сделать все это, оставив пользователя в исходном буфере.
Является ли это хорошим примером того, как сделать это лучше всего для современных emacs, на которые я могу ссылаться, или любых других конкретных документов, которые могут быть полезны?
Большое спасибо заранее!
Я не знаком с npm, но в целом, я бы попробовал 'compile', возможно, производную версию. Для довольно простого примера производного режима компиляции см. Https://github.com/PyCQA/pylint/blob/master/elisp/pylint.el. Кроме того, см. Http://stackoverflow.com/a/11059012/245173 для автоматического захоронения (или уничтожения) буфера компиляции, который был успешным. – jpkotta