2011-11-18 4 views
12

기본 이맥스 모델 라인은 현재 줄 번호와 전체 줄 수에 대한 백분율 만 표시합니다. 줄의 합계도 어떻게 표시합니까?이맥스 모델 라인의 총 줄 수를 어떻게 표시합니까?

+0

성능/속도 향상을 위해'count-lines' 대신'(format-mode-line "% l")'을 사용하는이 관련 스레드에서 대안을보십시오 : http : // emacs .stackexchange.com/a/26724/2287 – lawlist

답변

12

라인 수를 항상 업데이트하고 커다란 버퍼를 가지고 있으면 행 수가 계속해서 계산되므로 이맥스가 다소 반응하지 않을 수 있기 때문에 다소 까다로울 수 있습니다. 저는 카운팅에 게으른 접근법을 취하기 위해이 파일을 작성했습니다 : 파일을 저장하거나 되돌릴 때 파일을 처음 읽을 때만 수행합니다. 버퍼가 수정되면 행 수가 늘어나지 않고 다시 저장하기 만하면 표시되지 않습니다.

(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