2009-02-10 2 views
11

Я человек табуляции. Если я не работаю над проектом, который уже использует пробелы, я использую вкладки. Я в основном работаю php и html. У меня есть вкладки в php, хорошо работающие. Но я не могу понять, как использовать html-режим для вкладок вместо двух пробелов.Вкладки в режиме HTML в Emacs

Вот то, что я до сих пор:

(setq c-default-style "python") 
(setq-default c-basic-offset 4 
       tab-width 4 
       indent-tabs-mode t) 

Что можно установить так, что режим HTML будет использовать вкладки?

ответ

26
(add-hook 'html-mode-hook 
      (lambda() 
      (setq sgml-basic-offset 4) 
      (setq indent-tabs-mode t))) 

Это работает, потому что, когда indent-tabs-mode является t, отступы по умолчанию логика Emacs' заменяет пробелы с вкладками, когда он может в то же время сохраняя правильный столбец смещения для отступа. Например, если ваш код должен быть смещен на четыре символа на уровень отступа (т. Е. sgml-basic-offset равен 4, как указано выше), ваш код должен быть отступом на два уровня в глубину, и на уровне отступа есть четыре столбца, а затем Emacs вычисляет, что if он отступы с двумя вкладками и нулевыми пробелами, что приведет к соответствующему смещению столбца.

Это также означает, что вышеуказанное не будет работать совершенно правильно, если вы испортили свой tab-width. Например, если вы установите его на 8 и отступом на один уровень, Emacs вычисляет, что даже если он вставляет только одну вкладку, смещение визуального столбца (8) будет больше, чем желаемое смещение (4). Таким образом, вместо этого будет вставлено четыре пробела. Попробуйте установить sgml-basic-offset на ту же самую вещь, что и ваш tab-width.

+1

Могу ли я сделать что-то не так? Этот код не влияет на меня. Запуск Emacs 22.3.1 кстати. – Echo

+0

Вы используете html-режим, который поставляется вместе с emacs или сторонним? –

+0

Только по умолчанию html-режим, который поставляется с emacs. – Echo

2

На самом деле, indent-tabs-mode, вероятно, должен быть t по умолчанию.

Попробуйте M-i, только для жаворонок. Это должно вставить символ табуляции. Это не БОЛЬШОЕ решение, но это может сработать.

ТАКЖЕ, как вы проверили пространство и вкладку? двигаясь через него? или удалить его? у вас может быть «backward-delete-char-untabify», воспитывающий его голову.

+0

Да, я уже пробовал убивать и снова открывать буфер и перезапускать emacs. – Echo