text: introduce text_iterator_text
[vis.git] / doc / vis.rst
blob177455296a6d9db3b3c144cfd06dee21fb49e1b9
1 Vis
2 ===
4 The core Vis API.
6 Lifecycle
7 ---------
9 .. doxygengroup:: vis_lifecycle
10    :content-only:
12 Draw
13 ----
15 .. doxygengroup:: vis_draw
16    :content-only:
18 Windows
19 -------
21 .. doxygengroup:: vis_windows
22    :content-only:
24 Input
25 -----
27 The editor core processes input through a sequences of symbolic keys:
29  * Special keys such as ``<Enter>``, ``<Tab>`` or ``<Backspace>`` as reported by
30    `termkey_strfkey <http://www.leonerd.org.uk/code/libtermkey/doc/termkey_strfkey.3.html>`_.
32    .. note:: The prefixes ``C-``, ``S-`` and ``M-`` are used to denote the ``Ctrl``,
33              ``Shift`` and ``Alt`` modifiers, respectively.
35  * Key action names as registered with `vis_action_register`.
37    .. note:: By convention they are prefixed with ``vis-`` as in ``<vis-nop>``.
39  * Regular UTF-8 encoded input.
41 .. note:: An exhaustive list of the first two types is displayed in the ``:help`` output.
43 .. doxygengroup:: vis_keys
44    :content-only:
46 Key Map
47 -------
49 The key map is used to translate keys in non-input modes, *before* any key
50 bindings are evaluated. It is intended to facilitate usage of non-latin keyboard
51 layouts.
53 .. doxygengroup:: vis_keymap
54    :content-only:
56 Key Binding
57 -----------
59 Each mode has a set of key bindings. A key binding maps a key to either
60 another key (referred to as an alias) or a key action (implementing an
61 editor operation).
63 If a key sequence is ambiguous (i.e. it is a prefix of multiple mappings)
64 more input is awaited, until a unique mapping can be resolved.
66 .. warning:: Key aliases are always evaluated recursively.
68 .. doxygengroup:: vis_keybind
69    :content-only:
71 Key Action
72 ----------
74 A key action is invoked by a key binding and implements a certain editor function.
76 The editor operates like a finite state machine with key sequences as
77 transition labels. Once a prefix of the input queue uniquely refers to a
78 key action, it is invoked with the remainder of the input queue passed as argument.
80 .. note:: A triggered key action currently does not know through which key binding
81           it was invoked. TODO: change that?
83 .. doxygengroup:: vis_action
84    :content-only:
86 Modes
87 -----
89 A mode defines *enter*, *leave* and *idle* actions and captures a set of
90 key bindings.
92 Modes are hierarchical, key bindings are searched recursively towards
93 the top of the hierarchy stopping at the first match.
95 .. doxygenenum:: VisMode
96 .. doxygengroup:: vis_modes
97    :content-only:
99 Count
100 -----
102 Dictates how many times a motion or text object is evaluated. If none
103 is specified, a minimal count of 1 is assumed.
105 .. doxygengroup:: vis_count
106    :content-only:
108 Operators
109 ---------
111 .. doxygengroup:: vis_operators
112    :content-only:
114 Motions
115 -------
117 .. doxygengroup:: vis_motions
118    :content-only:
120 Text Objects
121 ------------
123 .. doxygengroup:: vis_textobjs
124    :content-only:
126 Marks
127 -----
129 Marks keep track of a given text position.
131 .. note:: Marks are currently file local.
133 .. doxygengroup:: vis_marks
134    :content-only:
136 Registers
137 ---------
139 .. doxygengroup:: vis_registers
140    :content-only:
142 Macros
143 ------
145 Macros are a sequence of keys stored in a Register which can be reprocessed
146 as if entered by the user.
148 .. warning:: Macro support is currently half-baked. If you do something stupid
149              (e.g. use mutually recursive macros), you will likely encounter
150              stack overflows.
152 .. doxygengroup:: vis_macros
153    :content-only:
155 Commands
156 --------
158 .. doxygengroup:: vis_cmds
159    :content-only:
161 Options
162 -------
164 .. doxygengroup:: vis_options
165    :content-only:
167 Modification
168 ------------
170 These function operate on the currently focused window but ensure that
171 all windows which show the affected region are redrawn too.
173 .. doxygengroup:: vis_changes
174    :content-only:
176 Interaction
177 -----------
179 .. doxygengroup:: vis_info
180    :content-only:
182 Miscellaneous
183 -------------
185 .. doxygengroup:: vis_misc
186    :content-only: