Bagaimana mengubah lebar indentasi dalam mode javascript emacs

120

Saya ingin menggunakan 2 spasi untuk indentasi saya, bukan 4. Saya dapat mengubah perilaku default mode C menggunakan:

(setq c-basic-offset 2)

Bagaimana cara mengubah ini dalam mode javascript?

mksuth
sumber

Jawaban:

198

js-indent-level dapat digunakan dalam mode-javascript default, yang disertakan secara default mulai dari emacs 23.2.

(setq js-indent-level 2)

harus melakukan apa yang Anda cari. Jika Anda menggunakan emacs versi lama, Anda mungkin berada dalam mode java. Saya pikir mode ini merespons c-basic-offset, namun saya mungkin salah.

Willi Ballenthin
sumber
2
(setq default-tab-width 2) akan menjadi penyetel lebar tab yang sesuai untuk mode java
Fergie
Dengan menggunakan mekanisme ini, lebar tab tetap 8 sehingga tab hanya digunakan jika tingkat indentasi adalah 4 (2x4 = 8) atau lebih. Bagaimana Anda mengatur lebar tab menjadi 2 atau 4 sehingga tab sebagai pengganti spasi digunakan? Saya sudah mencoba banyak pengaturan, misalnya (setq tab-width 4) tetapi tidak berhasil. Tujuan saya: menggunakan lebar tab 4, dan hanya menggunakan karakter tab (bukan spasi sebagai pengganti).
jdp
jdp: Coba (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
Gunakan js-mode-hook, seperti ini:(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
Apakah ini didokumentasikan di mana saja? Apakah ada cara untuk menemukan informasi ini tanpa stackoverflow? Saya melihat M-x hdari js-mode, tetapi tidak dapat menemukan apa pun di sana.
Charles Holbrow
75

Saya berharap seseorang memberi tahu saya tentang Custom lebih cepat! Mungkin ini akan membantu manusia biasa lainnya seperti saya;)

Panggil Kustom:

M-x customize

Kemudian, pilih "Pemrograman", lalu "Bahasa", lalu pilih bahasa / mode untuk menyesuaikan. Edit opsi sesuai keinginan Anda. Setelah selesai, pilih "Simpan untuk sesi saat ini" atau "Simpan untuk sesi mendatang."

wprl
sumber
17

Jika Anda menggunakan js2-mode (IMHO lebih kuat), maka perintahnya adalah:

(setq-default js2-basic-offset 2)

Sumber.

metakermit
sumber
11

Anda mungkin juga ingin mengatur emacs untuk menggunakan spasi sebagai ganti tab

(setq-default indent-tabs-mode nil)
Tyler
sumber
Ini lebih merupakan komentar daripada jawaban sebenarnya. Dapatkan lebih banyak reputasi untuk dapat berkomentar.
jcubic
2

Di file javascript.el saya (/ usr / share / emacs / site-lisp) saya temukan

javascript-indent-level 4

Jadi jika Anda menggunakan mode cadel yang sama, Anda dapat mengubahnya dengan menjalankannya

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

Anda juga bisa menggunakan

M-x customize-variable

dan ketik

js-indent-level

( js-[TAB] menunjukkan daftar opsi). Kemudian ubah Js Indent Levelsesuai keinginan dan klik [State:]dan simpan.

kwarnke
sumber
2

Menggunakan EditorConfig juga bisa menjadi ide yang bagus. Dan tentu saja, Emacs memiliki mode untuk editorconfig-emacs .

Ini juga tersedia di pengelola paket ( M-x package-list-packages) melalui Melpa atau Marmalade.

hs0ucy.dll
sumber
2

Jika Anda ingin mengubahnya per file, letakkan ini di bagian atas file Anda:

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

Tak satu pun dari solusi ini berhasil untuk saya setelah memutakhirkan ke Emacs 26 (saya sudah js-indent-levelmenyetel ke 2 tetapi lebar tab saya kembali ke 8), tetapi yang berhasil adalah menyetel tab-widthvariabel ke 2, yang tampaknya menggantikan yang lama.default-tab-width variabel .

Saya menemukan ini M-x customizedengan mencari tab width.

Malvineous
sumber