简体   繁体   中英

Change the format of a word in Emacs-AUCTeX without actually selecting it

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 [eg Cc Cf Ci to insert \\textit{} ].)

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.

The shortcut Cc Cf 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 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM