Modo de linha 's %p
exibe o percentuais da vista actual da memória intermédia:
% p A porcentagem do texto do buffer acima da parte superior da janela, ou 'Top', 'Bottom' ou 'All'. Observe que a construção da linha de modo padrão trunca isso para três caracteres.
Não gosto da parte superior / inferior / tudo e gostaria de exibir sempre a porcentagem. Existe uma maneira de conseguir isso?
Top
significa 0%.Bottom
significa 100%.All
significa 100% e o topo também é visível. Você pode fazer praticamente qualquer coisa que desejar na linha de modo, mas neste caso, seria uma dor de cabeça fazer isso. Observe que você pode reverter facilmente a direção da porcentagem - consulte%P
(em vez de%p
).point-min
ewindow-start
e,window-end
epoint-max
, e, se assim for desejado, o tamanho da memória intermédia visível pode ser tomada em - isto é, entre os pontoswindow-start
dewindow-end
- aqueles os cálculos poderiam ser feitos em um piscar de olhos e não afetariam o desempenho porque o ponto não se move. Esses cálculos de tamanho de buffer podem ser transformados em porcentagens. Acredito que seja uma resposta, mas deixarei que outra pessoa a escreva, porque tenho outros projetos em andamento hoje.Respostas:
Aqui está um exemplo de como você pode fazer algo assim. Observe, no entanto, que ele exibe exatamente o que você pediu (porcentagem de texto acima da janela), o que provavelmente não é o que você realmente deseja. Por exemplo, ele nunca é exibido
100%
, pois sempre haverá algum texto dentro da janela.Você também pode usar
window-end
, que tem a desvantagem oposta (quase nunca exibe 0).Você pode envolver essas cordas com espaços ou algum outro preenchimento.
fonte
A built-in de código para
%p
apenas olha parawindow-start
epoint-max
e calcula a porcentagem dessa forma. Você pode descobrir isso usandoC-h f format-mode-line
e seguindo o link para as fontes do Emacs C (supondo que você as tenha em algum lugar).Portanto, você pode fazer a mesma coisa usando um
:eval
formulário nomode-line-format
.fonte