diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-01-28 14:03:57 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-01-28 14:12:51 +0100 |
| commit | 043a183d1465f578775e2a28bdc0a5c44afccd40 (patch) | |
| tree | ce040f1bdea8af6ea0819532fb4a1849fb3a831b /vis-core.h | |
| parent | b8afec996a400fe42e110033031443d18175d4cd (diff) | |
| download | vis-043a183d1465f578775e2a28bdc0a5c44afccd40.tar.gz vis-043a183d1465f578775e2a28bdc0a5c44afccd40.tar.xz | |
vis: keep track of most recently processed keys of input queue
Currently the key handling functions do not know through which mapping
they were invoked. As an example the `count` handler exploits the
implementation detail that the input queue is stored in contiguous
memory, meaning `keys[-1]` gives access to the digit being pressed.
This adds infrastructure to keep track of the two most recently processed
keys of the input queue.
The information is guaranteed to be accurate for the initial invocation
of the key handler but will be overwritten in case new keys are pushed
to the input queue (e.g. through vis_keys_feed).
Diffstat (limited to 'vis-core.h')
| -rw-r--r-- | vis-core.h | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -174,7 +174,9 @@ struct Vis { Map *options; /* ":set"-options */ Map *keymap; /* key translation before any bindings are matched */ bool keymap_disabled; /* ignore key map for next key press, gets automatically re-enabled */ - char key[64]; /* last pressed key as reported from the UI */ + char key[VIS_KEY_LENGTH_MAX]; /* last pressed key as reported from the UI */ + char key_current[VIS_KEY_LENGTH_MAX];/* current key being processed by the input queue */ + char key_prev[VIS_KEY_LENGTH_MAX]; /* previous key which was processed by the input queue */ Buffer input_queue; /* holds pending input keys */ Buffer *keys; /* currently active keys buffer (either the input_queue or a macro) */ bool errorhandler; /* whether we are currently in an error handler, used to avoid recursion */ |
