如何防止命令使用特定的Windows?


14

通常,我将一个框架分为四个窗口,其中底部的两个专门用于我的*compilation**grep*缓冲区。当浏览编译错误时,next-error最终将我的*grep*缓冲区替换为目标文件之一。

如何配置next-error使用包含*grep*缓冲区的窗口?

我的特定用例是next-error命令,但也欢迎提供更一般的答案。


Answers:


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-dedicated-p window标志:如果标志为非nil,则此函数将window标记为专用于其缓冲区,否则为非专用。

gnu提供

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.