Como posso suprimir a exibição da nova linha final do emacs em um arquivo?


11

Uma das peculiaridades do vim é que ele não mostra uma linha vazia no final de um arquivo se o arquivo terminar com o caractere de nova linha. Dessa forma, se o arquivo não terminar com uma nova linha, a exibição será a mesma, apenas com o [noeol]marcador na modelagem.

O Emacs, por outro lado, exibe a última linha se o arquivo terminar com uma nova linha e, caso contrário, não.

Embora o comportamento do Emacs seja fundamentalmente mais sensível, para o bem ou para o mal, eu me acostumei com o primeiro.

Existe alguma maneira de suprimir a exibição da última linha vazia, embora ainda exija que o arquivo seja encerrado com nova linha?

Comportamento de nova linha do Emacs

A captura de tela mostra três janelas (veja a imagem na nova guia, se for muito pequena):

  1. Janela grande do emacs à esquerda hexl-mode, mostrando que realmente há uma nova linha no final do arquivo (0a, onde o cursor está posicionado).

  2. Janela Emacs no canto superior direito, com o cursor na terceira linha vazia.

  3. Janela Vim no canto inferior direito, com o cursor na última linha do texto. O cursor não pode se mover abaixo desse ponto, mesmo que o arquivo termine com uma nova linha (não há [noeol]marcador na linha de status do vim).


Como a nova linha é exibida? É exibido porque você tem algum modo secundário ativado? Será útil colocar um trecho de sua configuração que exibe as últimas novas linhas. Uma captura de tela disso também seria útil.
— Kaushal Modi

2
Por "exibição", não quero dizer que exista uma representação visual da nova linha. Simplesmente quero dizer que posso mover meu cursor para essa linha.
— sykora

Não foi possível reproduzir: imgur.com/IAoV7p9 Mesmo comportamento com emacs -Q, deve ser algo no seu arquivo init.
— T. Verron

Ou espere ... você quer dizer que não deseja poder passar para essa linha, mesmo que a linha exista? Segundo @kaushalmodi, capturas de tela do vim e do comportamento do emacs seriam úteis.
— T. Verron

3
@sykora Por favor, tente usar screenshots mínimos . Há muito espaço em branco redundante e excessivo na captura de tela, tornando-a muito maior do que precisa, o que torna a miniatura quase inútil, pois é muito pequena para ver o que está acontecendo. Ao tirar screenshots, redimensione as janelas para ajustá-las ao conteúdo.
— lunaryorn 29/09/14

Respostas:


1

Deixe-me dar uma sugestão horrível para implementar isso:

(defun make-eof-intangible ()
  (interactive)
  (add-hook 'post-command-hook (lambda ()
                                 (when (and (equal (point) (point-max))
                                            (looking-back "\n"))
                                   (backward-char))) t t))

(Estou usando um gancho local porque suspeito que configurá-lo globalmente pode atrapalhar seriamente as coisas, portanto, habilite-o melhor por buffer)


1

Provavelmente não é exatamente o que você deseja, mas pode ser útil.

  • Estou usando o linum-modemodo secundário em todos os meus buffers (definido (global-linum-mode t)no seu arquivo init). Isso mostra os números de linha apenas para as linhas que possuem um caractere de nova linha no final.

  • Outra coisa que você pode gostar é ativar whitespace-mode, por padrão, isso mostra $sinais em cinza nas linhas vazias, permitindo que você veja quais linhas estão vazias. Veja a página Wiki do Emacs aqui .

  • De maneira semelhante, a configuração indicate-empty-linespara tmostra onde está a última linha (consulte o manual para indicadores de franja aqui ).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.