在OS X上使用linum-mode的emacs中导致此图形错误的原因是什么?

Sar*_*rah 12 emacs

我在我的Emacs中使用linum-mode得到了这个图形错误.我尝试从23升级到24(通过git),我已尝试使用各种提供的二进制文件在线和我的家庭编译版本.我真正感兴趣的是从哪里开始诊断问题.

在linum模式中

如果我将屏幕上的撕裂线数字滚动并重新进入,问题就会消失.

小智 11

我遇到了同样的问题,花了很多时间试图解决它.图形错误是linum-mode与渲染边缘之间冲突的结果.不幸的是,我无法解决linum.el中的问题,并且条纹显示代码是C源代码的一部分.

它仍然可以完成!解决问题的最简单方法是关闭边缘.

M-x fringe-mode RET none RET
Run Code Online (Sandbox Code Playgroud)

为了使边缘永久保持关闭,我建议自定义设置,M-x customize-group RET fringe因为一些编译版本的Emacs for Mac OS X有自己的边缘设置,可以覆盖.emacs文件的部分.

我真的不需要那些换行指示器,所以没有条纹不会打扰我.但是,我确实错过了行号和缓冲区文本之间的轻微分离.我按照Emacs Wiki上的一篇文章的建议来恢复这个间距.在linum的0.9x版本中,更改第160行

(setq width (max width (length str)))
Run Code Online (Sandbox Code Playgroud)

(setq width (max width (+ (length str) 1)))
Run Code Online (Sandbox Code Playgroud)

这一变化的灵感来自:http://www.emacswiki.org/emacs/LineNumbers

源链接上有参数来设置linum-format变量而不是修改linum.el.虽然我了解它们的来源,但是现在大多数颜色主题都会为额外的空间着色,而不是提供我正在寻找的东西(大约是一个背景颜色的空间).如果你编辑linum.el,请确保运行

M-x emacs-lisp-byte-compile-and-load
Run Code Online (Sandbox Code Playgroud)

使更改持久化.您可以通过查看此处的图片中光标前的空格来查看结果:http://i.stack.imgur.com/TxyMr.png(我没有足够的声誉来嵌入图像).

没有更多的图形工件!


Jer*_*ock 8

我有同样的问题,我想出了一个解决方案,虽然它不是最漂亮的,由于行号左边有一个额外的空间,它比改变linum.el更优雅.这是〜/ .emacs的相关部分:

;; Linum mode                                                                                                                                                                                                                           
(global-linum-mode t)                                                                                                                                                                                                                   
;; Offset the number by two spaces to work around some weird fringe glitch                                                                                                                                                                     
(setq linum-format "  %d ")
Run Code Online (Sandbox Code Playgroud)

这消除了边缘覆盖问题,除了抵消行号之外没有任何其他影响.