Dada a seguinte configuração de modelo:
(setq-default mode-line-format
(list
;; Current buffer name
"%b "
;; Major mode
"[%m] "
;; Modified status
"[%*] "
;; Cursor position
"Line: %l/%i Column: %c"))
Gostaria que o último item aparecesse alinhado à direita.
mode-line-format
resposta específica, essa não é uma resposta adequada, massmart-mode-line
alinha à direitamode-line-misc-info
por padrão e pode alinhar à lista de modos secundários à direita, definindosml/mode-width
como'right
.Respostas:
Como a resposta nos comentários, você pode fazer isso sozinho escrevendo código para retornar uma string bem espaçada.
Aqui está uma maneira simples que suporta apenas o texto alinhado à esquerda e à direita aplicado às suas especificações.
acaba ficando assim:
Observe também que usei os argumentos do modo de linha de modo conforme você especificou, mas acredito que você esteja usando% i incorretamente, o que imprime o tamanho de byte do buffer, não o número de linhas. Você pode usar algo como
(line-number-at-pos (point-max))
para obter o número de linhas no seu buffer.fonte
window-total-width
para calcular também linum e franjas de almofadas adicionais.%
Caracteres significantes tentarão ser formatados duas vezes. Responsável por isso na minha resposta, emacs.stackexchange.com/a/37270/2418 - também usarwindow-total-width
(graças!)Para expandir a resposta de @jordon-biondo e resolver uma exibição de bug
%
.Este exemplo mostra como as variáveis de linha de modo de modo podem ser usadas com alinhamento - o que levou um tempo para descobrir.
Exemplo de saída:
init.el 1 : 0 <N> [-] Top -F1 (Emacs-Lisp WK ivy drag AC GitGutter)
fonte
Isso não é suportado imediatamente, mas o
smart-mode-line
pacote suporta isso. Você pode usar esse pacote ou, se ele fizer mais do que você deseja, extrair apenas os bits que implementam o recurso que você está solicitando.fonte
smart-mode-line
e adicionando-a às minhas dotemacs. Isso exige que eu descubra quanto espaço quero à direita, mas é melhor que nada. A menos que alguém poste uma maneira de se livrar da contagem manual de caracteres, eu não aceitarei uma resposta.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.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.
fonte