如何让Emacs跟随编译缓冲区

41

有时当我在编译时,需要向上滚动我的编译缓冲区以查看错误的详细信息。此时,Emacs停止“跟随”我的编译缓冲区,即自动滚动以显示新的输出。

我正在使用OS X上的Aqumacs。您有任何想法如何“重新附加”或再次启用编译缓冲区的跟随功能吗?

敬礼, Chris

3个回答

90

请将以下代码加入 ~/.emacs 文件中:

  ;; Compilation output
  (setq compilation-scroll-output t)

甚至更多
  (setq compilation-scroll-output 'first-error)

使页面滚动到第一个错误。

那对我来说完美地运行了——不知道“错误”的语法是什么,所以我可以制作调试输出来模仿它。是时候去挖掘了。但这个答案将节省我很多麻烦! - Henry Crutcher
1
我总是喜欢使用自定义框架进行工作,但你的情况可能会有所不同。在这种情况下:M-x customize-variable compilation-scroll-output。 - Gizmomogwai

5
尝试使用M-x auto-revert-tail-modeM-x auto-revert-mode。取自官方文档
Auto-Revert模式的一个用途是“tail”文件,例如系统日志,以便其他程序对该文件所做的更改会持续显示。要实现这一点,只需将光标移动到缓冲区的末尾,它将随着文件内容的更改而保持在那里。但是,如果您确定文件仅通过在末尾增长来更改,请使用Auto-Revert Tail模式(auto-revert-tail-mode)。对此更有效率。Auto-Revert Tail模式也适用于远程文件。
因此,正如Chmouel已经指出的,将光标移动到缓冲区的末尾也可以起到作用。

4
将光标移动到文件末尾似乎可以起作用。auto-revert-tail-mode 抱怨说“此缓冲区不是文件”,所以它可能只适用于文件,而不适用于编译输出? - clearf

4

我不确定Aquamacs是否适用,但对于我(Emacs 23/Debian),我只需进入编译窗口,将光标放在窗口末尾即可连接并跟随(您可以切换到另一个窗口它仍然会跟随)。


3
能否自动完成这个操作?我很讨厌今天的快速计算机会太快地填满我的编译缓冲区,导致我无法将光标放在结尾处;-) - thoni56
@Thomas,你可以使用一个命令到达末尾:M->。无论输出滚动速度有多快,这都有效。但是请参考@thohr的答案,了解如何使其自动滚动。 - Wayne Conrad
无法在LaTeX编译窗口中工作。但是下面@tsohr的答案完美地解决了问题。 - Alberto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接