2011-11-18 5 views
12

La línea de modem Emacs predeterminada solo muestra el número de línea actual y su porcentaje en relación con los números de línea totales. ¿Cómo hago que muestre el total de la línea también?Cómo visualizo el número total de líneas en la línea de modem Emacs

+0

Consulte la respuesta alternativa en este hilo relacionado, que usa '(formato-modo-línea"% l ")' en lugar de 'count-lines' para recibir un aumento en el rendimiento/velocidad: http: // emacs .stackexchange.com/a/26724/2287 – lawlist

Respuesta

12

Esto puede ser un poco complicado, porque si actualiza el recuento de líneas todo el tiempo y tiene un gran búfer, puede hacer que Emacs deje de responder porque cuenta líneas una y otra vez. Escribí esto para adoptar un enfoque lento para contar: solo lo hace cuando el archivo se lee por primera vez o después de guardarlo/revertirlo. Si se modifica el búfer, no se trata del recuento de líneas, simplemente no se muestra hasta que se guarde de nuevo.

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

Es posible que desee ajustar mode-line-format a su gusto, por supuesto, lo anterior es lo que yo personalmente prefiero.

+0

funciona bien, thx =) – dkiyatkin

Cuestiones relacionadas