Я согласен с Тайлером;хотя это немного сложно, в долгосрочной перспективе было бы лучше, если вы попытаетесь понять и настроить функции отступов по умолчанию.В Emacs Wiki есть хороших ресурсов , и есть другие соответствующие вопросы и ответы здесь, на переполнении стека.
Привязка клавиши табуляции к insert-tab
означает, что вы полностью потеряете преимуществоподобных indent-region
и любому другому интеллектуальному поведению, которое может предложить основной режим.
Чтобы ответить на ваши конкретные вопросы независимо, однако:
1) Если вы определяете (java-insert-tab)
и (css-insert-tab)
и (javascript-insert-tab)
и т. д., и все они делают одно и то же ... ну, надеюсь, вы увидите, что на самом деле вам не нужно больше, чем одна из этих функций.Просто дайте ему более общее имя и повторите его.
2) (local-set-key ...)
делает то же самое, что и (define-key (current-local-map) ...)
, что означает, что вы также можете иметь одну общую функцию для переопределения привязки клавиш табуляции,независимо от основного режима.
(defun my-coding-config ()
(setq tab-width 4)
(setq indent-tabs-mode t)
(local-set-key (kbd "<tab>") 'my-insert-tab))
(defun my-insert-tab (&optional arg)
(interactive "P")
(insert-tab arg))
Тогда вам просто нужно добавить my-coding-config
к каждой применимой переменной обработчика режима.Если их много, вы можете поместить их в такой список:
;; Use my coding hook for all programming modes
(mapcar
(lambda (language-mode-hook)
(add-hook language-mode-hook 'my-coding-config))
'(java-mode-hook
javascript-mode-hook
css-mode-hook
...))
3) Если вы посмотрите на Ch v tab-width
RET и аналогично для indent-tabs-mode
, вы заметите, что они оба говорят: «Автоматически становится локальным по отношению к буферу при любой установке.»
В качестве альтернативы уже упомянутому интерфейсу настройки вы можете использовать (set-default 'indent-tabs-mode t)
, чтобы установить значение по умолчанию для таких переменных.В отсутствие кода, который устанавливает локальное значение буфера, все ваши буферы будут использовать значение по умолчанию, что может помочь вам избежать написания ненужных перехватчиков режима.