Next: , Previous: Hungry WS Deletion, Up: Commands


4.9 Subword Movement and Editing

In spite of the GNU Coding Standards, it is popular to name a symbol by mixing uppercase and lowercase letters, e.g. `GtkWidget', `EmacsFrameClass', or `NSGraphicsContext'. Here we call these mixed case symbols nomenclatures. Also, each capitalized (or completely uppercase) part of a nomenclature is called a subword. Here are some examples:

Nomenclature Subwords
————————————————————————————
`GtkWindow' `Gtk' and `Window'
`EmacsFrameClass' `Emacs', `Frame', and `Class'
`NSGraphicsContext' `NS', `Graphics', and `Context'

The subword minor mode replaces the basic word oriented movement and editing commands with variants that recognize subwords in a nomenclature and treat them as separate words:

Key Word oriented command Subword oriented command
—————————————————————————————————————–
M-f forward-word c-forward-subword
M-b backward-word c-backward-subword
M-@ mark-word c-mark-subword
M-d kill-word c-kill-subword
M-DEL backward-kill-word c-backward-kill-subword
M-t transpose-words c-transpose-subwords
M-c capitalize-word c-capitalize-subword
M-u upcase-word c-upcase-subword
M-l downcase-word c-downcase-subword

Note that if you have changed the key bindings for the word oriented commands in your .emacs or a similar place, the keys you have configured are also used for the corresponding subword oriented commands.

Type C-c C-w to toggle subword mode on and off. To make the mode turn on automatically, put the following code in your .emacs:

     (add-hook 'c-mode-common-hook
               (lambda () (c-subword-mode 1)))

As a bonus, you can also use c-subword-mode in non-CC Mode buffers by typing M-x c-subword-mode.