default Emacs Modeline mostra solo il numero di riga corrente e la percentuale rispetto ai numeri di riga totali. Come faccio a mostrare anche la linea totale?Come si può visualizzare il numero totale di righe nel Emacs Modeline
risposta
Questo può essere un po 'complicato, perché se si aggiorna il conteggio delle righe tutto il tempo e si dispone di un buffer di grandi dimensioni può rendere Emacs in qualche modo insensibile poiché esegue il conteggio delle righe più e più volte. Ho scritto questo di adottare un approccio pigro per il conteggio: lo fa solo quando il file viene prima letto o dopo aver salvato/ripristinare esso. Se il buffer viene modificato, non giace sul conteggio delle righe, semplicemente non viene mostrato finché non si salva di nuovo.
(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)
Si potrebbe desiderare di regolare mode-line-format
secondo i propri gusti, naturalmente, quanto sopra è quello che personalmente preferisco.
è un lavoro bene, thx =) – dkiyatkin
Vedere la risposta alternativa in questa discussione correlata, che usa '(formato-mode-line "% l")' invece di 'count-linee' per ricevere un incremento delle prestazioni/velocità: http: // emacs .stackexchange.com/a/26724/2287 – lawlist