LINUX.ORG.RU

Перехват выхлопа и кода возврата

 


0

1

Для Go у меня есть пара сниппетов в emacs-е, go-generate и go-install, в которых есть что-то вроде

…
(switch-to-buffer -generation-buf)
(insert (shell-command-to-string (concat "go generate " generation-path)))
(colorize-compilation-buffer)
(compilation-mode 1)
…
Всё нормально, но хочется ещё дополнить поведение, чтобы сразу закрывать буфер если генерация/установка прошла успешно. Куда можно посмотреть?

get-buffer «buffer-name» buffer-substring subseq kill-buffer - вроде весь список комманд что вам понадобиться

Silerus ★★★★
()
Ответ на: комментарий от Bad_ptr

Ага, тоже почти сразу сам нашёл, до этого почему-то гуглил elisp, а не emacs.

Joe_Bishop
() автор топика
Ответ на: комментарий от Silerus

чуть поменял способ обработки:

Из https://stackoverflow.com/a/23299809/1171163

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

;; return exit code and captured stdout
(defun process-exit-code-and-output (program &rest args)
  "Run PROGRAM with ARGS and return the exit code and output in a list."
  (with-temp-buffer
    (list (apply 'call-process program nil (current-buffer) nil args)
          (buffer-string))))

ну и потом смотрю: если код не ноль, то создаю буфер и пишу туда выхлоп, иначе просто скидываю выхлоп в message-буфер

Joe_Bishop
() автор топика
Ответ на: комментарий от Joe_Bishop

тоже вариант, если вы сами вызываете программу, я думал вам просто буффер выхлопа отпарсить и закрыть

Silerus ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.