我的Emacs框架看起来像这样:
+---------------------------+
| | |
| | |
| | B |
| A | |
| | |
| | |
| |-------------|
| | C |
+---------------------------+
Run Code Online (Sandbox Code Playgroud)
C通常是一个具有某种长时间运行过程的终端,如Web服务器或守护进程.不幸的是,各种各样的事情都喜欢在那个窗口中切换缓冲区,偶尔会调整大小.如何锁定缓冲区和窗口高度C?
hua*_*uan 12
一种可能性是使用将窗口专用于其缓冲区set-window-dedicated-p.这不会阻止窗口手动调整大小,只能防止窗口被破坏display-buffer.例如,
(add-hook 'shell-mode-hook
(lambda ()
(interactive)
(set-window-dedicated-p (selected-window) 1)))
shell-mode-hook必要时更换.
Jér*_*dix 12
如果您不希望被窗口窃取和调整大小烦恼,请在.emacs中添加以下行以获得最终解决方案,该解决方案甚至可以用于gud之类的库,当他们无法窃取您的窗口时尝试打开新框架:
(有关以下信息,请参阅此答案advice)
(defadvice pop-to-buffer (before cancel-other-window first)
(ad-set-arg 1 nil))
(ad-activate 'pop-to-buffer)
;; Toggle window dedication
(defun toggle-window-dedicated ()
"Toggle whether the current active window is dedicated or not"
(interactive)
(message
(if (let (window (get-buffer-window (current-buffer)))
(set-window-dedicated-p window
(not (window-dedicated-p window))))
"Window '%s' is dedicated"
"Window '%s' is normal")
(current-buffer)))
;; Press [pause] key in each window you want to "freeze"
(global-set-key [pause] 'toggle-window-dedicated)
Run Code Online (Sandbox Code Playgroud)
并自定义pop-up-windows变量nil.
您也可以使用StickyWindows而不是窗口专用功能.
| 归档时间: |
|
| 查看次数: |
4905 次 |
| 最近记录: |