diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-04-19 13:11:52 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-04-19 13:42:25 +0200 |
| commit | 2c8fcaa8fbb17b99aa5b0f8bfbbe0451dfa509f3 (patch) | |
| tree | 1160dd96040c19f2a6da365e29240d978c6067ca /vis-core.h | |
| parent | a2316394d35eb548545730cbf2b57b27e733214c (diff) | |
| download | vis-2c8fcaa8fbb17b99aa5b0f8bfbbe0451dfa509f3.tar.gz vis-2c8fcaa8fbb17b99aa5b0f8bfbbe0451dfa509f3.tar.xz | |
vis: restructure register handling
Decouple register content from cursors. Previously each cursor had
exactly one corresponding register. Now each register can save a
list of values whose lifetime is not tied to the cursor.
If multiple cursors exist and a put with a register holding only
a single value is performed, then this value is inserted at every
cursor location. If there are fewer values available than cursors,
then only the matching ones will be used. If a register holding
multiple values is inserted in a single cursor context, only the
first value will be used. Another option would be to join all
existing values. The details of this behavior might be changed
in the future.
<C-r> in insert mode has not yet been adapted and register handling
in general needs to be cleaned up further.
Fix #527
Diffstat (limited to 'vis-core.h')
| -rw-r--r-- | vis-core.h | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -10,6 +10,7 @@ #include "map.h" #include "ring-buffer.h" #include "array.h" +#include "buffer.h" /* a mode contains a set of key bindings which are currently valid. * @@ -40,6 +41,7 @@ struct Mode { struct OperatorContext { int count; /* how many times should the command be executed? */ Register *reg; /* always non-NULL, set to a default register */ + size_t reg_slot; /* register slot to use */ Filerange range; /* which part of the file should be affected by the operator */ size_t pos; /* at which byte from the start of the file should the operation start? */ size_t newpos; /* new position after motion or EPOS if none given */ @@ -248,6 +250,7 @@ void action_reset(Action*); size_t vis_text_insert_nl(Vis*, Text*, size_t pos); void mode_set(Vis *vis, Mode *new_mode); +Macro *macro_get(Vis *vis, enum VisRegister); void window_selection_save(Win *win); Win *window_new_file(Vis*, File*, enum UiOption); |
