Как я могу запретить команде использовать определенные окна?


14

Как правило, у меня есть рамка, разделенная на четыре окна, где два внизу посвящены моему *compilation*и *grep*буферам. При просмотре ошибок компиляции, в next-errorконечном итоге заменит мой *grep*буфер одним из целевого файла.

Как я могу настроить, next-errorчтобы не использовать окно, содержащее *grep*буфер?

Мой конкретный вариант использования - next-errorкоманда, но приветствуются и более общие ответы.


Ответы:


14

Второе предложение @ Nsukami - использовать специальные окна . Так как это функция, а не команда , использование set-window-dedicated-pнапрямую может быть громоздким. С помощью следующей команды и связанного связывания клавиш вы можете переключать «выделенность» любого окна, нажимая C-c t:

(defun toggle-window-dedicated ()
  "Control whether or not Emacs is allowed to display another
buffer in current window."
  (interactive)
  (message
   (if (let (window (get-buffer-window (current-buffer)))
         (set-window-dedicated-p window (not (window-dedicated-p window))))
       "%s: Can't touch this!"
     "%s is up for grabs.")
   (current-buffer)))

(global-set-key (kbd "C-c t") 'toggle-window-dedicated)

Теперь это удобный способ использовать функцию выделенного окна! Спасибо, это работает как шарм.
Piwi

действительно, лучше внутри функции + клавиатура.
Nsukami _

4

Могу ли я предложить выделенное окно ?

Вы должны будете выделить окна для буферов, используя эту функцию:

set-window -edic-p window flag: эта функция помечает окно как выделенное для его буфера, если флаг не ноль, и не выделенный в противном случае.

Предоставлено GNU

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.