42 lines
1.3 KiB
EmacsLisp
42 lines
1.3 KiB
EmacsLisp
(defvar linum-current-line 1 "Current line number.")
|
|
(defvar linum-format-fmt "" " ")
|
|
(defvar linum-format "" " ")
|
|
|
|
(defface linum-current-line
|
|
`((t :inherit linum
|
|
:foreground "chocolate"
|
|
;; :weight bold
|
|
))
|
|
"Face for displaying the current line number."
|
|
:group 'linum)
|
|
|
|
(defadvice linum-update (before advice-linum-update activate)
|
|
"Set the current line."
|
|
(setq linum-current-line (line-number-at-pos)))
|
|
|
|
(unless window-system
|
|
(add-hook 'linum-before-numbering-hook
|
|
(lambda ()
|
|
(setq-local linum-format-fmt
|
|
(let ((w (length (number-to-string
|
|
(count-lines
|
|
(point-min)
|
|
(point-max))))))
|
|
(concat " %" (number-to-string w) "d "))))))
|
|
|
|
|
|
(defun linum-format-func (line)
|
|
(let ((face
|
|
(if (= line linum-current-line)
|
|
'linum-current-line
|
|
'linum)))
|
|
(propertize (format linum-format-fmt line) 'face face)))
|
|
|
|
(unless window-system
|
|
(setq linum-format 'linum-format-func))
|
|
|
|
(add-hook 'find-file-hook (lambda ()
|
|
(linum-mode 1)))
|
|
(add-hook 'eshell-mode-hook (lambda ()
|
|
(linum-mode -1)))
|