Jadikan web-mode selalu berubah dengan spasi

10

Saya menggunakan emacs web-mode , dan tab di file JS tampaknya bertingkah aneh.

Saya memiliki tab yang diatur ke indentasi 2 spasi, tetapi ketika indentasi mencapai 8 spasi, mode web mengubahnya menjadi sebuah tab, dan kemudian melanjutkan ke tab 2 spasi hingga mencapai 8 spasi lainnya, dan mengubahnya menjadi tab lain, dll.

Bisakah saya menghentikan ini terjadi dan memberi tahu emacs / mode web ke hanya ruang indentasi?

EDIT:

Berikut adalah contoh fungsi bersarang pendek:

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

Jelas terlihat baik-baik saja di Emacs, tetapi Anda dapat melihat masalah indentasi di sini.

Saya akan perhatikan di sini bahwa ini juga terjadi dalam mode javascript.

Dieuwe
sumber
1
Apakah ini khusus untuk mode web? Atau apakah itu terjadi di mana saja?
Malabarba
Ini hanya terjadi pada mode web, semua yang lain tab baik dengan ruang tanpa batas.
dieuwe
Maaf, mode javascript juga melakukan hal yang sama. Tapi itu hanya keduanya.
dieuwe
Yang mana javascript-modeyang Anda gunakan, yang builtin? Juga, apakah ini terjadi ketika indentasi html masuk web-mode?
dgtized
Silakan kirim konten file init Anda. Emacs menggunakan tab untuk 8 spasi secara default, jadi harus ada sesuatu dalam file init Anda untuk mematikannya untuk sebagian besar mode.
Gilles 'SO- stop being evil'

Jawaban:

10

Secara umum, jika Anda ingin lekukan hanya menggunakan spasi, saya akan merekomendasikan menyesuaikan:

(setq-default indent-tabs-mode nil)

Ini memaksa lekukan untuk menggunakan spasi dan tanpa tab. Saya tidak yakin apakah web-modemenggunakan metode reguler untuk indentasi, jadi mungkin tidak menghargai ini.

Bisakah Anda memberikan contoh file untuk ditunjukkan?

dgtized
sumber
3
Telah menambahkan contoh ke pertanyaan. Menambahkan (setq indent-tabs-mode nil)sepertinya tidak mengubah apa pun di keduanya web-modedan javascript-mode.
dieuwe
3
Saya pikir Anda harus menggunakan setq-defaultkarena indent-tabs-modebuffer-local.
nperson325681
@progo Oke, itu berhasil. Terima kasih banyak.
dieuwe
1
Apakah mungkin untuk indentasi dengan tab saja? Saya sudah mencoba pengaturan yang berbeda, tetapi hanya indentasi dengan tab / spasi campuran.
Dfr
1
@Fr Anda harus menambahkan (setq-default indent-tabs-mode t)di.emacs
fxbois
3

Silakan coba kode ini di file konfigurasi emacs Anda untuk memaksa inden mode web. Saya merujuknya dari beranda mode 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)
YulongNiu
sumber
Apakah ini juga berfungsi? (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
Andrew Lamarra