Mode - Line ‚s %p
zeigt 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?
Top
bedeutet 0%.Bottom
bedeutet 100%.All
bedeutet 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
).point-min
undwindow-start
, und ,window-end
undpoint-max
, und , wenn gewünscht, die Größe des sichtbaren Puffers könnte in einkalkuliert werden - dh Punkten zwischenwindow-start
zuwindow-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.Antworten:
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.Sie können auch verwenden
window-end
, was den gegenteiligen Nachteil hat (es zeigt fast nie 0 an).Möglicherweise möchten Sie diese Zeichenfolgen mit Leerzeichen oder einer anderen Polsterung umgeben.
quelle
Die integrierte Code für
%p
nur Blicke aufwindow-start
undpoint-max
und berechnet den Prozentsatz auf diese Weise. Sie können dies herausfindenC-h f format-mode-line
und 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
:eval
Formular in tunmode-line-format
.quelle