如何在Emacs中为一个linum设置颜色?

时间:2018-05-24 08:43:43

标签: emacs edit

我知道我们可以(set-face-foreground 'linum "your-favorite-color"),但是如果我只想设置一个行号而不是所有行号。我怎么能这样做?

1 个答案:

答案 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)))