summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/mode-key.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2009-07-28 17:05:11 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2009-07-28 17:05:11 +0000
commitfdac46d6f899b49d104690311de0ac64162d89c7 (patch)
tree6fe1930e84dcda9cec807062c454025470bc2b10 /usr.bin/tmux/mode-key.c
parente08be4259306569ce6c3e59161bc8478e4dd2f56 (diff)
Final pieces of mode key rebinding: bind-key and unbind-key now accept a -t
argument to modify a table.
Diffstat (limited to 'usr.bin/tmux/mode-key.c')
-rw-r--r--usr.bin/tmux/mode-key.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/usr.bin/tmux/mode-key.c b/usr.bin/tmux/mode-key.c
index df0c6e66fc4..74ec7f7e554 100644
--- a/usr.bin/tmux/mode-key.c
+++ b/usr.bin/tmux/mode-key.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mode-key.c,v 1.10 2009/07/28 07:03:32 nicm Exp $ */
+/* $OpenBSD: mode-key.c,v 1.11 2009/07/28 17:05:10 nicm Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -18,6 +18,8 @@
#include <sys/types.h>
+#include <string.h>
+
#include "tmux.h"
/*
@@ -54,6 +56,8 @@ struct mode_key_cmdstr mode_key_cmdstr_edit[] = {
{ MODEKEYEDIT_STARTOFLINE, "start-of-line" },
{ MODEKEYEDIT_SWITCHMODE, "switch-mode" },
{ MODEKEYEDIT_SWITCHMODEAPPEND, "switch-mode-append" },
+
+ { 0, NULL }
};
/* Choice keys command strings. */
@@ -64,6 +68,8 @@ struct mode_key_cmdstr mode_key_cmdstr_choice[] = {
{ MODEKEYCHOICE_PAGEDOWN, "page-down" },
{ MODEKEYCHOICE_PAGEUP, "page-up" },
{ MODEKEYCHOICE_UP, "up" },
+
+ { 0, NULL }
};
/* Copy keys command strings. */
@@ -83,6 +89,8 @@ struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
{ MODEKEYCOPY_STARTOFLINE, "start-of-line" },
{ MODEKEYCOPY_STARTSELECTION, "begin-selection" },
{ MODEKEYCOPY_UP, "cursor-up" },
+
+ { 0, NULL }
};
/* vi editing keys. */
@@ -278,6 +286,28 @@ mode_key_tostring(struct mode_key_cmdstr *cmdstr, enum mode_key_cmd cmd)
return (NULL);
}
+enum mode_key_cmd
+mode_key_fromstring(struct mode_key_cmdstr *cmdstr, const char *name)
+{
+ for (; cmdstr->name != NULL; cmdstr++) {
+ if (strcasecmp(cmdstr->name, name) == 0)
+ return (cmdstr->cmd);
+ }
+ return (MODEKEY_NONE);
+}
+
+const struct mode_key_table *
+mode_key_findtable(const char *name)
+{
+ const struct mode_key_table *mtab;
+
+ for (mtab = mode_key_tables; mtab->name != NULL; mtab++) {
+ if (strcasecmp(name, mtab->name) == 0)
+ return (mtab);
+ }
+ return (NULL);
+}
+
void
mode_key_init_trees(void)
{