Подтвердить что ты не робот

Как закрыть автоматически открытое окно в Emacs?

Это, наверное, очень наивный вопрос Emacs - я новичок в этом.

Когда я оцениваю выражение lisp, если есть ошибка, отладчик автоматически появляется в другом окне. Если у меня есть * scratch * и * info * open (первый для тестирования lisp, а последний для чтения об этом), тогда отладчик открывается в окне, в котором находится * info *. На данный момент у меня есть чтобы перейти к этому окну, а затем верните его на * info *, прежде чем вернуться к * scratch *. (То же самое происходит, если я делаю C-x C-b для списка буферов.) Я предполагаю, что должен быть способ просто закрыть это окно без этой длинной последовательности команд. Может ли кто-нибудь просветить меня?

4b9b3361

Ответ 1

По крайней мере, здесь, на моем emacs (22.3), когда всплывает отладчик, его окно становится активным. Там нажатие q просто завершает работу отладчика, если это то, что вы хотите. В этот момент он также выходит из рекурсивного редактирования.

Ответ 3

Из того, что я понимаю, вы хотите закрыть буфер в другом окне, не перемещая курсор из текущего окна.

У меня нет какой-либо существующей функции, поэтому я откатился.

(defun other-window-kill-buffer ()
  "Kill the buffer in the other window"
  (interactive)
  ;; Window selection is used because point goes to a different window
  ;; if more than 2 windows are present
  (let ((win-curr (selected-window))
        (win-other (next-window)))
    (select-window win-other)
    (kill-this-buffer)
    (select-window win-curr)))

Вы можете привязать его к чему-то вроде "C-x K" или к какой-либо другой несколько сложной клавише, чтобы вы не нажимали ее по ошибке.

(global-set-key (kbd "C-x K") 'other-window-kill-buffer)

Я использую это LOT! (для буферов справки, буферов компиляции, буферов Grep и простых старых буферов я хочу закрыть сейчас, не перемещая точку)

Ответ 4

Используя режим победителя, вы можете использовать левую стрелку C-C для привязки клавиш, чтобы вернуться к предыдущей конфигурации окна. Конечно, это фактически не убивает новый буфер, но он скрывает его.

Ответ 5

Я думаю, что вы ищете C-x 4 C-o, который отображает буфер в "другом" окне без перехода на него.

Как уже упоминалось выше, в случае буфера backtrace вы, вероятно, захотите выйти из него с помощью q, чтобы выйти из рекурсивного редактирования.

Ответ 6

Одним из возможных решений является использование пакета управления окнами. Сохраните "предпочтительное" расположение окна и после всплытия окна отладчика/буфера, и вы закончите с ним, вернитесь к предпочтительной компоновке.

Есть куча пакетов на выбор, см. конфигурацию окон переключения в вики.

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

Если вы хотите перевернуть свой собственный (это довольно просто), вы можете просто сохранить конфигурацию окна и восстановить его так:

(setq the-window-configuration-i-want (current-window-configuration))
(global-set-key (kbd "<f7>") 
       (lambda () (interactive) 
            (set-window-configuration the-window-configuration-i-want)))

Фокус в том, где установить значение the-window-configuration-i-want.

Ответ 7

Попробуйте использовать popwin-mode. Это действительно хорошо о закрытии окон автоматически.

В ближайшее время я попытаюсь описать

Вы открываете undo-tree-visualize, чем вы найдете нужную ветку после того, как вы измените окно switch-window, автоматически закроет другое окно