我知道我们可以(set-face-foreground 'linum "your-favorite-color")
,但是如果我只想设置一个行号而不是所有行号。我怎么能这样做?
答案 0 :(得分:2)
linum-format
变量可以是“以行号作为参数调用的函数,并且应该计算为要在该行上显示的字符串。”所以你可以这样做。
您需要检查linum-update-window
函数的代码,以了解如何使用它。
以下内容未实现您的要求;它只是如何使用这些机制的一个例子。
另请注意,Emacs 26.1即将发布,它为linum
提供了一种全新的(并且效率更高)替代方案;因此,如果您计划升级到Emacs 26,那么您可能不应该在linum
上花费太多时间。
(defvar my-linum-format-string "%4d")
(add-hook 'linum-before-numbering-hook 'my-linum-get-format-string)
(defun my-linum-get-format-string ()
(let* ((width (length (number-to-string
(count-lines (point-min) (point-max)))))
(format (concat "%" (number-to-string width) "d")))
(setq my-linum-format-string format)))
(setq linum-format 'my-linum-format)
(defun my-linum-format (line-number)
(propertize (format my-linum-format-string line-number) 'face 'linum))
我仍然不确定你想要实现的目标,但你可以在linum格式函数中测试行号,并根据你的意愿改变格式......
(defun my-linum-format (line-number)
(propertize (format my-linum-format-string line-number)
'face (if (eq line-number 42)
'linum-froody
'linum)))