如何防止 emacs 错误消息窗口窃取焦点并需要额外的步骤才能关闭?



我在终端中使用普通的emacs,并且喜欢这种方式(对我来说没有spacemacs或gui emacs(。我认为,在 gui 版本中,错误消息会在浮动窗口中弹出,并且可以将其删除。在我的设置中,它们在一个新的拆分窗口中打开并窃取焦点。为了摆脱它,我必须将指针移回我的代码窗口,然后,如果我想要我的代码窗口全宽,则通过删除带有绑定的另一个错误窗口来最大化代码窗口(这会将错误窗口保留在缓冲区列表中以供参考(。对于一个简单的错误消息来说,这是很多击键。理想情况下,我希望在代码出现时不要失去代码的焦点,并使用单个绑定消除错误消息窗口(但将其保留在缓冲区列表中以供参考......理想情况下,能够以最初出现的方式回忆它[在分裂中,而不会窃取焦点]与另一个绑定?

如果错误窗口具有焦点,则可以关闭带有 C-x 0(删除窗口(的错误窗口,但如果以前打开了两个窗口,例如水平拆分,则错误将显示在另一个窗口中,并且关闭错误窗口会删除您之前的拆分。我创建了许多不可预测的配置,因此使用窗口排列器对我恢复一些预配置的窗口排列不起作用。

我怎样才能做到这一点?

您可以通过将两个 cider 配置变量设置为nil来禁用此行为:

cider-show-error-buffercider-auto-select-error-buffer

这将防止默认行为,仍允许您在需要时使用cider-selector手动选择错误缓冲区。

尽管如此,我发现使用 popwin 包更方便,将错误缓冲区显示为弹出窗口,而不会破坏您的窗口布局。

(push "*cider-error*" popwin:special-display-config)

不确定您提到的错误是否是开发 Clojure/script 时的编译错误,但是,根据我的经验(我也在终端中使用 Emacs(,您只需按q即可消除错误消息,它将关闭框架并将光标移回原始框架。

以下是我经历的简短视频: https://i.stack.imgur.com/33Jzq.jpg

我还尝试过它具有多个框架,并且它按预期工作:它仅拆分代码编辑器框架以显示错误; 如果您忽略错误,它将删除新框架并保留现有布局。

一种选择是启用winner-mode,只需将winner-undo/winner-redo绑定到要在窗口配置之间循环的键。 错误弹出新帧后,只需调用一次winner-undo即可恢复先前的配置。 这也为您提供了使用winner-redo调用错误配置所需的行为。

最新更新