11.6 Shift Selection
If you hold down the shift key while typing a cursor motion command, this sets the mark before moving point, so that the region extends from the original position of point to its new position. This feature is referred to as shift-selection. It is similar to the way text is selected in other editors.
The mark set via shift-selection behaves a little differently from
what we have described above. Firstly, in addition to the usual ways
of deactivating the mark (such as changing the buffer text or typing
C-g
), the mark is deactivated by any unshifted cursor
motion command. Secondly, any subsequent shifted cursor motion
command avoids setting the mark anew. Therefore, a series of shifted
cursor motion commands will continuously adjust the region.
Shift-selection only works if the shifted cursor motion key is not
already bound to a separate command (see Customization). For
example, if you bind S-C-f
to another command, typing
S-C-f
runs that command instead of performing a shift-selected
version of C-f
( forward-char
).
A mark set via mouse commands behaves the same as a mark set via shift-selection (see Setting the Mark). For example, if you specify a region by dragging the mouse, you can continue to extend the region using shifted cursor motion commands. In either case, any unshifted cursor motion command deactivates the mark.
To turn off shift-selection, set shift-select-mode
to
nil
. Doing so does not disable setting the mark via mouse
commands. If you set shift-select-mode
to the value
permanent
, cursor motion keys that were not shift-translated
will not deactivate the mark, so, for example, the region set by prior
commands can be extended by shift-selection, and unshifted cursor
motion keys will extend the region set by shift-selection.