![whitespace 模式无法改变面貌](https://linux22.com/image/1381874/whitespace%20%E6%A8%A1%E5%BC%8F%E6%97%A0%E6%B3%95%E6%94%B9%E5%8F%98%E9%9D%A2%E8%B2%8C.png)
我正在使用 emacs prelude,并希望在保存时进行空白清理,但不想显示尾随空白,因为颜色与我的颜色主题不相配,但是,似乎我无法使用 customize-faces 自定义空白的面貌,即使我禁用了面貌,它仍然不起作用。有没有其他设置/功能可以更改空白面貌?或者我如何才能禁用空白突出显示,但仍在保存时保持清理
答案1
以下是我自己的.emacs
(又称用户自定义)设置。上面whitespace-style
是可以通过添加到 的定义中来激活的附加选项whitespace-style
。与使用 相比,我更喜欢与某些主要模式挂钩一起 global-whitespace-mode
使用。是一个函数(whitespace-mode t)
whitespace-cleanup
不是依赖于尾随空格的突出显示。
;; (global-whitespace-mode t)
(setq whitespace-display-mappings '(
(space-mark ?\ [?\u00B7] [?.])
(space-mark ?\xA0 [?\u00A4] [?_])
(newline-mark ?\n [?¶ ?\n])
(tab-mark ?\t [?\u00BB ?\t] [?\\ ?\t])
))
;; lines lines-tail newline trailing space-before-tab space-afte-tab empty
;; indentation-space indentation indentation-tab tabs spaces
(setq whitespace-style '(face space-mark tab-mark newline-mark) )
(setq whitespace-line-column 85)
(custom-set-faces
'(whitespace-space ((t (:bold t :foreground "gray75"))))
'(whitespace-empty ((t (:foreground "firebrick" :background "SlateGray1"))))
'(whitespace-hspace ((t (:foreground "lightgray" :background "LemonChiffon3"))))
'(whitespace-indentation ((t (:foreground "firebrick" :background "beige"))))
'(whitespace-line ((t (:foreground "black" :background "red"))))
'(whitespace-newline ((t (:foreground "orange" :background "blue"))))
'(whitespace-space-after-tab ((t (:foreground "black" :background "green"))))
'(whitespace-space-before-tab ((t (:foreground "black" :background "DarkOrange"))))
'(whitespace-tab ((t (:foreground "blue" :background "white"))))
'(whitespace-trailing ((t (:foreground "red" :background "yellow"))))
)
答案2
我自己不使用 Prelude;一般来说,我不推荐使用 Emacs“入门包”。它们倾向于以不总是显而易见或文档齐全的方式对编辑器进行大量自定义,然后您会遇到诸如自定义 whitespace-face 之类的问题,而这些本来应该非常简单。最好先学习 Emacs 的正确用法,然后根据自己的喜好组装自定义内容。
话虽如此,看看prelude/core/prelude-editor.el 的源代码,我发现:
(defcustom prelude-whitespace t
"Non-nil values enable Prelude's whitespace visualization."
:type 'boolean
:group 'prelude)
这强烈建议M-x customize-variable RET prelude-whitespace RET
,然后将值设置为nil
并应用更改,应该会产生您想要的行为。(修剪行为由单独的自定义变量控制。prelude-clean-whitespace-on-save
)