目前启用了linum模式和空格模式的我的缓冲区如下所示:
如何配置linum区域以不渲染空格符号?
"\u2002"
。由于我们没有使用比例字体,这看起来就像是一个空格,但whitespace
不会干扰它。linum-relative-mode
,你可以方便地对linum-relative
进行advice:(advice-add 'linum-relative :filter-return
(lambda (num)
(if (not (get-text-property 0 'invisible num))
(propertize (replace-regexp-in-string " " "\u2002" num)
'face (get-text-property 0 'face num)))))
(setq-default left-fringe-width 10)
(setq-default right-fringe-width 0)
(set-face-attribute 'fringe nil :background "black")
(setq linum-format "%d")
(eval-after-load 'linum
'(progn
(defface linum-leading-zero
`((t :inherit 'linum
:foreground ,(face-attribute 'linum :background nil t)))
"Face for displaying leading zeroes for line numbers in display margin."
:group 'linum)
(defun linum-format-func (line)
(let ((w (length
(number-to-string (count-lines (point-min) (point-max))))))
(concat
(propertize (make-string (- w (length (number-to-string line))) ?0)
'face 'linum-leading-zero)
(propertize (number-to-string line) 'face 'linum))))
(setq linum-format 'linum-format-func)))
linum-format
函数效率低下(就像 linum 本身曾经一样,但已经被修复)。具体来说,你正在为屏幕上的每一行重新生成格式——运行(count-lines (point-min) (point-max))
。请参考 https://dev59.com/3GbWa4cB1Zd3GeqPTRx2#11496199 以获取如何解决此问题的示例。 - phils