我正在尝试使用this EmacsWiki page on Line Numbers(标题为 Linum:从文字中分隔行号)中的部分向Emacs linum.el
应用一些相当具体的自定义项引导。
我将编辑实施为 linum.el ,在行号的右侧添加了一个空格。我现在要弄清楚的是如何在行号的左边添加一个额外的空格,以便行号看起来像这样:
| 1 |#include <stdio.h> (Vertical bars for visualization)
| 2 |int main()
我想要完成的另一个定制包括在为行号着色背景时包含正确的空间。当我为 linum 面设置背景时,它不会为行号右侧的新空间着色。
为了说明,以下是 linum 背景当前的涵盖方式:
(current) |1| #!/bin/bash -- vs. --> |1 |#!/bin/bash (ideal)
|2| echo "123" ---------> |2 |echo "123"
我确实尝试通过盲目修补EmacsWiki中提供正确空间的线来实现前者(左上角),但没有成功。不幸的是,由于我对Emacs和Elisp有些新意,我的技能还没有达到我自己能够轻易改变的地方。
链接:
EmacsWiki:行号[部分 - Linum:从文本中分隔行号]
答案 0 :(得分:15)
我相信设置(setq linum-format "%d ")
会做你想要的。如果您还想要左侧的空格,请使用" %d "
作为格式。
答案 1 :(得分:4)
这样的事情可以为您提供有关您自己的自定义类型的任何想法吗?您可能更感兴趣的是设置条纹宽度,而不是改变行号右侧的空格。
(setq-default left-fringe-width 10)
(setq-default right-fringe-width 0)
(set-face-attribute 'fringe nil :background "white" :foreground "white")
;; (setq linum-format "%d") ;; alternative solution to intermittent line numbers
(custom-set-faces '(linum ((t (:foreground "pink" :background "white" :box nil)))) )
(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)
(propertize (make-string (- w (length (number-to-string line))) ? ) ;; change leading zero to a soft space
'face 'linum-leading-zero)
(propertize (number-to-string line) 'face 'linum))))
(setq linum-format 'linum-format-func)))
答案 2 :(得分:1)
如果你真的想像你说的那样,使用空格而不是@lawlist建议,在函数(number-to-string w)
中找到包含linum-update-window
的行并将其更改为:
(number-to-string (+ w 1))
此数字是打印行号的框的宽度,右对齐。
原始w
是最后一个行号中的位数。
答案 3 :(得分:0)
也许更简单的解决方案就是修复linum
脸部属性的大小,例如:
(set-face-attribute 'linum nil :height 140)
在您实际使用 linum-mode
之后,您可能需要将其连接起来:
(defun fix-linum-size ()
(interactive)
(set-face-attribute 'linum nil :height 140))
(add-hook 'linum-mode-hook 'fix-linum-size)