在whitespace-mode中更改字符的颜色

15

我最近从Geany转到Emacs,我想将Emacs中的空格字符定制为与Geany中的字符相似。

在Geany中,圆点非常小而且是灰色的:

带有 Geany 的示例代码

在Emacs中,圆点更大且为白色:

带有 Emacs 的示例代码

我发现Geany中的圆点对眼睛更轻松。

解决方案

我从我的 .emacs 文件中注释了 (setq whitespace-style (quote (spaces tabs newline space-mark tab-mark newline-mark))) 后问题得以解决:

;; make whitespace-mode use just basic coloring
;;(setq whitespace-style (quote (spaces tabs newline space-mark tab-mark newline-mark)))
(setq whitespace-display-mappings
  ;; all numbers are Unicode codepoint in decimal. ⁖ (insert-char 182 1)
  '(
    (space-mark 32 [183] [46]) ; 32 SPACE 「 」, 183 MIDDLE DOT 「·」, 46 FULL STOP 「.」
    (newline-mark 10 [182 10]) ; 10 LINE FEED
    (tab-mark 9 [9655 9] [92 9]) ; 9 TAB, 9655 WHITE RIGHT-POINTING TRIANGLE 「▷」
    ))
空格字符现在看起来正如预期的那样。

你可以将 face 添加到 whitespace-style 列表中,而不是注释掉这一行。 - user519736
1个回答

14

尝试使用M-x customize-face RET whitespace-space RET

(也许可以从前景颜色为gray30开始,然后进行调整。)

在elisp中,可以这样实现:

(set-face-attribute 'whitespace-space nil :background nil :foreground "gray30")

(您使用的可能是比这个小的点,但我不知道那会是什么。)


1
感谢您的帮助。不幸的是,M-x customize-face RET whitespace-space RET 并将颜色设置为浅灰色并没有改变任何东西。这些点仍然是纯白色的。 - Mathieu
@Mathieu:只是为了确认,您在更改颜色后是否点击了“应用”按钮? - legoscia
我怀疑你正在使用的颜色主题可能存在冲突,因为在默认配置下应该可以正常工作(请使用“emacs -Q”进行测试)。但是,如果你将光标放在一个空格上(在你当前的配置中),然后输入“C-u C-x =”,你就可以看到正在使用哪些面(如果有必要,可以自定义它们)。 - phils
1
lawlist:您可以在注释中使用\转义反引号。需要在反斜杠前加上一个反斜杠。 - phils
另外,我理解你提出的解决方案不使用空格模式,这样对于这个问题来说并不直接相关?如果没有更合适的问答,你可以自己提问并回答(例如,“如何在不使用空格模式的情况下显示空格?”),然后在这里留下一个评论链接。 - phils
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接