3

global-linum-mode行番号に使用しています。現在の行の行番号が別の色 (および/または別の背景) で強調表示されていると便利です。誰でもこれを達成する方法を知っていますか?

ありがとうございました!

4

3 に答える 3

8

Relative Line Numbers In Emacsに対する以前の回答からこの回答を導き出しました。これは、linum フォーマット プロセス中に現在の行番号を記憶するという同じ問題を扱っているためです。

linum顔から継承していますが、の背景色を使用していhl-lineます。前景と背景がうまく一致しない場合は、前景色を明示的に割り当てることができます
M-x 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て好みの幅を設定します)。

于 2012-05-15T01:40:30.963 に答える
7

hlinum拡張で実現できます。

(require 'hlinum)
(hlinum-activate)

linum-highlight-face背景色と前景色をカスタマイズするように変更できます。

于 2013-09-25T05:01:06.560 に答える
2

行番号についてはわかりませんがglobal-hl-line-mode、現在の行を強調表示するために使用できます。

于 2012-05-14T22:27:46.087 に答える