Как изменить ширину отступа в режиме javascript emacs

120

Я хотел бы использовать 2 пробела для отступов вместо 4. Я могу изменить поведение режима C по умолчанию, используя:

(setq c-basic-offset 2)

Как мне изменить это в режиме javascript?

mksuth
источник

Ответы:

198

js-indent-level может использоваться в javascript-режиме по умолчанию, который по умолчанию включен, начиная с emacs 23.2.

(setq js-indent-level 2)

должен делать то, что вы ищете. Если вы используете старую версию emacs, возможно, вы находитесь в java-режиме. Думаю, этот режим реагирует c-basic-offset, но могу ошибаться.

Вилли Баллентин
источник
2
(setq default-tab-width 2) будет соответствующим установщиком ширины табуляции для java-режима
Ферги
При использовании этого механизма ширина табуляции остается равной 8, поэтому табуляторы используются, только если уровень отступа равен 4 (2x4 = 8) или больше. Как установить ширину табуляции 2 или 4, чтобы вместо пробелов использовались табуляции? Я пробовал кучу настроек, например (setq tab-width 4), но безрезультатно. Моя цель: использовать ширину табуляции 4 и использовать только символы табуляции (а не пробелы в качестве замены).
jdp
jdp: Попробуйте (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 09
Используйте js-mode-hook, например, так:(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
Это где-нибудь задокументировано? Был ли способ найти эту информацию без переполнения стека? Я заглянул M-x hиз js-режима, но ничего не нашел.
Чарльз Холброу,
75

Хотелось бы, чтобы кто-нибудь рассказал мне о Custom намного раньше! Возможно, это поможет другому простому смертному вроде меня;)

Вызвать пользовательский:

M-x customize

Затем выберите «Программирование», затем «Языки», а затем выберите язык / режим для настройки. Отредактируйте параметры по своему усмотрению. По завершении выберите «Сохранить для текущего сеанса» или «Сохранить для будущих сеансов».

wprl
источник
17

Если вы используете js2-режим (который, по-моему, более мощный), то команда будет такой:

(setq-default js2-basic-offset 2)

Источник.

metakermit
источник
11

Вы также можете настроить emacs на использование пробелов вместо вкладок

(setq-default indent-tabs-mode nil)
Тайлер
источник
Это скорее комментарий, чем реальный ответ. Заработайте больше репутации, чтобы иметь возможность комментировать.
jcubic 04
2

В моем файле javascript.el (/ usr / share / emacs / site-lisp) я нашел

javascript-indent-level 4

Поэтому, если вы используете тот же режим lisp, вы можете изменить его, запустив

(setq javascript-indent-level 2)
Helge
источник
2

Вы также можете использовать

M-x customize-variable

и введите

js-indent-level

( js-[TAB] показывает список опций). Затем измените Js Indent Levelкак хотите, нажмите [State:]и сохраните.

kwarnke
источник
2

Использование EditorConfig тоже может быть хорошей идеей. И, конечно же, в Emacs был режим editorconfig-emacs .

Он также доступен в диспетчере пакетов ( M-x package-list-packages) через Melpa или Marmalade.

hs0ucy
источник
2

Если вы хотите изменить его для каждого файла, поместите это в начало файла:

// -*- mode: js; js-indent-level: 2; -*-
MatthewD
источник
0

Ни одно из этих решений не помогло мне после обновления до Emacs 26 (я уже js-indent-levelустановил значение 2, но моя ширина табуляции вернулась к 8), но что действительно сработало, так это установка tab-widthпеременной в значение 2, которое, похоже, заменяет старую default-tab-widthпеременную.

Я нашел это M-x customize, выполнив поиск по запросу tab width.

Malvineous
источник