Stellen Sie den Prozentsatz für die Anzeige der Moduszeile ein und nicht "Oben / Unten / Alle".

9

Mode - Line ‚s %pzeigt den Prozentsatz der aktuellen Ansicht des Puffers:

% p Der Prozentsatz des Puffertextes über dem oberen Fensterrand oder 'Oben', 'Unten' oder 'Alle'. Beachten Sie, dass das Linienkonstrukt im Standardmodus dies auf drei Zeichen abschneidet.

Ich mag das Top / Bottom / All nicht und möchte immer den Prozentsatz anzeigen. Gibt es einen Weg, dies zu erreichen?

ClojureMostly
quelle
2
Ich bin gespannt warum. Topbedeutet 0%. Bottombedeutet 100%. Allbedeutet 100% und die Oberseite ist auch sichtbar. Sie können mit der Moduszeile so ziemlich alles machen, was Sie möchten, aber in diesem Fall wäre es ein Schmerz, mit diesem Affen zu spielen. Beachten Sie, dass Sie die prozentuale Richtung leicht umkehren können - siehe %P(anstelle von %p).
Drew
3
Mein Gehirn wird nach einer Nummer suchen, wenn ich wissen möchte, wo ich bin. Wenn ich mich gelegentlich daran erinnern muss, dass es auch Top / Bottom sein kann, muss ich mich daran erinnern.
ClojureMostly
Eine Idee wäre es , die Puffer-Größe zu berechnen - das heißt, die Anzahl der Punkte - zwischen point-minund window-start, und , window-endund point-max, und , wenn gewünscht, die Größe des sichtbaren Puffers könnte in einkalkuliert werden - dh Punkten zwischen window-startzu window-end- diejenigen , Berechnungen könnten im Handumdrehen durchgeführt werden und würden die Leistung nicht beeinträchtigen, da sich der Punkt nicht bewegt. Diese Puffergrößenberechnungen könnten in Prozentsätze umgewandelt werden. Ich glaube, dies ist eine Antwort, aber ich lasse jemand anderes schreiben, weil ich andere Projekte haben heute auf meinem Teller.
Lawlist
Ich habe es nie wirklich nützlich gefunden, den Prozentsatz des Puffers oben zu kennen: \ IMHO ist es nützlicher, die aktuelle Zeile / die gesamten Zeilen zu kennen und schließlich zu wissen, dass der gesamte Inhaltspuffer angezeigt wird (wenn ich in der ersten Zeile bin). Nur meine Meinung, vielleicht ist es meine Erfahrung, die nicht breit genug ist.
Nsukami _

Antworten:

5

Hier ist ein Beispiel, wie Sie so etwas tun können. Beachten Sie jedoch, dass genau das angezeigt wird, wonach Sie gefragt haben (Prozentsatz des Texts über dem Fenster), was wahrscheinlich nicht das ist, was Sie tatsächlich wollen. Zum Beispiel wird es nie angezeigt 100%, da sich immer Text im Fenster befindet.

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

Sie können auch verwenden window-end, was den gegenteiligen Nachteil hat (es zeigt fast nie 0 an).

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

Möglicherweise möchten Sie diese Zeichenfolgen mit Leerzeichen oder einer anderen Polsterung umgeben.

Malabarba
quelle
0

Die integrierte Code für %pnur Blicke auf window-startund point-maxund berechnet den Prozentsatz auf diese Weise. Sie können dies herausfinden C-h f format-mode-lineund dann dem Link zu den Emacs C-Quellen folgen (vorausgesetzt, Sie haben sie irgendwo in der Nähe).

Sie können also dasselbe mit einem :evalFormular in tun mode-line-format.

Tom Tromey
quelle
7
Können Sie Ihre Antwort erweitern, um die vollständige Lösung bereitzustellen?
Kaushal Modi