是否有一种直接的方法(通过 defadvice 或其他方式)来更改缓冲区的焦点行为,例如 help、grep、发生?特别是,我想修改 M-x occur
的行为直接带我到 *Occur* 缓冲区。某些模式(例如 ESS)对此类“临时”缓冲区的显示提供了更细粒度的控制,但是对于不提供此类控制的缓冲区是否有通用策略?
最佳答案
(add-hook 'occur-hook (lambda () (pop-to-buffer occur-buf)))
(add-hook 'help-mode-hook (lambda () (pop-to-buffer (get-buffer "*Help*"))))
(add-hook 'grep-mode-hook (lambda () (pop-to-buffer (get-buffer "*grep*"))))
作为替代方案,一般的方法是使用
special-display-regexps
或 special-display-buffer-names
制作这样的缓冲区 special-display
,这会将它们放在一个单独的框架中(并选择它)。例如。:(setq special-display-regexps '("[ ]?[*][^*]+[*]"))
关于emacs - 修改缓冲区焦点控制(pop-to-buffer vs display-buffer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8638201/