Change emacs keybinds for jumping to first/last entry - noice - small file brow… | |
git clone git://git.codemadness.org/noice | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 2a97bab5af5aba7ba6889e14c0fd47fe8110d85a | |
parent 155496adf93b918311950e3c70aa1d5d54565f5e | |
Author: sin <[email protected]> | |
Date: Mon, 9 Apr 2018 13:32:25 +0100 | |
Change emacs keybinds for jumping to first/last entry | |
Signed-off-by: sin <[email protected]> | |
Diffstat: | |
M config.def.h | 4 ++-- | |
M noice.1 | 6 +++--- | |
M noice.c | 21 ++++++++++++++++----- | |
3 files changed, 21 insertions(+), 10 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
@@ -49,11 +49,11 @@ struct key bindings[] = { | |
{ CONTROL('U'), SEL_PGUP }, | |
/* Home */ | |
{ KEY_HOME, SEL_HOME }, | |
- { CONTROL('A'), SEL_HOME }, | |
+ { META('<'), SEL_HOME }, | |
{ '^', SEL_HOME }, | |
/* End */ | |
{ KEY_END, SEL_END }, | |
- { CONTROL('E'), SEL_END }, | |
+ { META('>'), SEL_END }, | |
{ '$', SEL_END }, | |
/* Change dir */ | |
{ 'c', SEL_CD }, | |
diff --git a/noice.1 b/noice.1 | |
@@ -1,4 +1,4 @@ | |
-.Dd March 5, 2018 | |
+.Dd April 9, 2018 | |
.Dt NOICE 1 | |
.Os | |
.Sh NAME | |
@@ -39,9 +39,9 @@ Move to next entry. | |
Scroll up half a page. | |
.It Ic [Pgdown] or C-d | |
Scroll down half a page. | |
-.It Ic [Home], ^ or C-a | |
+.It Ic [Home], ^ or M-< | |
Move to the first entry. | |
-.It Ic [End], $ or C-e | |
+.It Ic [End], $ or M-> | |
Move to the last entry. | |
.It Ic l, [Right], [Return] or C-m | |
Open file or enter directory. | |
diff --git a/noice.c b/noice.c | |
@@ -38,6 +38,7 @@ | |
#define MIN(x, y) ((x) < (y) ? (x) : (y)) | |
#define ISODD(x) ((x) & 1) | |
#define CONTROL(c) ((c) ^ 0x40) | |
+#define META(c) ((c) ^ 0x80) | |
struct assoc { | |
char *regex; /* Regex to match on filename */ | |
@@ -335,18 +336,28 @@ printprompt(char *str) | |
printw(str); | |
} | |
-/* Returns SEL_* if key is bound and 0 otherwise. | |
- * Also modifies the run and env pointers (used on SEL_{RUN,RUNARG}) */ | |
-int | |
-nextsel(char **run, char **env) | |
+int xgetch(void) | |
{ | |
- int c, i; | |
+ int c; | |
c = getch(); | |
if (c == -1) | |
idle++; | |
else | |
idle = 0; | |
+ return c; | |
+} | |
+ | |
+/* Returns SEL_* if key is bound and 0 otherwise. | |
+ * Also modifies the run and env pointers (used on SEL_{RUN,RUNARG}) */ | |
+int | |
+nextsel(char **run, char **env) | |
+{ | |
+ int c, i; | |
+ | |
+ c = xgetch(); | |
+ if (c == 033) | |
+ c = META(xgetch()); | |
for (i = 0; i < LEN(bindings); i++) | |
if (c == bindings[i].sym) { |