2011-11-18 27 views
12

Mô hình Emacs mặc định chỉ hiển thị số dòng hiện tại và tỷ lệ phần trăm của nó liên quan đến tổng số dòng. Làm thế nào để làm cho nó hiển thị tổng số dòng là tốt?Làm cách nào để hiển thị tổng số dòng trong mô hình Emacs

+0

Xem câu trả lời thay thế trong chuỗi liên quan này, sử dụng '(định dạng-mode-line"% l ")' thay vì 'count-lines' để nhận được tăng hiệu suất/tốc độ: http: // emacs .stackexchange.com/a/26724/2287 – lawlist

Trả lời

12

Điều này có thể hơi rắc rối, bởi vì nếu bạn cập nhật dòng đếm và có bộ đệm lớn, nó có thể làm cho Emacs hơi không hồi đáp vì nó đếm nhiều lần. Tôi đã viết điều này để có một cách tiếp cận lười biếng để đếm: nó chỉ làm điều đó khi tập tin đầu tiên được đọc trong hoặc sau khi bạn lưu/hoàn nguyên nó. Nếu bộ đệm được sửa đổi, nó không nói dối về số lượng dòng, nó chỉ đơn giản là không được hiển thị cho đến khi bạn lưu lại.

(defvar my-mode-line-buffer-line-count nil) 
(make-variable-buffer-local 'my-mode-line-buffer-line-count) 

(setq-default mode-line-format 
       '(" " mode-line-modified 
       (list 'line-number-mode " ") 
       (:eval (when line-number-mode 
         (let ((str "L%l")) 
          (when (and (not (buffer-modified-p)) my-mode-line-buffer-line-count) 
          (setq str (concat str "/" my-mode-line-buffer-line-count))) 
          str))) 
       " %p" 
       (list 'column-number-mode " C%c") 
       " " mode-line-buffer-identification 
       " " mode-line-modes)) 

(defun my-mode-line-count-lines() 
    (setq my-mode-line-buffer-line-count (int-to-string (count-lines (point-min) (point-max))))) 

(add-hook 'find-file-hook 'my-mode-line-count-lines) 
(add-hook 'after-save-hook 'my-mode-line-count-lines) 
(add-hook 'after-revert-hook 'my-mode-line-count-lines) 
(add-hook 'dired-after-readin-hook 'my-mode-line-count-lines) 

Bạn có thể muốn điều chỉnh mode-line-format cho phù hợp với sở thích của bạn tất nhiên, bên trên là những gì tôi thích.

+0

nó hoạt động tốt, thx =) – dkiyatkin

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