Ligne Mode de » %p
les 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?
Top
signifie 0%.Bottom
signifie 100%.All
signifie 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
).point-min
etwindow-start
, etwindow-end
etpoint-max
, et si vous le souhaitez, la taille de la mémoire tampon visible pourrait être prise en compte - c'est-à-dire, les points entrewindow-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.Réponses:
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.Vous pouvez également utiliser
window-end
, ce qui présente l'inconvénient inverse (il n'affiche presque jamais 0).Vous souhaiterez peut-être entourer ces chaînes avec des espaces ou un autre rembourrage.
la source
Le code intégré pour
%p
regarde justewindow-start
etpoint-max
et calcule le pourcentage de cette façon. Vous pouvez le découvrir en utilisantC-h f format-mode-line
puis 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
:eval
formulaire dansmode-line-format
.la source