目前,我启用了 linum 模式和空白模式的缓冲区如下所示:
如何配置 linum 区域以不呈现空白符号?
观察:行号右侧不需要空格(如问题所示),因为可以使用边缘宽度来控制行号与正文之间的分隔。
(setq-default left-fringe-width 10)
(setq-default right-fringe-width 0)
(set-face-attribute 'fringe nil :background "black")
选项#1:但是,这不是正确的。
(setq linum-format "%d")
选项#2:使用前导零——是右对齐。
(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)))
您可以改进@lawlists 第二种解决方案,但不是使用 0 作为空格替换,而是可以使用一些奇特的空格,例如 en-space 这将是"\u2002"
. 因为我们没有使用看起来像空格但whitespace
不会弄乱它的比例字体。
我实际上正在使用linum-relative-mode
您可以方便地提供建议的地方linum-relative
:
(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)))))