这篇介绍应该是通用的适用于各种编译型语言的 compilation mode.
这里只是以 rust 语言的 rustic-compilation-mode 为例。
默认,在 rustic 下面运行 Ctrl+C Ctrl+C TAB
编译代码时,是会在当前 emacs frame
下面新开一个 window, 然后显示编译错误,这是因为默认 rustic 使用的 display method 是 display-buffer.
(defcustom rustic-compile-display-method 'display-buffer
"Default function used for displaying compilation buffer."
:type 'function
:group 'rustic-compilation)
就我而言,这不是一个很好的体验:
执行编译 => 编译结果 buffer 在新的 window 被打开 => 因为光标没动,仍需手动切换光标到这个新的 window => Meta + P, 光标移动到第一条编译错误 => 回车,跳转回代码 buffer => C-x 0 来关闭 compilation buffer.
在请教过群里的 @Youmu , 使用 popwin 中的 popup-to-buffer 来替换默认的 display-bufffer, 带来针对编译过程更好地交互体验。
(with-eval-after-load 'popwin
(setq rustic-compile-display-method 'pop-to-buffer)
(add-to-list 'popwin:special-display-config '(rustic-compilation-mode :noselect t)))
执行编译 => 编译结果 buffer 在新的 popup 窗口打开,光标自动切换到新 buffer => Meta + P, 光标移动到第一条编译错误 => 回车,跳转回代码 buffer => 任何时候,按下 Ctrl + G总是会编译之前 popup 的编译窗口
这里还有一个新的类似于 popwin 的 shackle, 我还没试过它, 也许它比 popwin 更好呢。
另外, 群里的 @anb 给了一个可能更好地选择。
我用的不多,但是常用的一个快捷键是C-x `,会跳转到代码里第一个出错的地方,所以感觉不需要到编译错误的窗口中
突然发现是啊,比较现代的计算机语言(例如 rust), 配合 flycheck, lsp, 可以达到非常好的编程体验,以前素要运行编译才能发现的很多问题,现在在编辑过程中,已经实时的提醒给了用户。
事实上, 就算没那个 红色下划线
的提醒, “Ctrl +`” 也会自动将光标放在第一个错误上面, 只不过,我还是更喜欢 old fashion 体验罢了。