Относительные номера строк в Emacs

Кто-нибудь знает, как, если что-то вроде этого Относительных номеров строк Vim существует для emacs? Я использую vimpulse, и, черт возьми, это было бы очень удобно! Я кое-что знаю, так что, если нет, я мог бы попытаться создать свой собственный, если у меня есть точка зрения в правильном направлении.

Обновление : Благодаря правильному ответу я придумал такой, который покажет 1 для текущей строки и -1 для предыдущей строки, для объединения с vimpulse yanks и удалениями.

Большое спасибо всем, кто помог! Я знаю, что это не совсем то, что делает Vim, но что хорошего в относительных номерах строк в vim, которые начинаются с нуля? Глупый vim.

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

(setq linum-format 'my-linum-relative-line-numbers)

(defun my-linum-relative-line-numbers (line-number)
  (let ((test2 (1+ (- line-number my-linum-current-line-number))))
    (propertize
     (number-to-string (cond ((<= test2 0) (1- test2))
                             ((> test2 0) test2)))
     'face '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)

21
задан phils 13 March 2012 в 13:08
поделиться