2010-09-02 30 views
9

我希望我的linum-mode編號是對齊的。我發現最接近的東西是在emacswiki上,但它不起作用 - 它似乎左對齊的數字而不是對齊它。 The snippet is found here。很抱歉的可怕的縮進,口齒不清是相當陌生的我:)將行號與linum模式對齊?

(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))) 

任何想法?

回答

4

自定義變量亞麻格式,例如對右對齊的7個字符:

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

如果它是動態完成的,我會更喜歡它,但是一旦文件傳遞了1000行,反正無所謂。謝謝! :)我解決了'%4d'。 – monotux 2010-09-03 17:03:08

18

您可以只使用值'dynamic,所以你不必選擇填充任意數量的:

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

或者你也可以自定義它:M-x customize-variable RET linum-format

此外,@asmeurer問如何與0號後仍添加一個空格。有沒有簡單的方法來做到這一點,但它可以使用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)) 
+0

謝謝。你也可以用'M-x customize'來改變它。 – asmeurer 2012-01-11 14:59:25

+1

如何使用動態使用並在數字之後仍然添加空格?我敢肯定它很簡單,但我仍然很lis lis。 – asmeurer 2012-01-11 15:11:02

+1

@asmeurer我更新了我的答案,以顯示如何使用'defadvice'在數字後面添加空格。是的,你可以使用與'custom-set-variables'有關的'customize'。 – aculich 2012-01-11 15:45:34

-2

變化linum.el和針對字節編譯文件爲.elc。

爲Emacs 23.3

線143 linum.el

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

我更改默認的堡壘,以 「XXX |」。

+0

直接更改代碼並不是一個好的長期解決方案,除非您要提交您認爲會被接受的上游補丁,否則當您的emacs安裝升級時,您將失去這些更改。相反,在你的'init.el'文件中,你可以爲'linum-update-window'函數添加'defadvice',就像[我最近編輯的答案](http://stackoverflow.com/a/8470136/462302 )顯示如何做。 – aculich 2012-01-11 15:50:59