2013-09-01 2 views
0

Одна из приятных особенностей современных текстовых процессоров заключается в том, что можно изменить формат (скажем, от римского до курсивного) слова без его фактического выбора; нужно просто поместить текстовый курсор внутри слова и сообщить текстовому процессору (с помощью сочетания клавиш), чтобы изменить его формат. (Умное редактирование, я считаю, это иногда называют.)Изменение формата слова в Emacs-AUCTeX без фактического его выбора

Есть ли способ сделать это в Emacs-AUCTeX? (Обычный способ изменить формат --- то есть вставить команду формата --- выбрать слово [отметить его область], а затем нажать комбинацию клавиш для команды [например, C-c C-f C-i для вставки \textit{}].)

+0

Функция все равно будет выбирать слово (но просто делает это для вас), а затем (в той же функции) вы можете вызвать фрагмент, который производит изменение. – lawlist

ответ

1

Ярлык C-c C-f звонки TeX-font. Затем он подчеркивает/выделяет/независимо, на основе последнего ключевого аккорда. Таким образом, решение посоветовать эту функцию:

(defvar TeX-font-current-word t) 

(defadvice TeX-font (before TeX-font-word (replace what)) 
    "If nothing is selected and `TeX-font-current-word' is not nil, 
mark current word before calling `TeX-font'." 
    (when (and TeX-font-current-word 
      (not replace) 
      (not (region-active-p)) 
      (not (looking-at "\\s-"))) 
    (unless (looking-back "\\s-") (backward-word)) 
    (mark-word))) 

(ad-activate 'TeX-font) 

Теперь, когда не выбран ни один регион, TeX-font будет работать, как если бы было выбрано текущее слово . Вы можете включить или выключить это поведение, установив TeX-font-current-word в t/nil.

+0

Прохладный! Единственная проблема заключается в том, что точка помещается в пустое пространство (даже при EOL). Он автоматически изменяет следующее слово (даже первое слово следующей строки). Можно ли это исправить? – NVaughan

+0

Какое ваше желание? Не очевидно, что делать в этой ситуации. –

+0

Если в пробеле просто вставьте макрос. – NVaughan

1

В случае, если нет решения с того места, Emacs предлагает два способа в основном один раз в последовательность команд/ключей известно:

либо хранить их в клавишнике макрос, который будет мощь называется только с одним ключом - или поместить все команды в функцию, сделать ее командой, назначить ключ.