Como programador, quero ver uma régua em uma coluna específica (geralmente 80), tanto para ver quando cruzo essa coluna, mas também para ver o quanto estou chegando perto para poder reformatar meu código mais cedo.
As opções que encontrei até agora nem todas estão atingindo esse objetivo:
whitespace-mode
,,column-enforce-mode
ecolumn-marker
realce apenas linhas individuais após o texto na linha já ter passado ofill-column
. Gostaria de ver quando estou chegando perto da coluna, não apenas quando a atravesso.fill-column-indicator
seria uma boa solução, exceto que ele quebraauto-complete-mode
,company-mode
,avy
, e muito mais. Esses são problemas que parecem difíceis de resolver, cada um exigindo uma solução individual - por exemplo, veja ocompany-mode
problema e oauto-complete-mode
problema , este último com mais de dois anos).
Existem alternativas melhores?
display
font-lock
programming
Jorgen Schäfer
fonte
fonte
(set-window-margins nil 0 (max (- (window-width) 80) 0))
Portanto, se você tiver uma janela de 120 caracteres, ela reduzirá o espaço necessário para exibir o código para 80 caracteres. Dessa forma, não atrapalhará a configuração da janela e você poderá desativá-la, se desejar. Se você tiver franjas, na verdade haverá uma linha desenhada em 80 colunas.Respostas:
fill-column-indicator
é a solução mais madura e, se você encontrar um código baseado em sobreposição com o qual entra em conflito, poderá adicionar um código para suspenderfci-mode
enquanto o código conflitante estiver ativo. Por exemplo, o código a seguir faz com que funcioneauto-complete
:fonte
company-mode
.popup-create
epopup-delete
- dependendo do seu caso de uso, pode ser necessário aconselhar funções diferentes.Aqui está uma opção mais robusta: ela quebra quase nada (ocasionalmente o modo empresa é uma exceção notável), mas não é tão conveniente quanto
fill-column-indicator
.Use o formato de linha de cabeçalho para marcar a 80ª coluna no cabeçalho.
Algo como o seguinte deve ser suficiente:
Você deve alterar o número de espaços nessa primeira sequência, dependendo do tamanho da sua margem esquerda. Mas, fora isso, isso deve funcionar razoavelmente bem. Não é tão conveniente quanto uma régua no buffer real, mas ajuda.
Você também pode configurá-lo para aplicar apenas em buffers de programação.
Resultado:
você deve obter algo como o seguinte (a primeira linha não está realmente no buffer, mas no cabeçalho).
fonte
M-x ruler-mode
.Depois de muito sofrimento por causa de vários erros
fill-column-indicator
introduzidos, eliminei-o da minha configuração para sempre.O que eu uso atualmente é a funcionalidade interna do Emacs para destacar linhas muito longas. Parece ainda melhor, eu não ativaria
fill-column-indicator
agora, mesmo que estivesse livre de erros.Para começar, você pode pegar minha configuração:
Em seguida, ative-o onde quiser. Eu o uso apenas no contexto de programação:
fonte
O Emacs 27 oferecerá suporte nativo a um indicador de coluna de preenchimento por meio do modo secundário local de buffer
display-fill-column-indicator-mode
e sua contrapartida globalglobal-display-fill-column-indicator-mode
.Aqui está em ação:
Quoth
(emacs) Displaying Boundaries
:fonte
Esta página do EmacsWiki possui muitas informações sobre diferentes maneiras de marcar uma coluna específica ou informar quando você a passa.
O que eu uso é a Posição da linha de modo .
Mas outros incluem mostrando uma linha vertical na coluna ( Coluna marcador , Encha-Column Indicator ) e utilizando o modo de espaço em branco para realçar o texto que vai além da coluna.
(Se você precisar que a linha esteja à direita de todo o texto em todas as linhas, sempre poderá ativar
picture-mode
, mas isso provavelmente é útil aqui apenas como uma solução temporária.)Consulte também Encontrar linhas longas para obter maneiras de encontrar linhas longas sob demanda.
fonte
Não exatamente o que você deseja, mas uma régua como @ Malabarba ♦ desperdiçará espaço, eis a melhor solução:
Existe um pacote embutido no
emacs-goodies-el
(recomendo instalá-lo no terminal) chamado realce-além-da-coluna-de-preenchimento.el , adicione-o ao seu.emacs
ouinit.el
:O texto além do
fill-column
qual é 80 no trecho será destacado com a cor dered
. Você pode definir o rosto como quiser.fonte
Como
fill-column-indicator
é bastante pesada, esta solução mostra um caractere à direita da linha atual.Portanto, ao digitar, você pode ver o limite da linha antes de exceder.
Isso define o modo secundário
hl-line-margin-mode
:Se você usar
evil-mode
e quiser limitar isso ao modo de inserção, poderá adicionar os seguintes ganchos:fonte