Я новичок в emacs, и мне не особо нравится, как режимы emacs обрабатывают отступы, особенно при смешивании режимов (скажем, ASP и perl). Я написал следующие функции для отступов, как это делал бы «классический» редактор:
(defun classic-indent (width)
"Tab the current line or block the 'classic' way"
(save-excursion
(if (not (use-region-p)) (select-current-line))
(indent-rigidly (mark) (point) width)))
(defun indent-forward ()
"tab two space forward"
(interactive)
(classic-indent 2))
(defun indent-back ()
"tab two spaces back"
(interactive)
(classic-indent -2))
(defun select-current-line ()
"Select the current line"
(interactive)
(end-of-line) ; move to end of line
(set-mark (line-beginning-position)))
Идея состоит в том, чтобы связать отступ с <backtab>
и отступ с <tab>
. Функции прекрасно работают при вызове их с помощью M-x
, а привязка <backtab>
работает отлично, но если я попытаюсь связать <tab>
напрямую, это помешает всяким классным вещам, таким как автозаполнение. Я попытался установить indent-line-function
с:
(setq indent-line-function 'indent-forward)
и установка функции отступа основных режимов с помощью:
(setq cperl-indent-command 'indent-forward)
но ни один из них не имеет никакого эффекта. Я не уверен, правильно ли я их настраиваю или это даже правильный подход.
Подводя итог, Как я могу переопределить отступ с помощью клавиши табуляции, не перекрывая другое поведение "табуляции", как автозаполнение?