summaryrefslogtreecommitdiff
path: root/Src/Zle/zle_bindings.c
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-04-15 18:05:38 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-04-15 18:05:38 +0000
commite74702b467171dbdafb56dfe354794a212e020d9 (patch)
treec295b3e9b2e93e2de10331877442615b0f37e779 /Src/Zle/zle_bindings.c
parentc175751b501a3a4cb40ad4787340a597ea769be4 (diff)
downloadzsh-e74702b467171dbdafb56dfe354794a212e020d9.tar.gz
zsh-e74702b467171dbdafb56dfe354794a212e020d9.zip
Initial revision
Diffstat (limited to 'Src/Zle/zle_bindings.c')
-rw-r--r--Src/Zle/zle_bindings.c421
1 files changed, 421 insertions, 0 deletions
diff --git a/Src/Zle/zle_bindings.c b/Src/Zle/zle_bindings.c
new file mode 100644
index 000000000..40e555ad1
--- /dev/null
+++ b/Src/Zle/zle_bindings.c
@@ -0,0 +1,421 @@
+/*
+ * zle_bindings.c - commands and keymaps
+ *
+ * This file is part of zsh, the Z shell.
+ *
+ * Copyright (c) 1992-1997 Paul Falstad
+ * All rights reserved.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and to distribute modified versions of this software for any
+ * purpose, provided that the above copyright notice and the following
+ * two paragraphs appear in all copies of this software.
+ *
+ * In no event shall Paul Falstad or the Zsh Development Group be liable
+ * to any party for direct, indirect, special, incidental, or consequential
+ * damages arising out of the use of this software and its documentation,
+ * even if Paul Falstad and the Zsh Development Group have been advised of
+ * the possibility of such damage.
+ *
+ * Paul Falstad and the Zsh Development Group specifically disclaim any
+ * warranties, including, but not limited to, the implied warranties of
+ * merchantability and fitness for a particular purpose. The software
+ * provided hereunder is on an "as is" basis, and Paul Falstad and the
+ * Zsh Development Group have no obligation to provide maintenance,
+ * support, updates, enhancements, or modifications.
+ *
+ */
+
+#include "zle.mdh"
+#include "zle_widget.h"
+
+#include "zle_bindings.pro"
+
+/*
+ * widgets is the table of internally implemented widgets. This
+ * table is not used directly, but each widget in it is referenced
+ * by address from within the table of thingies (below). The only
+ * complication here is that not all systems support union
+ * initialisation.
+ */
+
+static
+#ifdef HAVE_UNION_INIT
+# define BR(X) {X}
+struct widget
+#else /* !HAVE_UNION_INIT */
+# define BR(X) X
+struct intwidget {
+ int flags;
+ Thingy first;
+ ZleIntFunc fn;
+}
+#endif /* !HAVE_UNION_INIT */
+widgets[] = {
+#define W(zle_flags, t_firstname, functionname) \
+ { WIDGET_INT | zle_flags, t_firstname, BR(functionname) },
+#include "widgets.list"
+#undef W
+};
+
+/*
+ * thingies is the table of `known thingies', that exist on startup.
+ * Some bits of ZLE rely on some of these thingies always being the
+ * ones in this table, rather than doing a name lookup and accepting
+ * any semantically identical thingy. The initial reference count of
+ * these thingies is 2: 1 for the widget they name, and 1 extra to
+ * make sure they never get deleted.
+ */
+
+/**/
+struct thingy thingies[] = {
+#define T(name, th_flags, w_idget, t_next) \
+ { NULL, name, th_flags, 2, w_idget, t_next },
+#include "thingies.list"
+#undef T
+ { NULL, NULL, 0, 0, NULL, NULL }
+};
+
+/*
+ * Default key binding tables:
+ *
+ * In these tables, each element is bound to a single thingy, the index
+ * of which in the above table is stored here.
+ */
+
+/**/
+int emacsbind[32] = {
+ /* ^@ */ z_setmarkcommand,
+ /* ^A */ z_beginningofline,
+ /* ^B */ z_backwardchar,
+ /* ^C */ z_undefinedkey,
+ /* ^D */ z_deletecharorlist,
+ /* ^E */ z_endofline,
+ /* ^F */ z_forwardchar,
+ /* ^G */ z_sendbreak,
+ /* ^H */ z_backwarddeletechar,
+ /* ^I */ z_expandorcomplete,
+ /* ^J */ z_acceptline,
+ /* ^K */ z_killline,
+ /* ^L */ z_clearscreen,
+ /* ^M */ z_acceptline,
+ /* ^N */ z_downlineorhistory,
+ /* ^O */ z_acceptlineanddownhistory,
+ /* ^P */ z_uplineorhistory,
+ /* ^Q */ z_pushline,
+ /* ^R */ z_historyincrementalsearchbackward,
+ /* ^S */ z_historyincrementalsearchforward,
+ /* ^T */ z_transposechars,
+ /* ^U */ z_killwholeline,
+ /* ^V */ z_quotedinsert,
+ /* ^W */ z_backwardkillword,
+ /* ^X */ z_undefinedkey,
+ /* ^Y */ z_yank,
+ /* ^Z */ z_undefinedkey,
+ /* ^[ */ z_undefinedkey,
+ /* ^\ */ z_undefinedkey,
+ /* ^] */ z_undefinedkey,
+ /* ^^ */ z_undefinedkey,
+ /* ^_ */ z_undo,
+};
+
+/**/
+int metabind[128] = {
+ /* M-^@ */ z_undefinedkey,
+ /* M-^A */ z_undefinedkey,
+ /* M-^B */ z_undefinedkey,
+ /* M-^C */ z_undefinedkey,
+ /* M-^D */ z_listchoices,
+ /* M-^E */ z_undefinedkey,
+ /* M-^F */ z_undefinedkey,
+ /* M-^G */ z_sendbreak,
+ /* M-^H */ z_backwardkillword,
+ /* M-^I */ z_selfinsertunmeta,
+ /* M-^J */ z_selfinsertunmeta,
+ /* M-^K */ z_undefinedkey,
+ /* M-^L */ z_clearscreen,
+ /* M-^M */ z_selfinsertunmeta,
+ /* M-^N */ z_undefinedkey,
+ /* M-^O */ z_undefinedkey,
+ /* M-^P */ z_undefinedkey,
+ /* M-^Q */ z_undefinedkey,
+ /* M-^R */ z_undefinedkey,
+ /* M-^S */ z_undefinedkey,
+ /* M-^T */ z_undefinedkey,
+ /* M-^U */ z_undefinedkey,
+ /* M-^V */ z_undefinedkey,
+ /* M-^W */ z_undefinedkey,
+ /* M-^X */ z_undefinedkey,
+ /* M-^Y */ z_undefinedkey,
+ /* M-^Z */ z_undefinedkey,
+ /* M-^[ */ z_undefinedkey,
+ /* M-^\ */ z_undefinedkey,
+ /* M-^] */ z_undefinedkey,
+ /* M-^^ */ z_undefinedkey,
+ /* M-^_ */ z_copyprevword,
+ /* M- */ z_expandhistory,
+ /* M-! */ z_expandhistory,
+ /* M-" */ z_quoteregion,
+ /* M-# */ z_undefinedkey,
+ /* M-$ */ z_spellword,
+ /* M-% */ z_undefinedkey,
+ /* M-& */ z_undefinedkey,
+ /* M-' */ z_quoteline,
+ /* M-( */ z_undefinedkey,
+ /* M-) */ z_undefinedkey,
+ /* M-* */ z_undefinedkey,
+ /* M-+ */ z_undefinedkey,
+ /* M-, */ z_undefinedkey,
+ /* M-- */ z_negargument,
+ /* M-. */ z_insertlastword,
+ /* M-/ */ z_undefinedkey,
+ /* M-0 */ z_digitargument,
+ /* M-1 */ z_digitargument,
+ /* M-2 */ z_digitargument,
+ /* M-3 */ z_digitargument,
+ /* M-4 */ z_digitargument,
+ /* M-5 */ z_digitargument,
+ /* M-6 */ z_digitargument,
+ /* M-7 */ z_digitargument,
+ /* M-8 */ z_digitargument,
+ /* M-9 */ z_digitargument,
+ /* M-: */ z_undefinedkey,
+ /* M-; */ z_undefinedkey,
+ /* M-< */ z_beginningofbufferorhistory,
+ /* M-= */ z_undefinedkey,
+ /* M-> */ z_endofbufferorhistory,
+ /* M-? */ z_whichcommand,
+ /* M-@ */ z_undefinedkey,
+ /* M-A */ z_acceptandhold,
+ /* M-B */ z_backwardword,
+ /* M-C */ z_capitalizeword,
+ /* M-D */ z_killword,
+ /* M-E */ z_undefinedkey,
+ /* M-F */ z_forwardword,
+ /* M-G */ z_getline,
+ /* M-H */ z_runhelp,
+ /* M-I */ z_undefinedkey,
+ /* M-J */ z_undefinedkey,
+ /* M-K */ z_undefinedkey,
+ /* M-L */ z_downcaseword,
+ /* M-M */ z_undefinedkey,
+ /* M-N */ z_historybeginningsearchforward,
+ /* M-O */ z_undefinedkey,
+ /* M-P */ z_historybeginningsearchbackward,
+ /* M-Q */ z_pushline,
+ /* M-R */ z_undefinedkey,
+ /* M-S */ z_spellword,
+ /* M-T */ z_transposewords,
+ /* M-U */ z_upcaseword,
+ /* M-V */ z_undefinedkey,
+ /* M-W */ z_copyregionaskill,
+ /* M-X */ z_undefinedkey,
+ /* M-Y */ z_undefinedkey,
+ /* M-Z */ z_undefinedkey,
+ /* M-[ */ z_undefinedkey,
+ /* M-\ */ z_undefinedkey,
+ /* M-] */ z_undefinedkey,
+ /* M-^ */ z_undefinedkey,
+ /* M-_ */ z_insertlastword,
+ /* M-` */ z_undefinedkey,
+ /* M-a */ z_acceptandhold,
+ /* M-b */ z_backwardword,
+ /* M-c */ z_capitalizeword,
+ /* M-d */ z_killword,
+ /* M-e */ z_undefinedkey,
+ /* M-f */ z_forwardword,
+ /* M-g */ z_getline,
+ /* M-h */ z_runhelp,
+ /* M-i */ z_undefinedkey,
+ /* M-j */ z_undefinedkey,
+ /* M-k */ z_undefinedkey,
+ /* M-l */ z_downcaseword,
+ /* M-m */ z_undefinedkey,
+ /* M-n */ z_historybeginningsearchforward,
+ /* M-o */ z_undefinedkey,
+ /* M-p */ z_historybeginningsearchbackward,
+ /* M-q */ z_pushline,
+ /* M-r */ z_undefinedkey,
+ /* M-s */ z_spellword,
+ /* M-t */ z_transposewords,
+ /* M-u */ z_upcaseword,
+ /* M-v */ z_undefinedkey,
+ /* M-w */ z_copyregionaskill,
+ /* M-x */ z_executenamedcmd,
+ /* M-y */ z_yankpop,
+ /* M-z */ z_executelastnamedcmd,
+ /* M-{ */ z_undefinedkey,
+ /* M-| */ z_vigotocolumn,
+ /* M-} */ z_undefinedkey,
+ /* M-~ */ z_undefinedkey,
+ /* M-^? */ z_backwardkillword,
+};
+
+/**/
+int viinsbind[32] = {
+ /* ^@ */ z_undefinedkey,
+ /* ^A */ z_selfinsert,
+ /* ^B */ z_selfinsert,
+ /* ^C */ z_selfinsert,
+ /* ^D */ z_listchoices,
+ /* ^E */ z_selfinsert,
+ /* ^F */ z_selfinsert,
+ /* ^G */ z_listexpand,
+ /* ^H */ z_vibackwarddeletechar,
+ /* ^I */ z_expandorcomplete,
+ /* ^J */ z_acceptline,
+ /* ^K */ z_selfinsert,
+ /* ^L */ z_clearscreen,
+ /* ^M */ z_acceptline,
+ /* ^N */ z_selfinsert,
+ /* ^O */ z_selfinsert,
+ /* ^P */ z_selfinsert,
+ /* ^Q */ z_viquotedinsert,
+ /* ^R */ z_redisplay,
+ /* ^S */ z_selfinsert,
+ /* ^T */ z_selfinsert,
+ /* ^U */ z_vikillline,
+ /* ^V */ z_viquotedinsert,
+ /* ^W */ z_vibackwardkillword,
+ /* ^X */ z_selfinsert,
+ /* ^Y */ z_selfinsert,
+ /* ^Z */ z_selfinsert,
+ /* ^[ */ z_vicmdmode,
+ /* ^\ */ z_selfinsert,
+ /* ^] */ z_selfinsert,
+ /* ^^ */ z_selfinsert,
+ /* ^_ */ z_selfinsert,
+};
+
+/**/
+int vicmdbind[128] = {
+ /* ^@ */ z_undefinedkey,
+ /* ^A */ z_undefinedkey,
+ /* ^B */ z_undefinedkey,
+ /* ^C */ z_undefinedkey,
+ /* ^D */ z_listchoices,
+ /* ^E */ z_undefinedkey,
+ /* ^F */ z_undefinedkey,
+ /* ^G */ z_listexpand,
+ /* ^H */ z_vibackwardchar,
+ /* ^I */ z_undefinedkey,
+ /* ^J */ z_acceptline,
+ /* ^K */ z_undefinedkey,
+ /* ^L */ z_clearscreen,
+ /* ^M */ z_acceptline,
+ /* ^N */ z_downhistory,
+ /* ^O */ z_undefinedkey,
+ /* ^P */ z_uphistory,
+ /* ^Q */ z_undefinedkey,
+ /* ^R */ z_redisplay,
+ /* ^S */ z_undefinedkey,
+ /* ^T */ z_undefinedkey,
+ /* ^U */ z_undefinedkey,
+ /* ^V */ z_undefinedkey,
+ /* ^W */ z_undefinedkey,
+ /* ^X */ z_undefinedkey,
+ /* ^Y */ z_undefinedkey,
+ /* ^Z */ z_undefinedkey,
+ /* ^[ */ z_undefinedkey,
+ /* ^\ */ z_undefinedkey,
+ /* ^] */ z_undefinedkey,
+ /* ^^ */ z_undefinedkey,
+ /* ^_ */ z_undefinedkey,
+ /* */ z_viforwardchar,
+ /* ! */ z_undefinedkey,
+ /* " */ z_visetbuffer,
+ /* # */ z_poundinsert,
+ /* $ */ z_viendofline,
+ /* % */ z_vimatchbracket,
+ /* & */ z_undefinedkey,
+ /* ' */ z_vigotomarkline,
+ /* ( */ z_undefinedkey,
+ /* ) */ z_undefinedkey,
+ /* * */ z_undefinedkey,
+ /* + */ z_vidownlineorhistory,
+ /* , */ z_virevrepeatfind,
+ /* - */ z_viuplineorhistory,
+ /* . */ z_virepeatchange,
+ /* / */ z_vihistorysearchbackward,
+ /* 0 */ z_vidigitorbeginningofline,
+ /* 1 */ z_digitargument,
+ /* 2 */ z_digitargument,
+ /* 3 */ z_digitargument,
+ /* 4 */ z_digitargument,
+ /* 5 */ z_digitargument,
+ /* 6 */ z_digitargument,
+ /* 7 */ z_digitargument,
+ /* 8 */ z_digitargument,
+ /* 9 */ z_digitargument,
+ /* : */ z_undefinedkey,
+ /* ; */ z_virepeatfind,
+ /* < */ z_viunindent,
+ /* = */ z_listchoices,
+ /* > */ z_viindent,
+ /* ? */ z_vihistorysearchforward,
+ /* @ */ z_undefinedkey,
+ /* A */ z_viaddeol,
+ /* B */ z_vibackwardblankword,
+ /* C */ z_vichangeeol,
+ /* D */ z_vikilleol,
+ /* E */ z_viforwardblankwordend,
+ /* F */ z_vifindprevchar,
+ /* G */ z_vifetchhistory,
+ /* H */ z_undefinedkey,
+ /* I */ z_viinsertbol,
+ /* J */ z_vijoin,
+ /* K */ z_undefinedkey,
+ /* L */ z_undefinedkey,
+ /* M */ z_undefinedkey,
+ /* N */ z_virevrepeatsearch,
+ /* O */ z_viopenlineabove,
+ /* P */ z_viputbefore,
+ /* Q */ z_undefinedkey,
+ /* R */ z_vireplace,
+ /* S */ z_vichangewholeline,
+ /* T */ z_vifindprevcharskip,
+ /* U */ z_undefinedkey,
+ /* V */ z_undefinedkey,
+ /* W */ z_viforwardblankword,
+ /* X */ z_vibackwarddeletechar,
+ /* Y */ z_viyankwholeline,
+ /* Z */ z_undefinedkey,
+ /* [ */ z_undefinedkey,
+ /* \ */ z_undefinedkey,
+ /* ] */ z_undefinedkey,
+ /* ^ */ z_vifirstnonblank,
+ /* _ */ z_undefinedkey,
+ /* ` */ z_vigotomark,
+ /* a */ z_viaddnext,
+ /* b */ z_vibackwardword,
+ /* c */ z_vichange,
+ /* d */ z_videlete,
+ /* e */ z_viforwardwordend,
+ /* f */ z_vifindnextchar,
+ /* g */ z_undefinedkey,
+ /* h */ z_vibackwardchar,
+ /* i */ z_viinsert,
+ /* j */ z_downlineorhistory,
+ /* k */ z_uplineorhistory,
+ /* l */ z_viforwardchar,
+ /* m */ z_visetmark,
+ /* n */ z_virepeatsearch,
+ /* o */ z_viopenlinebelow,
+ /* p */ z_viputafter,
+ /* q */ z_undefinedkey,
+ /* r */ z_vireplacechars,
+ /* s */ z_visubstitute,
+ /* t */ z_vifindnextcharskip,
+ /* u */ z_viundochange,
+ /* v */ z_undefinedkey,
+ /* w */ z_viforwardword,
+ /* x */ z_videletechar,
+ /* y */ z_viyank,
+ /* z */ z_undefinedkey,
+ /* { */ z_undefinedkey,
+ /* | */ z_vigotocolumn,
+ /* } */ z_undefinedkey,
+ /* ~ */ z_viswapcase,
+ /* ^? */ z_vibackwardchar,
+};