上色当前行号(Colorize current line number)

2019-06-24 11:03发布

我使用global-linum-mode的行号。 如果当前行的行数用不同的颜色(和/或还不同的背景)强调这将是很好。 任何人有一个想法如何实现这一目标?

谢谢!

Answer 1:

我得出这个答案我以前的答案相对行号在Emacs的 ,因为它与在亚麻格式进程记住当前行号的同一个问题的交易。

我是从继承linum脸,但是从使用的背景颜色hl-line 。 如果前景和背景不匹配很好,你可以明确地指定前景色
MX customize-face RET my-linum-hl RET

(require 'hl-line)

(defface my-linum-hl
  `((t :inherit linum :background ,(face-background 'hl-line nil t)))
  "Face for the current line number."
  :group 'linum)

(defvar my-linum-format-string "%3d")

(add-hook 'linum-before-numbering-hook 'my-linum-get-format-string)

(defun my-linum-get-format-string ()
  (let* ((width (1+ (length (number-to-string
                             (count-lines (point-min) (point-max))))))
         (format (concat "%" (number-to-string width) "d")))
    (setq my-linum-format-string format)))

(defvar my-linum-current-line-number 0)

(setq linum-format 'my-linum-format)

(defun my-linum-format (line-number)
  (propertize (format my-linum-format-string line-number) 'face
              (if (eq line-number my-linum-current-line-number)
                  'my-linum-hl
                'linum)))

(defadvice linum-update (around my-linum-update)
  (let ((my-linum-current-line-number (line-number-at-pos)))
    ad-do-it))
(ad-activate 'linum-update)

至于其他的答案,这是产生比默认的动态宽度更高效的dynamic格式,但你可以通过注释掉线使用一个静态的宽度最大速度(add-hook linum-before-numbering-hook 'my-linum-get-format-string) (并可选择修改的初始值my-linum-format-string来设置你的首选宽度)。



Answer 2:

它可以实现hlinum扩展。

(require 'hlinum)
(hlinum-activate)

你可以改变linum-highlight-face自定义背景色和前景色。



Answer 3:

我不知道行号,但可以使用global-hl-line-mode ,突出当前行。



文章来源: Colorize current line number
标签: emacs elisp