2011-11-18 9 views
12

デフォルトのEmacsのモデルラインは、現在の行番号とそのパーセントを行の総数に対して表示します。どのようにしてラインの合計も表示させるにはどうすればよいですか?Emacsのモデルラインの総数を表示するには

+0

パフォーマンス/スピードの向上を得るために 'count-lines'の代わりに'(format-mode-line "%l") 'を使用するこの関連スレッドの代替回答を参照してください:http:// emacs .stackexchange.com/a/26724/2287 – lawlist

答えて

12

これはちょっと難しいかもしれません。なぜなら、行数を常に更新して大きなバッファを持っていると、何度も行数をカウントしているので、Emacsがいくらか反応しなくなるからです。私はこれを書いて、カウントに怠け者のアプローチをとるようにしています。ファイルを保存/元に戻した後、最初に読み込んだときだけです。バッファが変更されている場合、行数が表示されず、再度保存するまで表示されません。

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

あなたはもちろん、あなたの好みに合わせてmode-line-formatを調整したいかもしれませんが、上記の私が個人的に好むものです。

+0

それはうまくいく、thx =) – dkiyatkin

関連する問題