Как заставить пробелы вместо вкладок независимо от основного режима? - PullRequest
8 голосов
/ 05 мая 2011

Я хочу, чтобы все вкладки были 4 пробела.У меня есть следующее в .emacs

(setq-default indent-tabs-mode nil)
(setq c-basic-indent 4)
(setq tab-width 4)

Но это перезаписывается некоторыми из основных тем режима, которые я могу использовать.Есть ли способ решить эту проблему через мой .emacs файл?

Ответы [ 3 ]

6 голосов
/ 05 мая 2011

Попробуйте перезаписать все основные режимы:

(add-hook 'after-change-major-mode-hook 
          '(lambda () 
             (setq-default indent-tabs-mode nil)
             (setq c-basic-indent 4)
             (setq tab-width 4)))

Обратите внимание, что основные режимы, не основанные на c-mode, вряд ли будут заботиться о c-basic-indent и потенциально могут использовать ихсобственные, зависящие от режима переменные отступа.В таких случаях невозможно вручную настроить эти переменные.

2 голосов
/ 06 мая 2011

Объявите стиль отступа C по умолчанию вместо объявления определенных параметров стиля.

(setq c-default-style "k&r2")  ;; or whatever your preference is
(set-default 'indent-tabs-mode nil)
0 голосов
/ 06 мая 2011

Я "решил" эту проблему с особенно уродливым взломом. Вместо того чтобы попытаться выяснить, как правильно установить хуки основного режима, я просто сделал следующее:

(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, упомянутом Томасом, но если его решение по какой-то причине не работает для вас, я использую его уже несколько лет без инцидентов.

Редактировать : При ближайшем рассмотрении я не думаю, что вы задаете именно тот вопрос, на который я ответил. Я предполагаю, что уничтожение всех вкладок - это один из способов получить последовательный отступ. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...