Làm cho chế độ web luôn thụt lề với khoảng trắng


10

Tôi đang sử dụng chế độ web của emacs và việc lập bảng trong các tệp JS dường như đang hoạt động kỳ lạ.

Tôi có tab được đặt thành thụt lề 2 khoảng trắng, nhưng khi thụt lề đạt 8 khoảng trắng, chế độ web biến chúng thành một tab và sau đó tiếp tục tab 2 khoảng trắng cho đến khi đạt đến 8 khoảng trống khác và chuyển đổi nó thành tab khác, v.v.

Tôi có thể ngăn điều này xảy ra và nói với emacs / chế độ web chỉ để thụt lề không gian?

BIÊN TẬP:

Dưới đây là một ví dụ hàm lồng nhau ngắn:

(function() {
  function() {
    function() {
      function() {
    function() {
      // Indenting problem.
    }
      }
    }
  }
})()

Rõ ràng là nó hiển thị tốt trong Emacs, nhưng bạn có thể thấy vấn đề thụt ở đây.

Tôi sẽ lưu ý ở đây rằng điều này cũng xảy ra trong chế độ javascript.


1
Đây có phải là cụ thể cho chế độ web? Hay nó xảy ra ở bất cứ đâu?
Malabarba

Điều này chỉ xảy ra trên chế độ web, mọi thứ khác đều ổn với không gian vô hạn.
dieuwe

Xin lỗi, chế độ javascript cũng làm điều tương tự. Nhưng đó chỉ là hai.
dieuwe

Bạn javascript-modeđang sử dụng cái nào , cái dựng sẵn? Ngoài ra, điều này có xảy ra khi thụt html trong web-modekhông?
2014

Xin vui lòng gửi nội dung của tập tin init của bạn. Emacs sử dụng một tab cho 8 khoảng trắng theo mặc định, do đó phải có một cái gì đó trong tệp init của bạn để tắt nó cho hầu hết các chế độ.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


10

Nói chung, nếu bạn muốn thụt lề chỉ sử dụng khoảng trắng, tôi khuyên bạn nên tùy chỉnh:

(setq-default indent-tabs-mode nil)

Điều này buộc thụt lề để sử dụng khoảng trắng và không có tab. Tôi không chắc chắn nếu web-modesử dụng các phương pháp thông thường để thụt lề, vì vậy nó có thể không tôn trọng điều này.

Bạn có thể đưa ra một tập tin ví dụ để chứng minh?


3
Đã thêm một ví dụ cho câu hỏi. Thêm (setq indent-tabs-mode nil)không có vẻ thay đổi bất cứ điều gì trong cả hai web-modejavascript-mode.
dieuwe

3
Tôi nghĩ bạn nên sử dụng setq-defaultindent-tabs-modelà bộ đệm cục bộ.
nperson325681

@progo Được rồi, đã làm việc. Cảm ơn bạn rất nhiều.
dieuwe

1
Có thể thụt lề chỉ với các tab? Tôi đã thử các cài đặt khác nhau, nhưng nó chỉ thụt lề với các tab / không gian hỗn hợp.
Dfr

1
@Dfr Bạn nên thêm (setq-default indent-tabs-mode t)vào.emacs
fxbois

3

Vui lòng thử mã này trong tệp cấu hình emacs của bạn để buộc thụt lề chế độ web. Tôi đã giới thiệu nó từ trang chủ chế độ web.

(require 'web-mode)
(defun my-web-mode-hook ()
  "Hooks for Web mode."
  (setq web-mode-markup-indent-offset 2)
)
(add-hook 'web-mode-hook  'my-web-mode-hook)

Điều này cũng sẽ làm việc? (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
Andrew Lamarra
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.