Як змінити ширину відступу в режимі JavaScript emacs


120

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

(setq c-basic-offset 2)

Як змінити це в режимі javascript?

Відповіді:


198

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

(setq js-indent-level 2)

повинен робити те, що ви шукаєте. Якщо ви використовуєте старішу версію emacs, можливо, ви перебуваєте в java-режимі. Я думаю, що цей режим відповідає c-basic-offset, однак я можу помилятися.


2
(setq за замовчуванням-ширина вкладки 2) був би відповідним встановником ширини вкладки для java-режиму
Фергі

За допомогою цього механізму ширина вкладки залишається на рівні 8, тому вкладки використовуються лише в тому випадку, якщо рівень відступу становить 4 (2х4 = 8) або більше. Як встановити ширину вкладок на 2 або 4, щоб використовувались вкладки замість пробілів? Я спробував купу налаштувань, наприклад (setq-ширина вкладки 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

Використовуйте 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 hjs-режимі, але там нічого не міг знайти.
Чарльз Голброу

75

Мені б хотілося, щоб хтось раніше говорив мені про «Custom»! Можливо, це допоможе іншому простому смертному, як я;)

Викликати користувацький:

M-x customize

Потім виберіть "Програмування", а потім "Мови", а потім виберіть мову / режим для налаштування. Відредагуйте параметри так, як вважаєте за потрібне. Після завершення виберіть "Зберегти для поточного сеансу" або "Зберегти для майбутніх сеансів".


17

Якщо ви використовуєте режим js2 (який є більш потужним IMHO), команда така:

(setq-default js2-basic-offset 2)

Джерело


11

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

(setq-default indent-tabs-mode nil)

Це скоріше коментар, ніж фактична відповідь. Заробляйте більше репутації, щоб мати можливість коментувати.
jcubic

2

У моєму файлі javascript.el (/ usr / share / emacs / site-lisp) я знайшов

javascript-відступ-рівень 4

Тож якщо ви використовуєте той самий Lisp-режим, ви можете змінити його, запустивши

(setq javascript-indent-level 2)

2

Ви також можете використовувати

M-x customize-variable

і тип

js-indent-level

( js-[TAB] відображає список параметрів). Потім змініть Js Indent Levelпотрібне і натисніть [State:]та збережіть.


2

Використання EditorConfig також може бути хорошою ідеєю. І звичайно, Emacs мав режим для цього editorconfig-emacs .

Він також доступний у менеджері пакунків ( M-x package-list-packages) через Мельпу або Мармелад.


2

Якщо ви хочете змінити його за кожним файлом, поставте це у верхній частині файлу:

// -*- mode: js; js-indent-level: 2; -*-

0

Жодне з цих рішень не працювало для мене після оновлення до Emacs 26 (я вже js-indent-levelвстановив 2, але ширина моєї вкладки повернулася до 8), але те, що працювало, було встановлення tab-widthзмінної на 2, яка, здається, замінює стару default-tab-widthзмінну.

Я знайшов це в M-x customizeпошуках tab width.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.