Dada la siguiente configuración de modeline:
(setq-default mode-line-format
(list
;; Current buffer name
"%b "
;; Major mode
"[%m] "
;; Modified status
"[%*] "
;; Cursor position
"Line: %l/%i Column: %c"))
Me gustaría que el último elemento aparezca alineado a la derecha.
mode-line-format
esta no es una respuesta adecuada, perosmart-mode-line
alinea a la derechamode-line-misc-info
de manera predeterminada, y puede alinear a la derecha la lista de modos menores configurandosml/mode-width
a'right
.Respuestas:
Al igual que la respuesta en los comentarios, puede hacerlo usted mismo escribiendo código para devolver una cadena bien espaciada.
Aquí hay una manera simple que solo admite texto alineado a izquierda y derecha aplicado a sus especificaciones.
termina luciendo así:
También tenga en cuenta que usé sus argumentos de formato de línea de modo como especificó, pero creo que está usando% i incorrectamente, que imprime el tamaño de bytes del búfer, no el número de líneas. Puede usar algo como
(line-number-at-pos (point-max))
obtener el número de líneas en su búfer.fuente
window-total-width
para calcular también linum y flecos rellenos adicionales.%
caracteres significantes intentarán formatearse dos veces. Tomé en cuenta esto en mi respuesta, emacs.stackexchange.com/a/37270/2418 - también usowindow-total-width
(¡gracias!)Para ampliar la respuesta de @ jordon-biondo y resolver un error que muestra
%
.Este ejemplo muestra cómo las variables de línea de modo de modo se pueden usar con la alineación, lo que me llevó un tiempo descubrir.
Salida de ejemplo:
init.el 1 : 0 <N> [-] Top -F1 (Emacs-Lisp WK ivy drag AC GitGutter)
fuente
Esto no es compatible de fábrica, pero el
smart-mode-line
paquete sí lo admite. Puede usar ese paquete o, si hace más de lo que desea, extraer solo los bits que implementan la función que está solicitando.fuente
smart-mode-line
y agregándola a mis dotemacs. Requiere que averigüe cuánto espacio quiero a la derecha, pero es mejor que nada. Sin embargo, a menos que alguien publique una manera de deshacerse del conteo manual de caracteres, no aceptaré una respuesta.Si bien es posible hacer una alineación 'correcta' izquierda / derecha agregando un método alternativo porque evaluar completamente la izquierda y la derecha solo para la alineación es un poco pesado, cuando hay una alternativa más simple.
Si sabe que solo necesita una cantidad fija de espacio a la derecha, puede completar todos menos N caracteres, esto funciona siempre que el tamaño correcto sea una longitud fija.
El formato de cadena
%12s
y similares se pueden usar para garantizar que la cadena no cambie de tamaño.P.ej:
CMakeLists.txt [-] 1590, 0, 94%
Tenga en cuenta que esto solo funciona bien si desea mostrar algunos elementos en el lado derecho, como en este ejemplo: línea / columna / porcentaje. Mostrar todos los modos menores, por ejemplo, no funcionaría bien.
fuente