2010-09-02 25 views
9

Tôi muốn rằng số linum-mode của tôi được căn phải. Điều gần nhất tôi đã tìm thấy là trên emacswiki, nhưng nó không hoạt động - có vẻ như căn trái các chữ số thay vì phải căn chỉnh nó. The snippet is found here. Xin lỗi vì sự thụt lề khủng khiếp, lisp là người ngoài hành tinh đối với tôi :)Số dòng thẳng phải với chế độ 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))) 

Bất kỳ ý tưởng nào?

Trả lời

4

Customize biến Linum định dạng, ví dụ như sắp xếp ở bên phải trên 7 ký tự:

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

Tôi sẽ thích điều này nhiều hơn nếu nó được thực hiện động, nhưng một khi một tệp vượt qua 1000 dòng thì không sao cả. Cảm ơn! :) Tôi đã giải quyết cho '% 4d'. – monotux

18

Bạn chỉ có thể sử dụng giá trị 'dynamic vì vậy bạn không cần phải chọn một số tiền tùy ý của padding:

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

Hoặc bạn cũng có thể tùy chỉnh nó với: M-x customize-variable RET linum-format

Ngoài ra, @asmeurer hỏi làm thế nào để vẫn thêm khoảng trắng sau số với dynamic. Không có cách nào dễ dàng để làm điều đó, nhưng nó có thể được thực hiện bằng defadvice quanh linum-update-window chức năng mà tôi chuyển thể từ mã cho dynamic đó là đã có trong chức năng đó:

(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

Cảm ơn. Bạn cũng có thể thay đổi điều này bằng 'M-x customize'. – asmeurer

+1

Làm cách nào bạn có thể sử dụng tính năng động và vẫn thêm một khoảng trắng sau số này? Tôi chắc chắn rằng nó thẳng về phía trước, nhưng tôi vẫn còn khá mới để lisp. – asmeurer

+1

@asmeurer Tôi đã cập nhật câu trả lời của mình để hiển thị cách sử dụng 'defadvice' để vẫn thêm một dấu cách sau số. Và có, bạn có thể sử dụng 'tùy chỉnh' có liên quan đến' tập hợp biến tùy chỉnh'. – aculich

-2

thay đổi các linum.el và byte- biên dịch tệp thành .elc.

cho emacs 23,3

dòng 143 của linum.el

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

tôi thay đổi mặc định pháo đài để "xxx |".

+0

Thay đổi mã trực tiếp không phải là giải pháp dài hạn tốt trừ khi bạn định gửi bản vá ngược dòng mà bạn nghĩ sẽ được chấp nhận, nếu không khi cài đặt emacs của bạn được nâng cấp, bạn sẽ mất những thay đổi đó. Thay vào đó, trong tệp 'init.el' của bạn, bạn có thể thêm' defadvice' cho hàm 'linum-update-window', như [sửa đổi mới nhất cho câu trả lời của tôi] (http://stackoverflow.com/a/8470136/462302) cho thấy cách thực hiện. – aculich

Các vấn đề liên quan