【发布时间】:2011-06-22 15:44:39
【问题描述】:
我在我的 Emacs 中使用 linum-mode 得到这个图形错误。我尝试从 23 升级到 24(通过 git)并且我已经尝试过使用各种在线提供的二进制文件和我的家庭编译版本。我真正感兴趣的是从哪里开始诊断问题。
如果我将撕裂的行号滚动出屏幕并重新进入,问题就会消失。
【问题讨论】:
标签: emacs
我在我的 Emacs 中使用 linum-mode 得到这个图形错误。我尝试从 23 升级到 24(通过 git)并且我已经尝试过使用各种在线提供的二进制文件和我的家庭编译版本。我真正感兴趣的是从哪里开始诊断问题。
如果我将撕裂的行号滚动出屏幕并重新进入,问题就会消失。
【问题讨论】:
标签: emacs
我遇到了同样的问题,并花了很长时间试图解决它。图形错误是 linum 模式与边缘呈现方式之间发生冲突的结果。不幸的是,我无法解决 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(我没有足够的声誉来嵌入图像)。
没有更多的图形工件!
【讨论】:
我遇到了同样的问题,我想出了一个解决方案,虽然它不是最漂亮的,但由于行号左侧有一个额外的空间,它比更改 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 ")
这消除了边缘覆盖问题,除了偏移行号之外没有任何其他影响。
【讨论】:
为了区分行号和缓冲区文本,以下更改会更好:
在 linum 的 0.9x 版本中,将第 150 行从
(concat "%" (number-to-string w) "d")))))
到
(concat "%" (数字到字符串 w) "d ")))))
这使分隔具有与行号相同的背景颜色。
【讨论】:
这就是我在.emacs 中设置它的方式,我没有遇到问题,尽管我也不使用带有 gtk 或任何其他 gui 的 emacs。
(linum-mode +1)
(setq linum-format "%d")
你可能想用(setq linum-format) 来看看你是否能得到好的结果。也别忘了浏览emacswiki on linum。
【讨论】:
问题仍然存在于 emacs 24.4、OS X 10.10.1 上。 我制定的解决方案: 加载您选择的主题后:
(load-theme 'whatever)
(set-face-attribute 'fringe nil :background (face-background 'default))
【讨论】: