Como desativar o recuo automático de novas linhas?

37

Atualizei recentemente o emacs para a versão 24.4.1 e algo mudou na indentação de novas linhas. Quando pressiono enter, espero apenas o caractere de nova linha "nu" no ponto em que o cursor estava presente, especialmente se eu estiver no meio da linha, essa linha deve ser dividida e nenhum caractere deve ser excluído, incluindo espaços. Infelizmente, esse não é o caso.

Aqui está um exemplo:

a b

Quando coloco o cursor logo depois ae clico enter, recebo:

a
b

enquanto deveria ser

a
 b

Pesquisei um pouco no Google e provavelmente isso se deve à indentação automática. Como posso desabilitar isso? Estou falando de texto ou modo fundamental, se isso importa.

WeSenseASoulInSearchOfAnswers
fonte
7
Para a posteridade, tenho um comentário a acrescentar a isso. Muitos problemas de "atualização recente" podem ser resolvidos lendo a NEWS com M-x view-emacs-news(ou C-h n). Você pode ler o NEWS de qualquer versão anterior adicionando um prefixo arg. Ao visualizar o NEWS e fazer uma busca por "recuo", o primeiro resultado é extremamente semelhante à resposta de Drew. Apenas uma dica útil para qualquer problema relacionado a atualizações.
nanny

Respostas:

49

Desativar electric-indent-mode:

(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))

Isso funciona com qualquer versão do Emacs. Esse incômodo ou recurso novo e brilhante, dependendo do seu ponto de vista, foi introduzido como padrão no Emacs 24.4.

Veja também este post semelhante no StackOverflow.

(No entanto, parece que você está dizendo o contrário e que deseja RET recuar, mas não está obtendo esse recuo. O que mudou foi que RET("Enter") agora recua automaticamente e é necessário pressionar C-jpara obter apenas uma nova linha com nenhum recuo. Eles trocaram RETe C-j, com efeito. Se você deseja RETrecuar, o novo comportamento padrão deve fornecer o que você deseja. De qualquer forma, o modo é electric-indent-mode: ligue ou desligue conforme desejar.)

Desenhou
fonte
1

Existe a possibilidade de inserir um caractere de nova linha com C-q C-je há 3 comandos para dividir a linha: open-line C-o, split-line C-M-oeo newline RET, C-mque você usou. Se você posicionar o cursor como você disse após a atecla e pressionar, C-oa linha atual será interrompida após o cursor e todos os caracteres estarão na próxima linha. a linha dividida manterá a posição da coluna para que um espaço em branco extra seja inserido antes do conteúdo.

Hmm, interessante, com C-M-oa linha atual também fica em branco no final, de modo que as bposições do cursor e do cursor se alinham após a alteração.

No modo fundamental, C-jaltera o buffer de acordo com as suas expectativas na minha máquina e C-jé obrigado aelectric-newline-and-maybe-indent

p_wiersig
fonte