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

时间:2011-02-07 10:30:27

标签: emacs

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

"Tearing" of numbers in linum-mode

如果我在屏幕上滚动撕裂的行号并重新登录,问题就会消失。

5 个答案:

答案 0 :(得分:11)

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

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

M-x fringe-mode RET none RET

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

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

更改第160行
(setq width (max width (length str)))

(setq width (max width (+ (length str) 1)))

此更改的灵感来自:http://www.emacswiki.org/emacs/LineNumbers

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

M-x emacs-lisp-byte-compile-and-load

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

没有更多图形工件!

答案 1 :(得分: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 ")

这会消除边缘叠加问题,除了抵消行号之外没有任何其他影响。

答案 2 :(得分:0)

这就是我在.emacs设置的方式,我没有遇到问题,虽然我也没有使用带有gtk或任何其他gui的emacs。

  

(linum-mode +1)

     

(setq linum-format“%d”)

您可能想要使用(setq linum-format)进行攻击,看看是否可以获得良好的效果。另外,请不要忘记浏览emacswiki on linum

答案 3 :(得分:0)

要在行号和缓冲区文本之间进行分隔,以下更改会更好:

在linum版本0.9x中,从

更改第150行

(concat“%”(数字到字符串w)“d”)))))

(concat“%”(数字到字符串w)“d”)))))

这使得分色与行号'具有相同的背景颜色。

答案 4 :(得分:0)

问题仍然存在于emacs 24.4,OS X 10.10.1上。 我制定的解决方案: 加载您选择的主题后:

(load-theme 'whatever)
(set-face-attribute 'fringe nil :background (face-background 'default))