whitespace 的功能其实挺多的,我的配置:
(use-package whitespace
:hook (after-init . global-whitespace-mode)
:config
;; Don't use different background for tabs.
(face-spec-set 'whitespace-tab
'((t :background unspecified)))
;; Only use background and underline for long lines, so we can still have
;; syntax highlight.
;; For some reason use face-defface-spec as spec-type doesn't work. My guess
;; is it's due to the variables with the same name as the faces in
;; whitespace.el. Anyway, we have to manually set some attribute to
;; unspecified here.
(face-spec-set 'whitespace-line
'((((background light))
:background "#d8d8d8" :foreground unspecified
:underline t :weight unspecified)
(t
:background "#404040" :foreground unspecified
:underline t :weight unspecified)))
;; Use softer visual cue for space before tabs.
(face-spec-set 'whitespace-space-before-tab
'((((background light))
:background "#d8d8d8" :foreground "#de4da1")
(t
:inherit warning
:background "#404040" :foreground "#ee6aa7")))
(setq
whitespace-line-column nil
whitespace-style
'(face ; visualize things below:
empty ; empty lines at beginning/end of buffer
lines-tail ; lines go beyond `fill-column'
space-before-tab ; spaces before tab
trailing ; trailing blanks
tabs ; tabs (show by face)
tab-mark ; tabs (show by symbol)
)))
比较好的是能指示过长的行,这样都不需要装那种显示一条竖线的插件了。
再介绍一个:
subword
(use-package subword
:hook (after-init . global-subword-mode))
打开这个 mode 以后就能正确地处理驼峰命名中的单词了。