emacs - 为什么 Emacs 中应该有行号的地方有空格?

标签 emacs elisp

我正在使用 (global-linum-mode t) 在 Emacs 中显示行号。 这工作得很好,直到我使用 ctrl + up/down 命令(forward-paragraphbackward-paragraph) 来导航缓冲区,此时某些行号渲染不正确(请参阅附图)。 仅当我使用所述命令跳过整个代码段时才会发生这种情况,并且如果我开始通过其他方式导航缓冲区,问题会立即消失(即,行号正确呈现)。 该问题在 C 和 C++ 模式中均存在(可视化),并且我在 x86-64 Fedora 19 上使用 Emacs 24.3.1。

虽然 go-to-line 命令在导航编译错误和警告方面满足了我的目的,但我想保留行号,因为我发现它们在快速近似函数长度方面很有帮助。 到目前为止,我没有发现其他地方提到过这个问题,而且我不确定这是否是 Emacs 的预期行为,或者我是否要提交错误报告。

有人遇到过这个问题或者知道其根源吗?

enter image description here


修复:

这个问题可以通过调用(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/

相关文章:

windows - Windows 上的 Emacs : mapping the Meta key to something else than Alt

select - Emacs 术语模式 : Selecting word by double-clicking with mouse

emacs - 下一个错误后光标在缓冲区中的位置

emacs - 将键序列向量转换为用户可读的字符串表示?

emacs - 命令在emacs上围绕光标水平居中屏幕?

python - 在 emacs 中,如何使用自定义参数执行当前编辑的 python 脚本?

emacs - 使用 eshell 编写脚本

Emacs 口齿不清 : how to append to the list "LaTeX-clean-intermediate-suffixes"?

c++ - 有什么好的方法可以控制手动缩进线之后的线吗?

Emacs 阻止以 `#<filename>#` 形式进行备份