Étant donné la configuration de modeline suivante:
(setq-default mode-line-format
(list
;; Current buffer name
"%b "
;; Major mode
"[%m] "
;; Modified status
"[%*] "
;; Cursor position
"Line: %l/%i Column: %c"))
J'aimerais que le dernier élément apparaisse aligné à droite.
mode-line-format
ce n'est pas une bonne réponse, maissmart-mode-line
aligne le droitmode-line-misc-info
par défaut, et il peut aligner à droite la liste des modes mineurs en définissantsml/mode-width
sur'right
.Réponses:
Comme la réponse dans les commentaires, vous pouvez le faire vous-même en écrivant du code pour renvoyer une chaîne bien espacée.
Voici un moyen simple qui prend en charge uniquement le texte aligné à gauche et à droite appliqué à vos spécifications.
cela finit par ressembler à ceci:
Notez également que j'ai utilisé vos arguments de format de ligne de mode comme vous l'avez spécifié, mais je pense que vous utilisez incorrectement% i, ce qui affiche la taille en octets du tampon, pas le nombre de lignes. Vous pouvez utiliser quelque chose comme
(line-number-at-pos (point-max))
pour obtenir le nombre de lignes dans votre tampon.la source
window-total-width
pour calculer également le rembourrage supplémentaire du linum et des franges.%
caractères signifiant tenteront d'être formatés deux fois. Tenu compte de cela dans ma réponse, emacs.stackexchange.com/a/37270/2418 - utilisez égalementwindow-total-width
(merci!)Pour développer la réponse de @ jordon-biondo et résoudre un bug apparaissant
%
.Cet exemple montre comment les variables de ligne en mode mode peuvent être utilisées avec l'alignement - ce qui m'a pris un certain temps à comprendre.
Exemple de sortie:
init.el 1 : 0 <N> [-] Top -F1 (Emacs-Lisp WK ivy drag AC GitGutter)
la source
Ce n'est pas pris en charge prêt à l'emploi, mais le
smart-mode-line
package le prend en charge. Vous pouvez soit utiliser ce package, ou s'il fait plus que ce que vous voulez, extraire uniquement les bits qui implémentent la fonctionnalité que vous demandez.la source
smart-mode-line
et les ajouter à mes dotemacs. Cela me demande de déterminer combien d'espace je veux à droite, mais c'est mieux que rien. À moins que quelqu'un ne poste un moyen de se débarrasser du comptage manuel des caractères, je n'accepterai pas de réponse, cependant.Bien qu'il soit possible de faire un alignement gauche / droite `` correct '', l'ajout d'une méthode alternative, car l'évaluation complète de la gauche et de la droite juste pour l'alignement est un peu lourd, lorsqu'il existe une alternative plus simple.
Si vous savez que vous n'avez besoin que d'un espace fixe à droite, vous pouvez remplir tous les caractères sauf N , cela fonctionne tant que la bonne taille est une longueur fixe.
Le formatage des chaînes
%12s
et similaire peut être utilisé pour garantir que la chaîne ne se redimensionne pas.Par exemple:
CMakeLists.txt [-] 1590, 0, 94%
Notez que cela ne fonctionne bien que si vous souhaitez afficher quelques éléments sur le côté droit, comme dans cet exemple - ligne / colonne / pourcentage. Afficher tous les modes mineurs, par exemple, ne fonctionnerait pas bien.
la source