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

How can I prevent an emacs error message window from stealing focus and requiring extra steps to dismiss?

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

如果它有焦点,可以使用 C-x 0(删除-window)消除错误 window,但是如果您之前有两个 windows 打开,比如说,水平拆分,错误出现在另一个 window 中,消除错误 window 会删除您之前的拆分。我创建了很多不可预测的配置,因此使用 window 编曲对我来说无法恢复一些预先配置的 window 编曲。

我怎样才能做到这一点?

一个选项是启用 winner-mode 并仅将 winner-undo/winner-redo 绑定到要在 window 配置之间循环的键。错误弹出新的框架后,只需调用一次winner-undo即可恢复之前的配置。这也为您提供了使用 winner-redo.

调用错误配置所需的行为

您可以通过将两个苹果酒配置变量设置为 nil:

来禁用此行为

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

这将阻止默认行为,仍然允许您在需要时手动 select 错误缓冲区 cider-selector

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

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

不确定你提到的错误是否是开发时的编译错误 Clojure/script 但是,根据我的经验(我也在终端中使用 Emacs),你可以通过按 [=10 来关闭错误消息=] 然后它会关闭框架并将光标移回原来的框架。

这是我的体验的一个简短视频:https://imgur.com/a/9jzr4yb

我也试过它有多个框架,它按预期工作:它只拆分代码编辑器框架以显示错误;如果您消除错误,它会删除新框架并保留您现有的布局。