Rendi la percentuale di visualizzazione della riga di modalità e non "Alto / Basso / Tutto"


9

Linea modalità 's %pvisualizza la percentuale di visualizzazione corrente del buffer:

% p La percentuale del testo del buffer sopra la parte superiore della finestra o "In alto", "In basso" o "Tutto". Si noti che il costrutto di riga della modalità predefinita lo tronca a tre caratteri.

Non mi piace il Top / Bottom / All e vorrei visualizzare sempre la percentuale. C'è un modo per raggiungere questo obiettivo?


2
Sono curioso perché. Topsignifica 0%. Bottomsignifica 100%. Allsignifica 100% e anche la parte superiore è visibile. Puoi fare praticamente tutto ciò che ti piace sulla linea di modalità, ma in questo caso sarebbe una seccatura con questo. Nota che puoi invertire facilmente la direzione percentuale - vedi %P(invece di %p).
Ha

3
Il mio cervello cercherà un numero quando voglio sapere dove sono. Quando devo ricordare di tanto in tanto che potrebbe anche essere In alto / In basso, allora devo ricordarlo.
Clojure Principalmente il

Un'idea sarebbe quella di calcolare il buffer size - Per esempio, il numero di punti - tra point-mine window-started window-ende point-max, e se lo si desidera, la dimensione del buffer visibile potrebbe essere scomposto in - ossia punti tra window-starta window-end- quelle i calcoli potrebbero essere eseguiti in un batter d'occhio e non influirebbero sulle prestazioni perché il punto non si sposta. Quei calcoli delle dimensioni del buffer potrebbero essere trasformati in percentuali. Credo che questa sia una risposta, ma permetterò a qualcun altro di scriverla perché oggi ho altri progetti nel mio piatto.
elenco delle leggi del

Non ho mai trovato davvero utile conoscere la percentuale di buffer sopra: \ IMHO conoscendo la linea_corsa / total_line e, infine, sapere che TUTTO il buffer di contenuto viene visualizzato (quando sono sulla prima riga) è più utile. Solo la mia opinione, forse è la mia esperienza che non è abbastanza ampia.
Nsukami _

Risposte:


5

Ecco un esempio di come puoi fare qualcosa del genere. Nota, tuttavia, che visualizza esattamente ciò che hai richiesto (percentuale di testo sopra la finestra), che probabilmente non è quello che desideri effettivamente. Ad esempio, non viene mai visualizzato 100%, poiché all'interno della finestra sarà sempre presente del testo.

(setcar mode-line-position
        '(:eval (format "%3d%%" (/ (window-start) 0.01 (point-max)))))

Potresti anche usare window-end, che ha lo svantaggio opposto (non mostra quasi mai 0).

(setcar mode-line-position
        '(:eval (format "%3d%%" (/ (window-end) 0.01 (point-max)))))

Potresti voler circondare queste stringhe con spazi o qualche altra imbottitura.


0

Il built-in codice per %plo guarda window-starte point-maxe calcola la percentuale in questo modo. Puoi scoprirlo usando C-h f format-mode-linee quindi seguendo il link alle fonti di Emacs C (supponendo che tu li abbia da qualche parte).

Quindi, puoi fare la stessa cosa usando un :evalmodulo in mode-line-format.


7
Puoi espandere la tua risposta per fornire la soluzione completa?
Kaushal Modi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.