Question

One nice feature of modern word processors is that one can change the format (say, from roman to italic) of a word without actually selecting it; one just needs to place the text cursor within the word and tell the word processor (via a keyboard shortcut) to change its format. (Smart editing, I believe it is sometimes called.)

Is there a way of doing that in Emacs-AUCTeX? (The usual way to change the format---that is, insert a format command---is to select the word [mark its region] and then press the key combination for the command [e.g. C-c C-f C-i to insert \textit{}].)

Était-ce utile?

La solution

The shortcut C-c C-f calls TeX-font. Then it emphasizes/italicizes/whatever, based on the last key chord. So the solution is to advice this function:

(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)

Now, when no region is selected, TeX-font will work as if the current word was selected. You can turn this behavior on/off by setting TeX-font-current-word to t/nil.

Autres conseils

In case there is no solution right from the spot, Emacs offers two ways basically once the succession of commands/keys is known:

either store them into a keyboard-macro, which be might called with just one key - or put all the commands into a function, make it a command, assign a key.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top