Faire le pourcentage d'affichage de la ligne de mode et non «Haut / Bas / Tout»

9

Ligne Mode de » %ples affiche le pourcentage de la vue actuelle de la mémoire tampon:

% p Pourcentage du texte du tampon au-dessus du haut de la fenêtre, ou 'Haut', 'Bas' ou 'Tout'. Notez que la construction de ligne de mode par défaut tronque cela à trois caractères.

Je n'aime pas le haut / bas / tout et je voudrais toujours afficher le pourcentage. Existe-t-il un moyen d'y parvenir?

ClojureMostly
la source
2
Je suis curieux de savoir pourquoi. Topsignifie 0%. Bottomsignifie 100%. Allsignifie 100% et le haut est également visible. Vous pouvez faire à peu près tout ce que vous aimez sur la ligne de mode, mais dans ce cas, ce serait pénible pour le singe avec cela. Notez que vous pouvez facilement inverser la direction du pourcentage - voir %P(au lieu de %p).
Drew
3
Mon cerveau va chercher un chiffre quand je veux savoir où je suis. Quand je dois parfois me souvenir que cela peut aussi être Haut / Bas, je dois m'en souvenir.
ClojureMerly
Une idée serait de calculer la taille de la mémoire tampon - c'est-à-dire, le nombre de points - entre point-minet window-start, et window-endet point-max, et si vous le souhaitez, la taille de la mémoire tampon visible pourrait être prise en compte - c'est-à-dire, les points entre window-startà window-end- ceux les calculs peuvent être effectués en un clin d'œil et n'affectent pas les performances car le point ne bouge pas. Ces calculs de taille de tampon pourraient être transformés en pourcentages. Je crois que c'est une réponse, mais je vais laisser quelqu'un d'autre l'écrire parce que j'ai d'autres projets dans mon assiette aujourd'hui.
lawlist
Je n'ai jamais vraiment trouvé utile de connaître le pourcentage de tampon ci-dessus: \ IMHO connaissant la ligne actuelle / total_lignes, et finalement, sachant que TOUT le tampon de contenu est affiché (lorsque je suis sur la première ligne) est plus utile. Juste mon avis, c'est peut-être mon expérience qui n'est pas assez large.
Nsukami _

Réponses:

5

Voici un exemple de la façon dont vous pouvez faire quelque chose comme ça. Notez, cependant, qu'il affiche exactement ce que vous avez demandé (pourcentage de texte au-dessus de la fenêtre), ce qui n'est probablement pas ce que vous voulez réellement. Par exemple, il ne s'affiche jamais 100%, car il y aura toujours du texte à l'intérieur de la fenêtre.

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

Vous pouvez également utiliser window-end, ce qui présente l'inconvénient inverse (il n'affiche presque jamais 0).

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

Vous souhaiterez peut-être entourer ces chaînes avec des espaces ou un autre rembourrage.

Malabarba
la source
0

Le code intégré pour %pregarde juste window-startet point-maxet calcule le pourcentage de cette façon. Vous pouvez le découvrir en utilisant C-h f format-mode-linepuis en suivant le lien vers les sources Emacs C (en supposant que vous les ayez quelque part).

Vous pouvez donc faire la même chose en utilisant un :evalformulaire dans mode-line-format.

Tom Tromey
la source
7
Pouvez-vous développer votre réponse pour fournir la solution complète?
Kaushal Modi