Embora seja possível fazer o alinhamento esquerdo / direito 'correto', adicione um método alternativo, porque avaliar completamente a esquerda e a direita apenas para o alinhamento é um pouco pesado, quando existe uma alternativa mais simples.
Se você souber que precisa apenas de uma quantidade fixa de espaço à direita, poderá preencher todos os caracteres, exceto N , isso funcionará desde que o tamanho certo seja um comprimento fixo.
Formatação de string %12s
e similares podem ser usados para garantir que a string não seja redimensionada.
(defun mode-line-fill (face reserve)
"Return empty space using FACE and leaving RESERVE space on the right."
(when
(and window-system (eq 'right (get-scroll-bar-mode)))
(setq reserve (- reserve 3)))
(propertize " "
'display
`((space :align-to (- (+ right right-fringe right-margin) ,reserve)))
'face face
)
)
(setq-default
mode-line-format
(list
;; left align
"%e %b [%*]"
;; right align
(mode-line-fill 'mode-line 18)
"%6l, %4c, %8p"
)
)
)
Por exemplo:
CMakeLists.txt [-] 1590, 0, 94%
Observe que isso só funciona bem se você deseja exibir alguns itens no lado direito, como neste exemplo - linha / coluna / porcentagem. Mostrar todos os modos menores para, por exemplo, não funcionaria bem.