右线对齐linum模式?

时间:2010-09-02 11:27:01

标签: emacs elisp

我希望我的linum-mode编号是正确对齐的。我发现最接近的是emacswiki,但它不起作用 - 似乎左对齐数字而不是右对齐它。 The snippet is found here。很抱歉可怕的缩进,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 个答案:

答案 0 :(得分:19)

您可以使用值'dynamic,这样您就不必选择任意数量的填充:

(custom-set-variables '(linum-format 'dynamic))

或者您也可以使用M-x customize-variable RET linum-format

对其进行自定义

此外,@ asmeurer询问如何使用dynamic在号码后面添加空格。没有简单的方法可以做到这一点,但可以使用defadvice围绕{I} 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))

答案 1 :(得分:4)

自定义变量linum格式,例如在7个字符的右侧对齐:

(custom-set-variables '(linum-format (quote "%7d")))

答案 2 :(得分:-2)

将linum.el和byte-compile-file更改为.elc。

对于emacs 23.3

linum.el的第143行

                  (concat "%" (number-to-string w) "d" " | ")))))

我将默认堡垒更改为“xxx |”。