Como alterar a largura do recuo no modo javascript do emacs

120

Eu gostaria de usar 2 espaços para meus recuos em vez de 4. Posso alterar o comportamento padrão do modo C usando:

(setq c-basic-offset 2)

Como altero isso no modo javascript?

mksuth
fonte

Respostas:

198

js-indent-level pode ser usado no modo javascript padrão, incluído por padrão no emacs 23.2.

(setq js-indent-level 2)

deve fazer o que você está procurando. Se você estiver usando uma versão mais antiga do emacs, pode estar no modo java. Eu acho que esse modo responde c-basic-offset, no entanto, posso estar errado.

Willi Ballenthin
fonte
2
(setq default-guia de largura 2) seria a guia correspondente largura Setter para modo java
Fergie
Usando esse mecanismo, a largura da guia permanece em 8 e, portanto, as guias são usadas apenas se o nível de recuo for 4 (2x4 = 8) ou mais. Como você define a largura da guia como 2 ou 4 para que sejam usadas guias em vez de espaços? Eu tentei um monte de configurações, por exemplo (setq tab-width 4), mas sem sucesso. Meu objetivo: use a largura da guia 4 e use apenas caracteres da guia (não espaços como substitutos).
jdp
jdp: Tente (defun my-javascript-mode-hook () (setq indent-tabs-mode t tab-width 4 js-indent-level 4)) (add-hook 'javascript-mode-hook 'my-javascript-mode-hook).
phils
Use js-mode-hook, assim:(defun my-js-mode-hook () (setq indent-tabs-mode t tab-width 4 js-indent-level 4)) (add-hook 'js-mode-hook 'my-js-mode-hook)
skeltoac
6
Isso está documentado em algum lugar? Havia uma maneira de encontrar essas informações sem o stackoverflow? Olhei em M-x hde js-mode, mas não consegui encontrar nada lá.
Charles Holbrow
75

Eu gostaria que alguém tivesse me falado sobre o Custom muito antes! Talvez isso ajude outro mero mortal como eu;)

Invocar Personalizado:

M-x customize

Em seguida, escolha "Programação", "Idiomas" e selecione um idioma / modo para personalizar. Edite as opções como achar melhor. Quando terminar, escolha "Salvar para a sessão atual" ou "Salvar para futuras sessões".

wprl
fonte
17

Se você estiver usando o modo js2 (que é o IMHO mais poderoso), o comando é:

(setq-default js2-basic-offset 2)

Fonte.

metakermit
fonte
11

Você também pode definir o emacs para usar espaços em vez de guias

(setq-default indent-tabs-mode nil)
Tyler
fonte
Este é mais um comentário do que uma resposta real. Ganhe mais reputação para poder comentar.
Jcubic
2

No meu arquivo javascript.el (/ usr / share / emacs / site-lisp), encontrei

javascript-indent-level 4

Portanto, se você estiver usando o mesmo modo lisp, poderá alterá-lo executando

(setq javascript-indent-level 2)
Helge
fonte
2

Você também pode usar

M-x customize-variable

e tipo

js-indent-level

( js-[TAB] mostra uma lista de opções). Em seguida, altere o Js Indent Leveldesejado e clique [State:]e salve.

kwarnke
fonte
2

Usar o EditorConfig também pode ser uma boa ideia. E, claro, o Emacs tinha um modo para isso editorconfig-emacs .

Também está disponível no gerenciador de pacotes ( M-x package-list-packages) através do Melpa ou Marmalade.

hs0ucy
fonte
2

Se você deseja alterá-lo por arquivo, coloque isso na parte superior do seu arquivo:

// -*- mode: js; js-indent-level: 2; -*-
MatthewD
fonte
0

Nenhuma dessas soluções funcionou para mim após a atualização para o Emacs 26 (eu já havia js-indent-leveldefinido como 2, mas a largura da minha guia voltou para 8), mas o que funcionou foi definir a tab-widthvariável para 2, o que parece substituir a default-tab-widthvariável antiga .

Eu encontrei isso M-x customizepesquisando tab width.

Malvineous
fonte