Сделайте веб-режим всегда отступом от пробелов

10

Я использую веб-режим emacs , и вкладки в файлах JS выглядят странно.

У меня есть табуляция для отступа 2 пробела, но когда отступ достигает 8 пробелов, веб-режим превращает их в табуляцию, а затем продолжает табулировать 2 пробела, пока in не достигает еще 8, и преобразует их в другую вкладку и т. Д.

Могу ли я остановить это и сказать emacs / web-mode только отступам?

РЕДАКТИРОВАТЬ:

Вот краткий пример вложенной функции:

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

Очевидно, что в Emacs все хорошо, но здесь вы можете увидеть проблему с отступами.

Я отмечу здесь, что это также происходит в режиме javascript.

dieuwe
источник
1
Это специфично для веб-режима? Или это где-нибудь происходит?
Малабарба
Это происходит только в веб-режиме, все остальные вкладки прекрасно с пробелами на неопределенный срок.
dieuwe
Извините, режим javascript делает то же самое. Но это только те двое.
dieuwe
Что javascript-modeвы используете, встроенный? Кроме того, это происходит при отступе HTML web-mode?
dgtized
Пожалуйста, опубликуйте содержимое вашего файла инициализации. Emacs по умолчанию использует вкладку на 8 пробелов, поэтому в вашем файле инициализации должно быть что-то, что отключает ее для большинства режимов.
Жиль "ТАК - перестань быть злым"

Ответы:

10

В общем, если вы хотите, чтобы отступы использовали только пробелы, я бы порекомендовал настроить:

(setq-default indent-tabs-mode nil)

Это заставляет отступ использовать пробелы и никаких вкладок. Я не уверен, что web-modeиспользует обычные методы для отступов, поэтому может не уважать это.

Можете ли вы привести пример файла для демонстрации?

dgtized
источник
3
Добавили пример к вопросу. Добавление (setq indent-tabs-mode nil)не кажется , что изменить что - либо в обоих web-modeи javascript-mode.
Dieuwe
3
Я думаю, что вы должны использовать, setq-defaultпотому что indent-tabs-modeэто локальный буфер.
nperson325681
@progo Хорошо, это сработало. Огромное спасибо.
Dieuwe
1
Можно ли сделать отступ только для вкладок? Я пробовал разные настройки, но отступ только со смешанными табуляциями / пробелами.
DFR
1
@Dfr Вы должны добавить (setq-default indent-tabs-mode t)в свой.emacs
fxbois
3

Пожалуйста, попробуйте этот код в вашем конфигурационном файле emacs для принудительного отступа в веб-режиме. Я отослал это с домашней страницы в веб-режиме.

(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
источник
Будет ли это также работать? (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
Эндрю Ламарра