Cách thay đổi độ rộng thụt lề trong chế độ javascript emacs


120

Tôi muốn sử dụng 2 dấu cách cho thụt lề của mình thay vì 4. Tôi có thể thay đổi hành vi mặc định của chế độ C bằng cách sử dụng:

(setq c-basic-offset 2)

Làm cách nào để thay đổi điều này trong chế độ javascript?

Câu trả lời:


198

js-indent-level có thể được sử dụng trong chế độ javascript mặc định, được bao gồm theo mặc định bắt đầu trong emacs 23.2.

(setq js-indent-level 2)

nên làm những gì bạn đang tìm kiếm. Nếu bạn đang sử dụng phiên bản emac cũ hơn, bạn có thể đang ở chế độ java. Tôi nghĩ rằng chế độ này đáp ứng c-basic-offset, tuy nhiên tôi có thể sai.


2
(setq mặc định tab-width 2) sẽ là tab tương ứng với chiều rộng setter cho java-mode
Fergie

Sử dụng cơ chế này, chiều rộng tab vẫn ở mức 8 và do đó, các tab chỉ được sử dụng nếu mức thụt lề là 4 (2x4 = 8) trở lên. Làm cách nào để bạn đặt chiều rộng tab thành 2 hoặc 4 để sử dụng các tab thay vì khoảng trắng? Tôi đã thử một loạt các cài đặt, ví dụ: (setq tab-width 4) nhưng không có kết quả. Mục tiêu của tôi: sử dụng chiều rộng tab 4 và chỉ sử dụng các ký tự tab (không thay thế dấu cách).
jdp 10/09/12

jdp: Hãy thử (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

Sử dụng js-mode-hook, như vậy:(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
Điều này có được ghi lại ở bất cứ đâu không? Có cách nào để tìm kiếm thông tin này mà không có stackoverflow không? Tôi đã xem xét M-x htừ chế độ js, nhưng không tìm thấy gì ở đó.
Charles Holbrow,

75

Tôi ước ai đó đã nói với tôi về Custom sớm hơn nhiều! Có lẽ điều này sẽ giúp một người bình thường khác như tôi;)

Gọi tùy chỉnh:

M-x customize

Sau đó, chọn "Lập trình", rồi chọn "Ngôn ngữ", rồi chọn một ngôn ngữ / chế độ để tùy chỉnh. Chỉnh sửa các tùy chọn khi bạn thấy phù hợp. Khi hoàn tất, hãy chọn "Lưu cho phiên hiện tại" hoặc "Lưu cho các phiên sau".


17

Nếu bạn đang sử dụng js2-mode (IMHO mạnh hơn), thì lệnh là:

(setq-default js2-basic-offset 2)

Nguồn.


11

Bạn cũng có thể muốn đặt emac để sử dụng dấu cách thay vì tab

(setq-default indent-tabs-mode nil)

Đây là một bình luận nhiều hơn câu trả lời thực tế. Kiếm thêm danh tiếng để có thể bình luận.
jcubic

2

Trong tệp javascript.el của tôi (/ usr / share / emacs / site-lisp), tôi đã tìm thấy

javascript-indent-level 4

Vì vậy, nếu bạn đang sử dụng cùng một chế độ lisp, bạn có thể thay đổi nó bằng cách chạy

(setq javascript-indent-level 2)

2

Bạn cũng có thể dùng

M-x customize-variable

và gõ

js-indent-level

( js-[TAB] hiển thị danh sách các tùy chọn). Sau đó, thay đổi Js Indent Levelnhư mong muốn và nhấp [State:]và lưu.


2

Sử dụng EditorConfig cũng có thể là một ý tưởng hay. Và tất nhiên, Emacs đã có một chế độ cho nó editorconfig-emacs .

Nó cũng có sẵn trong trình quản lý gói ( M-x package-list-packages) thông qua Melpa hoặc Marmalade.


2

Nếu bạn muốn thay đổi nó trên cơ sở từng tệp, hãy đặt điều này ở đầu tệp của bạn:

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

0

Không có giải pháp nào trong số này phù hợp với tôi sau khi nâng cấp lên Emacs 26 (tôi đã js-indent-levelđặt thành 2 nhưng chiều rộng tab của tôi quay trở lại 8), nhưng những gì đã làm là đặt tab-widthbiến thành 2, dường như thay thế default-tab-widthbiến cũ .

Tôi đã tìm thấy điều này M-x customizebằng cách tìm kiếm tab width.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.