如何在Emacs中自动切换到发生缓冲区?
在正则表达式上运行如何在Emacs中自动切换到发生缓冲区?,emacs,elisp,Emacs,Elisp,在正则表达式上运行occure时,帧会分成两个窗口,occure缓冲区如下所示。但是,键盘焦点仍在原始缓冲区中。如何以编程方式更改此行为,使发生缓冲区成为当前缓冲区?我试过这个: (defun test-occur () (interactive) (occur "test") (switch-to-buffer "*Occur*")) 但是它不起作用。。(即:现在发生缓冲区同时显示在顶部和底部窗口中)尝试以下操作: (defun test-occur () (interact
occure
时,帧会分成两个窗口,occure
缓冲区如下所示。但是,键盘焦点仍在原始缓冲区中。如何以编程方式更改此行为,使发生
缓冲区成为当前缓冲区?我试过这个:
(defun test-occur ()
(interactive)
(occur "test")
(switch-to-buffer "*Occur*"))
但是它不起作用。。(即:现在发生缓冲区同时显示在顶部和底部窗口中)尝试以下操作:
(defun test-occur ()
(interactive)
(occur "test")
(other-window 1))
您不必为此定义单独的函数。
只需添加一个钩子:
(add-hook 'occur-hook (lambda () (other-window 1)))
,而且可能更可靠:
(add-hook 'occur-hook (lambda () (switch-to-buffer-other-window "*Occur*")))
谢谢,这很有效。如果有两个以上的窗口怎么办。如何选择正确的一个?它选择最近的一个。发生应该是您案例中最新的一次。我对此方法有问题,需要按名称调用窗口:(添加hook'occure hook'(lambda()(切换到缓冲区其他窗口“*occure*”))