Desative completamente o recuo automático do Emacs no modo JavaScript


5

Tentei desativar o recuo automático no Emacs em JavaScript por três horas e não consegui encontrar uma solução (boa).

Minha versão do Emacs é 23.3.1 (i486-pc-linux-gnu, GTK + versão 2.24.3), pelo menos diz isso. É um pacote padrão do Debian Linux (Wheezy), o GUI.

Eu encontrei o recuo automático do javascript do emacs (e outros), mas não queria instalar outro modo apenas para remover o recuo automático (e não há garantia de que ele funcionaria com ele), o modo fundamental desabilita o realce da sintaxe também, que eu quero manter , Cc Cl não faz nada, configurando javascript-auto-indent-flagpara nilnão faz nada.

O que eu quero exatamente: Insira uma guia se e somente se eu pressionar a tecla TAB. A parte "if" funciona, mas a parte "only if" não. Eu me pergunto por que é tão difícil?

Respostas:


1

No modo Javascript do Emacs, o caractere }é obrigado a funcionar js-insert-and-indent. Você pode vinculá-lo para apenas inserir-se, colocando este código no seu .emacsarquivo de inicialização:

(defun my-js-mode-hook ()
  "My personal Javascript mode hook."
  (local-set-key (kbd "TAB") 'tab-to-tab-stop)
  (local-set-key (kbd "RET") '(lambda () (interactive) (newline 1)))
  (local-set-key (kbd "SPC") 'self-insert)
  (local-set-key (kbd "}") 'self-insert))

(add-hook 'js-mode-hook 'my-js-mode-hook)

e reiniciando o Emacs. Se você encontrar outros caracteres como esse, poderá adicionar mais chamadas à local-set-keysua função de gancho, cada uma com um caractere diferente passado para a kbdfunção.


Atualizei meu código Emacs-Lisp acima para aumentar as chances de resolver o seu problema. Por favor, tente.
Fran

Opa, não vi sua resposta até agora. Não escrevo mais JS (em vez disso, uso o CoffeeScript), mas mesmo assim vou tentar.
GodsBoss

Alguma maneira de fazer isso funcionar no Emacs 24?
Linus Arver

@ opert, o código acima também deve funcionar no Emacs 24. Você recebe um erro ao usá-lo?
Fran

@Fran, acabei escrevendo meu próprio modo menor no Emacs chamado modo kakapo para lidar com configurações de indentação em um local central (embora alguns modos secundários sejam difíceis de domesticar apenas com o modo kakapo). Ele substitui os comandos por coisas como "RET", "TAB" etc., para nunca tocar nos caminhos de código no gancho js-mode para essas chaves. O IIRC, o código acima como está, não funcionava no Arch Linux no momento (antes de instalar o modo kakapo).
Linus Arver
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.