我正在使用 (global-linum-mode t)
在 Emacs 中显示行号。
这工作得很好,直到我使用 ctrl + up/down 命令(forward-paragraph
和 backward-paragraph
) 来导航缓冲区,此时某些行号渲染不正确(请参阅附图)。
仅当我使用所述命令跳过整个代码段时才会发生这种情况,并且如果我开始通过其他方式导航缓冲区,问题会立即消失(即,行号正确呈现)。
该问题在 C 和 C++ 模式中均存在(可视化),并且我在 x86-64 Fedora 19 上使用 Emacs 24.3.1。
虽然 go-to-line 命令在导航编译错误和警告方面满足了我的目的,但我想保留行号,因为我发现它们在快速近似函数长度方面很有帮助。 到目前为止,我没有发现其他地方提到过这个问题,而且我不确定这是否是 Emacs 的预期行为,或者我是否要提交错误报告。
有人遇到过这个问题或者知道其根源吗?
修复:
这个问题可以通过调用(linum-update-current)
来解决,正如@lawlist在下面的回答中所描述的那样。重复执行此操作的一个简单方法是将命令附加到 forward-paragraph
的执行中,这可以使用 Emacs Lisp advice feature 来完成。 :
(defadvice forward-paragraph (after forward-paragraph-linum-update)
"Perform (linum-update-current) after jumping forward one
paragraph to ensure line numbers are being rendered
correctly."
(linum-update-current))
(ad-activate 'forward-paragraph)
最佳答案
Emacs 开发团队的一些主要成员出于各种原因建议避免使用 linum-mode,而是建议使用 nlinum-mode:http://elpa.gnu.org/packages/nlinum.html
我个人使用 linum-mode 的修改版本,并且修复了一些错误 - 如果您继续使用 linum-mode,您可能需要执行相同的操作 - 即,实现您自己的错误修复找到他们。修复您看到的错误的最快方法是按照您的命令执行:
(linum-update-current)
关于emacs - 为什么 Emacs 中应该有行号的地方有空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25078910/