Правильно выровнять номера линий с linum-mode?
Я хотел бы, чтобы мои linum-mode
нумерация выровнена по правому краю. Самое близкое, что я нашел, - это emacswiki, но это не работает-кажется,выравнивание по левому краю цифры вместо выровнять по правому краю его. фрагмент находится здесь. Извините за ужасный отступ, lisp довольно чужд мне:)
(setq linum-format
(lambda (line)
(propertize
(format
(let
((w (length (number-to-string (count-lines (point-min)
(point-max))))))
(concat "%" (number-to-string w) "d ")) line) 'face 'linum)))
какие идеи?
3 ответов
настройка переменной linum-format, например для выравнивания справа на 7 символов:
(custom-set-variables '(linum-format (quote "%7d")))
вы можете просто использовать значение 'dynamic
таким образом, вам не нужно выбирать произвольное количество заполнения:
(custom-set-variables '(linum-format 'dynamic))
или вы можете настроить его с: M-x customize-variable RET linum-format
кроме того, @asmeurer спросил, Как добавить пробел после числа с dynamic
. Нет простого способа сделать это, но это можно сделать с помощью defadvice
вокруг linum-update-window
функция, которую я адаптировал из кода для dynamic
это уже в этой функции:
(defadvice linum-update-window (around linum-dynamic activate)
(let* ((w (length (number-to-string
(count-lines (point-min) (point-max)))))
(linum-format (concat "%" (number-to-string w) "d ")))
ad-do-it))
измените linum.el и byte-compile-file to .эюк.
для emacs 23.3
строка 143 linum.el
(concat "%" (number-to-string w) "d" " | ")))))
Я меняю форт по умолчанию на " xxx/".