Различные настройки отступа вкладки в разных режимах - PullRequest
7 голосов
/ 08 сентября 2011

Я сейчас использую whitespace-cleanup в моем хуке сохранения. Используя indent-tabs-mode, я могу сохранять файлы без вкладок.

Все хорошо, я не хочу вкладок в моих файлах. Но.

Makefiles нужны вкладки. Это моя проблема. Как мне изменить мои настройки для режима makefile?

Я пытался setq либо indent-tabs-mode (в документе сказано, что он становится локальным по отношению к буферу), либо whitespace-style, это не работает.

Ответы [ 3 ]

3 голосов
/ 08 сентября 2011

ОК, мой плохой.Файлы были загружены до изменения режима.

Следующий код работает нормально, при условии, что он загружен в .emacs перед открытием любого файла (у меня есть собственный менеджер проектов, который заново открывает последние файлы).

(defun my-tabs-makefile-hook ()
  (setq indent-tabs-mode t))
(add-hook 'makefile-mode-hook 'my-tabs-makefile-hook)
2 голосов
/ 18 октября 2012

У меня была такая же проблема, и кажется, что это ошибка в Emacs (по состоянию на 24.2).Попробуйте это, используя следующее .emacs:

(setq-default indent-tabs-mode nil)
(add-hook 'after-save-hook 'whitespace-cleanup)

Если вы откроете файл, сохраните его, а затем откроете Makefile, у вас возникнет описанная вами проблема.Но если вы сначала откроете Makefile, сохраните его и , а затем откроете файл другого типа, у вас возникнет противоположная проблема: 8 пробелов будут заменены табуляциями.что indent-tabs-mode является локальным по отношению к буферу, но в whitespace.el ему присваивается обычная переменная с именем whitespace-indent-tabs-mode.Следовательно, первое значение, которое видно, - это значение, которое учитывается.

Вот еще один обходной путь, который решает и некоторые другие проблемы.Добавьте это к вашему .emacs:

(defadvice whitespace-cleanup (around whitespace-cleanup-indent-tab
                                      activate)
  "Fix whitespace-cleanup indent-tabs-mode bug"
  (let ((whitespace-indent-tabs-mode indent-tabs-mode)
        (whitespace-tab-width tab-width))
    ad-do-it))
0 голосов
/ 09 апреля 2013

Лучшее решение, которое я нашел для пробелов, это ethan-wspace .Он очищает все пробелы, которые вы сами испортили, но оставляет другие пробелы нетронутыми.

Он работает для вкладок в make-файлах и устраняет проблему с беспорядочным различием, когда есть много строк различий, которые просто изменяют пробелы

...