diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2014-08-31 11:07:42 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2014-08-31 11:07:42 +0200 |
| commit | c72fe77e5d3cf4ecb3b691a5fa582d0e96b5ec1e (patch) | |
| tree | 6b5487c3384e8c35c5b531fffca1f2b2bacc193d /vis.c | |
| parent | fbaeffb469d2fd6833a1301255f1ac73c7226a83 (diff) | |
| download | vis-c72fe77e5d3cf4ecb3b691a5fa582d0e96b5ec1e.tar.gz vis-c72fe77e5d3cf4ecb3b691a5fa582d0e96b5ec1e.tar.xz | |
First part of a vi like frontend
Still very incomplete
Diffstat (limited to 'vis.c')
| -rw-r--r-- | vis.c | 36 |
1 files changed, 3 insertions, 33 deletions
@@ -9,6 +9,7 @@ #include <sys/ioctl.h> #include "editor.h" +#include "vis.h" #include "util.h" #ifdef PDCURSES @@ -18,39 +19,6 @@ int ESCDELAY; # define set_escdelay(d) (ESCDELAY = (d)) #endif -typedef union { - size_t i; - const char *s; - size_t (*m)(Editor*); - void (*f)(Editor*); -} Arg; - -typedef struct { - char str[6]; - int code; -} Key; - -typedef struct { - Key key[2]; - void (*func)(const Arg *arg); - const Arg arg; -} KeyBinding; - -typedef struct Mode Mode; -struct Mode { - Mode *parent; - KeyBinding *bindings; - const char *name; - void (*enter)(void); - void (*leave)(void); - bool (*input)(const char *str, size_t len); -}; - -typedef struct { - char *name; - Mode *mode; -} Config; - static void cursor(const Arg *arg); static void call(const Arg *arg); static void insert(const Arg *arg); @@ -152,6 +120,8 @@ static KeyBinding *keybinding(Mode *mode, Key *key0, Key *key1) { if (keymatch(key0, &kb->key[0]) && (!key1 || keymatch(key1, &kb->key[1]))) return kb; } + if (mode->unknown && !mode->unknown(key0, key1)) + break; } return NULL; } |
