Поведение TAB по умолчанию в Emacs (в режимах программирования) заключается в автоматическом отступе правильного места , где это место определяется на основе правил отступа, описанных основным режимом (это один из самых важная работа мажорного режима, на самом деле, гораздо более сложная в целом, чем цветная подсветка). Конечно, если строка уже имеет отступ в нужном месте, нажатие клавиши TAB ничего не изменит.
Таким образом, вы можете заставить TAB вести себя глупо, как вы просите, но тогда вы пропустите большую часть удовольствия.
Например. Вы могли бы сделать что-то вроде
(global-set-key "\t"
(lambda ()
(interactive)
(let ((prevline-indent (save-excursion (forward-line -1) (current-indentation))))
(if (< (current-column) prevline-indent))
(indent-to prevline-indent)
(insert " ")))))
Но вместо этого я рекомендую вам использовать TAB так, как это задумал Emacs, и объяснить Emacs, как вы хотите, чтобы ваш код был с отступом. Возможно, установив что-то вроде:
(setq-default indent-tabs-mode nil) ;; Prefer SPC over TAB when indenting.
(setq c-basic-offset 4) ;; I like indenting by 4 spaces.
Из того, что вы говорите, отступ в TAB в вашем php-режиме работает неправильно, поэтому в вашем php-режиме может быть просто ошибка. Скажите нам точно, в каком случае он работает неправильно, показав текст с неверным отступом и объяснив, каким образом отступ не соответствует вашим ожиданиям.