Emacs RTags:rtags-find-references-at-point窗口不聚焦问题咨询
这其实不是RTags的默认预期行为,大概率是你的Emacs配置或者窗口管理相关设置影响了焦点切换。我之前帮不少朋友解决过类似的小麻烦,给你几个靠谱的方案:
方案1:修改RTags的显示缓冲区函数
RTags提供了rtags-display-buffer-function变量来控制如何显示引用结果窗口。默认它可能用的是display-buffer,这个函数只会打开窗口但不会自动聚焦。我们可以把它改成switch-to-buffer-other-window,这样调用rtags-find-references-at-point时就会自动切换到新窗口:
(setq rtags-display-buffer-function #'switch-to-buffer-other-window)
把这段代码添加到你的Emacs配置文件(比如~/.emacs或者~/.emacs.d/init.el)里,重启Emacs或者手动执行eval-region加载这段配置就行。
方案2:自定义包装命令
如果你不想全局修改RTags的行为,可以自己写一个包装函数,在原命令执行后自动切换窗口:
(defun my-rtags-find-references () "调用rtags-find-references-at-point并自动聚焦到结果窗口" (interactive) (rtags-find-references-at-point) (other-window 1)) ; 切换到下一个窗口
然后把这个自定义命令绑定到你习惯的快捷键上,比如替换原来的绑定:
(global-set-key (kbd "M-.") #'my-rtags-find-references)
这样每次按下快捷键,执行完引用查找后就会自动跳到结果窗口。
方案3:检查窗口管理相关配置
如果上面两个方案没生效,你可以检查下Emacs的窗口管理设置:
- 确保
pop-up-windows是开启状态:(setq pop-up-windows t),这个变量控制是否允许弹出新窗口 - 有没有安装其他窗口管理插件(比如
winner-mode、eyebrowse等),这些插件可能会干扰窗口焦点的切换,可以临时禁用试试,排查是不是它们的问题
内容的提问来源于stack exchange,提问作者manzerbredes
相关产品推荐
相关产品推荐

