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.


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?


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)

Apakah ini juga berfungsi? (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
— Andrew Lamarra
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.