From 632b5909af96861c881865afae8638a2fd072668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Wed, 14 Oct 2015 23:00:47 +0200 Subject: vis: introduce special keys which allow mappings to editor actions Key bindings in vis are always recursive, hence mapping ~ to ~l will cause an infinite loop. Instead vis supports special editor "keys" which map to internal editor functions. As an example one can thus map ~ to l or even Furthermore this makes it possible to completely unmap core editor features such as operators, the corresponding funtionality is still available via its corresponding special key. --- editor.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'editor.h') diff --git a/editor.h b/editor.h index 87d9aeb..e7b5f0a 100644 --- a/editor.h +++ b/editor.h @@ -253,6 +253,7 @@ struct Editor { volatile sig_atomic_t cancel_filter; /* abort external command */ volatile sig_atomic_t sigbus; sigjmp_buf sigbus_jmpbuf; + Map *actions; /* built in special editor keys / commands */ }; Editor *editor_new(Ui*); @@ -266,6 +267,8 @@ bool editor_mode_bindings(Mode*, KeyBinding**); bool editor_mode_map(Mode*, const char *name, KeyBinding*); bool editor_mode_unmap(Mode*, const char *name); +bool editor_action_register(Editor*, KeyAction*); + /* these function operate on the currently focused window but make sure * that all windows which show the affected region are redrawn too. */ void editor_insert_key(Editor*, const char *data, size_t len); -- cgit v1.2.3