Emacs автоматически закрывает асинхронные выходные буферы при завершении команды - PullRequest
2 голосов
/ 02 августа 2011

В настоящее время я выполняю асинхронную команду emacs с достаточной степенью регулярности, подобной этой:

(save-window-excursion
  (async-shell-command
    cmd
    (generate-new-buffer "async")))

Это работает хорошо и все, но это загромождает мой экземпляр emacs целой тонной асинхронности <5> и асинхронные <11> буферы.Как я могу автоматически уничтожить эти буферы, когда завершится выполнение их соответствующей асинхронной команды?

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Несмотря на то, что они не убьют их после завершения команды, вы можете уничтожить буферы через некоторое время - это предполагает, что асинхронные команды являются живыми (или имеют довольно известную среду выполнения). Что-то вроде:

(save-window-excursion
  (let ((buf (generate-new-buffer "async")))
    (async-shell-command cmd buf)
    (run-with-timer 10 nil (lambda (buf) (kill-buffer buf)) buf)))
1 голос
/ 04 июня 2012

Пожалуйста, посмотрите на http://news.gmane.org/find-root.php?message_id=%3cloom.20120517T145957%2d51%40post.gmane.org%3e

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

В течение времени отверждения вы можете проверить выход процесса, отменить отмирание или продлить срок службы буфера.

С уважением, Tobias

0 голосов
/ 02 августа 2011

Я предполагаю, что (для этого конкретного варианта использования) вы редко интересуетесь просмотром вывода, помещенного в буфер "async", и что вы просто хотите предотвратить создание посторонних буферов. Если это так, вы можете сделать:

(save-window-excursion
  (when (get-buffer "async")
    (kill-buffer "async"))
  (async-shell-command
    cmd
    (generate-new-buffer "async")))

Это уничтожит буфер "async" перед запуском "async-shell-command" и, таким образом, предотвратит создание дополнительных буферов "async".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...