2011-11-18 25 views
12

Varsayılan Emacs modeli yalnızca geçerli satır sayısını ve toplam satır numaralarına göre yüzdesini gösterir. Satır toplamını da nasıl gösterebilirim?Emacs modeline ait toplam satır sayısını nasıl görüntülerim?

+0

Performans/hızda bir artış elde etmek için 'count-lines' yerine' (format-mode-line "% l") 'işlevini kullanan ilgili konudaki alternatif yanıtı görün: http: // emacs .stackexchange.com/a/26724/2287 – lawlist

cevap

12

Bu biraz zor olabilir, çünkü satır sayısını her zaman güncelleştirirseniz ve büyük bir arabelleğe sahip olursanız, Emacs'i satırları tekrar tekrar saydığından biraz yanıt vermez. Bunu saymaya tembel bir yaklaşımla yazdım: Sadece dosyayı ilk okuduğunda veya kaydettikten sonra geri yükler. Tampon değiştirilirse, satır sayısı hakkında yalan söylenmez, tekrar kaydedinceye kadar gösterilmez.

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

Elbette sizin zevkinize uygun mode-line-format ayarlamak isteyebilirsiniz, yukarıda şahsen tercih budur.

+0

iyi çalışıyor, thx =) – dkiyatkin

İlgili konular