diff options
Diffstat (limited to 'Src/Zle/zle_bindings.c')
-rw-r--r-- | Src/Zle/zle_bindings.c | 421 |
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, +}; |