Я "решил" эту проблему с особенно уродливым взломом. Вместо того чтобы попытаться выяснить, как правильно установить хуки основного режима, я просто сделал следующее:
(defun save-buffer-without-tabs ()
(interactive)
(untabify (point-min) (point-max))
(save-buffer))
(global-set-key "\C-x\C-s" 'save-buffer-without-tabs)
Это ужасно ломает некоторые вещи (которые меня волнуют, это Python и Makefiles). Таким образом, я также сделал следующее:
;; restore the original save function for makefiles
(add-hook 'makefile-mode-hook
(lambda ()
(define-key makefile-mode-map "\C-x\C-s" 'save-buffer)))
;; restore the original save function for python files
(add-hook 'python-mode-hook
(lambda () (define-key python-mode-map "\C-x\C-s" 'save-buffer)))
Я не знал о after-change-major-mode-hook
, упомянутом Томасом, но если его решение по какой-то причине не работает для вас, я использую его уже несколько лет без инцидентов.
Редактировать : При ближайшем рассмотрении я не думаю, что вы задаете именно тот вопрос, на который я ответил. Я предполагаю, что уничтожение всех вкладок - это один из способов получить последовательный отступ. :)