File: evil-types.el.html
A type defines a transformation on a pair of buffer positions.
Types are used by Visual state (character/line/block selection) and Operator-Pending state (character/line/block motions).
The basic transformation is "expansion". For example, the line
type "expands" a pair of positions to whole lines by moving the
first position to the beginning of the line and the last position
to the end of the line. That expanded selection is what the rest
of Emacs sees and acts on.
An optional transformation is "contraction", which is the opposite
of expansion. If the transformation is one-to-one, expansion
followed by contraction always returns the original range.
(The line type is not one-to-one, as it may expand multiple
positions to the same lines.)
Another optional transformation is "normalization", which takes two unexpanded positions and adjusts them before expansion. This is useful for cleaning up "invalid" positions.
Types are defined at the end of this file using the macro
evil-define-type.