У меня есть асинхронный процесс в Emacs, который создает файл TAGS.
Этот процесс создает буфер процесса с именем * ctags *. Если результат процесса «закончен \ n», я убиваю буфер.
Если результатом процесса является что-то еще, я хочу отобразить буфер процесса, похожий на вывод состояния * compilation * при запуске M-x compile .
т.е. Я хочу разделить экран по вертикали и показать буфер * ctags * внизу. Нажатие q предпочтительно уничтожит нижний буфер и просто покажет мой оригинальный буфер.
Я пытался использовать это в моем обратном вызове стража:
(split-window-vertically)
(set-window-buffer (selected-window) (get-buffer "*ctags*"))
, но кроме того факта, что он помещает буфер * ctags * сверху, буфер не имеет тех же характеристик, что и вывод * compilation *, например, нажатие q вставляет q.
Как мне создать буфер типа * compilation *?
EDIT:
Вдохновленный ответом Трея Джексона ниже, это именно то, что я хочу:
(pop-to-buffer (get-buffer "*ctags*"))
(compilation-mode)
Он выбирает буфер * ctags *, переводит его в режим компиляции и q выходит из окна.
EDIT2:
Использование
(compilation-mode)
(основной режим вместо второстепенного), поскольку Emacs почему-то не любит повторное использование второстепенного режима в существующем буфере.
Сообщение об ошибке, которое я получаю:
Toggling compilation-minor-mode off; better pass explicit argument.