version 1.2, 2000/03/03 19:31:26 |
version 1.3, 2000/04/13 06:12:15 |
|
|
#include "kbd.h" |
#include "kbd.h" |
|
|
/* |
/* |
* Defined by "basic.c". |
|
*/ |
|
extern int gotobol(); /* Move to start of line */ |
|
extern int backchar(); /* Move backward by characters */ |
|
extern int gotoeol(); /* Move to end of line */ |
|
extern int forwchar(); /* Move forward by characters */ |
|
extern int gotobob(); /* Move to start of buffer */ |
|
extern int gotoeob(); /* Move to end of buffer */ |
|
extern int forwline(); /* Move forward by lines */ |
|
extern int backline(); /* Move backward by lines */ |
|
extern int forwpage(); /* Move forward by pages */ |
|
extern int backpage(); /* Move backward by pages */ |
|
extern int pagenext(); /* Page forward next window */ |
|
extern int setmark(); /* Set mark */ |
|
extern int swapmark(); /* Swap "." and mark */ |
|
extern int gotoline(); /* Go to a specified line. */ |
|
#ifdef GOSMACS |
|
extern int forw1page(); /* move forward by lines */ |
|
extern int back1page(); /* move back by lines */ |
|
#endif |
|
|
|
/* |
|
* Defined by "buffer.c". |
|
*/ |
|
extern int listbuffers(); /* Display list of buffers */ |
|
extern int usebuffer(); /* Switch a window to a buffer */ |
|
extern int poptobuffer(); /* Other window to a buffer */ |
|
extern int killbuffer(); /* Make a buffer go away. */ |
|
extern int savebuffers(); /* Save unmodified buffers */ |
|
extern int bufferinsert(); /* Insert buffer into another */ |
|
extern int notmodified(); /* Reset modification flag */ |
|
|
|
#ifndef NO_DIR |
|
/* |
|
* Defined by "dir.c" |
|
*/ |
|
extern int changedir(); /* change current directory */ |
|
extern int showcwdir(); /* show current directory */ |
|
|
|
#ifndef NO_DIRED |
|
/* |
|
* defined by "dired.c" |
|
*/ |
|
extern int dired(); /* dired */ |
|
extern int d_findfile(); /* dired find file */ |
|
extern int d_del(); /* dired mark for deletion */ |
|
extern int d_undel(); /* dired unmark */ |
|
extern int d_undelbak(); /* dired unmark backwards */ |
|
extern int d_expunge(); /* dired expunge */ |
|
extern int d_copy(); /* dired copy */ |
|
extern int d_rename(); /* dired rename */ |
|
extern int d_otherwindow(); /* dired other window */ |
|
extern int d_ffotherwindow(); /* dired find file other window */ |
|
#endif |
|
#endif |
|
|
|
/* |
|
* Defined by "extend.c". |
|
*/ |
|
extern int extend(); /* Extended commands. */ |
|
extern int bindtokey(); /* Modify global key bindings. */ |
|
extern int localbind(); /* Modify mode key bindings. */ |
|
extern int define_key(); /* modify any key map */ |
|
extern int unbindtokey(); /* delete global binding */ |
|
extern int localunbind(); /* delete local binding */ |
|
extern int insert(); /* insert string */ |
|
#ifndef NO_STARTUP |
|
extern int evalexpr(); /* Extended commands (again) */ |
|
extern int evalbuffer(); /* Evaluate current buffer */ |
|
extern int evalfile(); /* Evaluate a file */ |
|
#endif |
|
|
|
/* |
|
* Defined by "file.c". |
|
*/ |
|
extern int filevisit(); /* Get a file, read write */ |
|
extern int poptofile(); /* Get a file, other window */ |
|
extern int filewrite(); /* Write a file */ |
|
extern int filesave(); /* Save current file */ |
|
extern int fileinsert(); /* Insert file into buffer */ |
|
#ifndef NO_BACKUP |
|
extern int makebkfile(); /* Control backups on saves */ |
|
#endif |
|
|
|
/* |
|
* defined by help.c |
|
*/ |
|
#ifndef NO_HELP |
|
extern int desckey(); /* describe key */ |
|
extern int wallchart(); /* Make wall chart. */ |
|
extern int help_help(); /* help help */ |
|
extern int apropos_command(); /* apropos */ |
|
#endif |
|
|
|
/* |
|
* defined by "kbd.c" |
|
*/ |
|
#ifdef DO_METAKEY |
|
extern int do_meta(); /* interpret meta keys */ |
|
#endif |
|
#ifdef BSMAP |
|
extern int bsmap(); /* backspace mapping */ |
|
#endif |
|
extern int universal_argument(); /* Ctrl-U */ |
|
extern int digit_argument(); /* M-1, etc. */ |
|
extern int negative_argument(); /* M-- */ |
|
extern int selfinsert(); /* Insert character */ |
|
extern int rescan(); /* internal try again function */ |
|
|
|
/* |
|
* defined by "macro.c" |
* defined by "macro.c" |
*/ |
*/ |
#ifndef NO_MACRO |
#ifndef NO_MACRO |
extern int definemacro(); /* Begin macro */ |
extern int definemacro(); /* Begin macro */ |
extern int finishmacro(); /* End macro */ |
extern int finishmacro(); /* End macro */ |
extern int executemacro(); /* Execute macro */ |
extern int executemacro(); /* Execute macro */ |
#endif |
#endif |
|
|
/* |
/* |
* Defined by "main.c". |
* Defined by "main.c". |
*/ |
*/ |
extern int ctrlg(); /* Abort out of things */ |
extern int ctrlg(); /* Abort out of things */ |
extern int quit(); /* Quit */ |
extern int quit(); /* Quit */ |
|
|
/* |
/* |
* Defined by "match.c" |
* Defined by "match.c" |
*/ |
*/ |
extern int showmatch(); /* Hack to show matching paren */ |
extern int showmatch(); /* Hack to show matching paren */ |
|
|
/* defined by "modes.c" */ |
/* defined by "modes.c" */ |
|
|
extern int indentmode(); /* set auto-indent mode */ |
extern int indentmode(); /* set auto-indent mode */ |
extern int fillmode(); /* set word-wrap mode */ |
extern int fillmode(); /* set word-wrap mode */ |
extern int blinkparen(); /* Fake blink-matching-paren var */ |
extern int blinkparen(); /* Fake blink-matching-paren var */ |
#ifdef NOTAB |
#ifdef NOTAB |
extern int notabmode(); /* no tab mode */ |
extern int notabmode(); /* no tab mode */ |
#endif |
#endif |
extern int overwrite(); /* overwrite mode */ |
extern int overwrite(); /* overwrite mode */ |
extern int set_default_mode(); /* set default modes */ |
extern int set_default_mode(); /* set default modes */ |
|
|
/* |
/* |
* defined by "paragraph.c" - the paragraph justification code. |
* defined by "paragraph.c" - the paragraph justification code. |
*/ |
*/ |
extern int gotobop(); /* Move to start of paragraph. */ |
extern int gotobop(); /* Move to start of paragraph. */ |
extern int gotoeop(); /* Move to end of paragraph. */ |
extern int gotoeop(); /* Move to end of paragraph. */ |
extern int fillpara(); /* Justify a paragraph. */ |
extern int fillpara(); /* Justify a paragraph. */ |
extern int killpara(); /* Delete a paragraph. */ |
extern int killpara(); /* Delete a paragraph. */ |
extern int setfillcol(); /* Set fill column for justify. */ |
extern int setfillcol(); /* Set fill column for justify. */ |
extern int fillword(); /* Insert char with word wrap. */ |
extern int fillword(); /* Insert char with word wrap. */ |
|
|
/* |
/* |
* Defined by "random.c". |
* Defined by "random.c". |
*/ |
*/ |
extern int showcpos(); /* Show the cursor position */ |
extern int showcpos(); /* Show the cursor position */ |
extern int twiddle(); /* Twiddle characters */ |
extern int twiddle(); /* Twiddle characters */ |
extern int quote(); /* Insert literal */ |
extern int quote(); /* Insert literal */ |
extern int openline(); /* Open up a blank line */ |
extern int openline(); /* Open up a blank line */ |
extern int newline(); /* Insert newline */ |
extern int newline(); /* Insert newline */ |
extern int deblank(); /* Delete blank lines */ |
extern int deblank(); /* Delete blank lines */ |
extern int justone(); /* Delete extra whitespace */ |
extern int justone(); /* Delete extra whitespace */ |
extern int delwhite(); /* Delete all whitespace */ |
extern int delwhite(); /* Delete all whitespace */ |
extern int indent(); /* Insert newline, then indent */ |
extern int indent(); /* Insert newline, then indent */ |
extern int forwdel(); /* Forward delete */ |
extern int forwdel(); /* Forward delete */ |
extern int backdel(); /* Backward delete in */ |
extern int backdel(); /* Backward delete in */ |
extern int killline(); /* Kill forward */ |
extern int killline(); /* Kill forward */ |
extern int yank(); /* Yank back from killbuffer. */ |
extern int yank(); /* Yank back from killbuffer. */ |
#ifdef NOTAB |
#ifdef NOTAB |
extern int space_to_tabstop(); |
extern int space_to_tabstop(); |
#endif |
#endif |
|
|
#ifdef REGEX |
#ifdef REGEX |
/* |
/* |
* Defined by "re_search.c" |
* Defined by "re_search.c" |
*/ |
*/ |
extern int re_forwsearch(); /* Regex search forward */ |
extern int re_forwsearch();/* Regex search forward */ |
extern int re_backsearch(); /* Regex search backwards */ |
extern int re_backsearch();/* Regex search backwards */ |
extern int re_searchagain(); /* Repeat regex search command */ |
extern int re_searchagain(); /* Repeat regex search command */ |
extern int re_queryrepl(); /* Regex query replace */ |
extern int re_queryrepl(); /* Regex query replace */ |
extern int setcasefold(); /* Set case fold in searches */ |
extern int setcasefold(); /* Set case fold in searches */ |
extern int delmatchlines(); /* Delete all lines matching */ |
extern int delmatchlines();/* Delete all lines matching */ |
extern int delnonmatchlines(); /* Delete all lines not matching */ |
extern int delnonmatchlines(); /* Delete all lines not matching */ |
extern int cntmatchlines(); /* Count matching lines */ |
extern int cntmatchlines();/* Count matching lines */ |
extern int cntnonmatchlines(); /* Count nonmatching lines */ |
extern int cntnonmatchlines(); /* Count nonmatching lines */ |
#endif |
#endif |
|
|
/* |
/* |
* Defined by "region.c". |
* Defined by "region.c". |
*/ |
*/ |
extern int killregion(); /* Kill region. */ |
extern int killregion(); /* Kill region. */ |
extern int copyregion(); /* Copy region to kill buffer. */ |
extern int copyregion(); /* Copy region to kill buffer. */ |
extern int lowerregion(); /* Lower case region. */ |
extern int lowerregion(); /* Lower case region. */ |
extern int upperregion(); /* Upper case region. */ |
extern int upperregion(); /* Upper case region. */ |
#ifdef PREFIXREGION |
#ifdef PREFIXREGION |
extern int prefixregion(); /* Prefix all lines in region */ |
extern int prefixregion(); /* Prefix all lines in region */ |
extern int setprefix(); /* Set line prefix string */ |
extern int setprefix(); /* Set line prefix string */ |
#endif |
#endif |
|
|
/* |
/* |
* Defined by "search.c". |
* Defined by "search.c". |
*/ |
*/ |
extern int forwsearch(); /* Search forward */ |
extern int forwsearch(); /* Search forward */ |
extern int backsearch(); /* Search backwards */ |
extern int backsearch(); /* Search backwards */ |
extern int searchagain(); /* Repeat last search command */ |
extern int searchagain(); /* Repeat last search command */ |
extern int forwisearch(); /* Incremental search forward */ |
extern int forwisearch(); /* Incremental search forward */ |
extern int backisearch(); /* Incremental search backwards */ |
extern int backisearch(); /* Incremental search backwards */ |
extern int queryrepl(); /* Query replace */ |
extern int queryrepl(); /* Query replace */ |
|
|
/* |
/* |
* Defined by "spawn.c". |
* Defined by "spawn.c". |
*/ |
*/ |
extern int spawncli(); /* Run CLI in a subjob. */ |
extern int spawncli(); /* Run CLI in a subjob. */ |
#ifdef VMS |
#ifdef VMS |
extern int attachtoparent(); /* Attach to parent process */ |
extern int attachtoparent(); /* Attach to parent process */ |
#endif |
#endif |
|
|
/* defined by "version.c" */ |
/* defined by "version.c" */ |
|
|
extern int showversion(); /* Show version numbers, etc. */ |
extern int showversion(); /* Show version numbers, etc. */ |
|
|
/* |
/* |
* Defined by "window.c". |
* Defined by "window.c". |
*/ |
*/ |
extern int reposition(); /* Reposition window */ |
extern int reposition(); /* Reposition window */ |
extern int refresh(); /* Refresh the screen */ |
extern int refresh(); /* Refresh the screen */ |
extern int nextwind(); /* Move to the next window */ |
extern int nextwind(); /* Move to the next window */ |
#ifdef GOSMACS |
#ifdef GOSMACS |
extern int prevwind(); /* Move to the previous window */ |
extern int prevwind(); /* Move to the previous window */ |
#endif |
#endif |
extern int onlywind(); /* Make current window only one */ |
extern int onlywind(); /* Make current window only one */ |
extern int splitwind(); /* Split current window */ |
extern int splitwind(); /* Split current window */ |
extern int delwind(); /* Delete current window */ |
extern int delwind(); /* Delete current window */ |
extern int enlargewind(); /* Enlarge display window. */ |
extern int enlargewind(); /* Enlarge display window. */ |
extern int shrinkwind(); /* Shrink window. */ |
extern int shrinkwind(); /* Shrink window. */ |
|
|
/* |
/* |
* Defined by "word.c". |
* Defined by "word.c". |
*/ |
*/ |
extern int backword(); /* Backup by words */ |
extern int backword(); /* Backup by words */ |
extern int forwword(); /* Advance by words */ |
extern int forwword(); /* Advance by words */ |
extern int upperword(); /* Upper case word. */ |
extern int upperword(); /* Upper case word. */ |
extern int lowerword(); /* Lower case word. */ |
extern int lowerword(); /* Lower case word. */ |
extern int capword(); /* Initial capitalize word. */ |
extern int capword(); /* Initial capitalize word. */ |
extern int delfword(); /* Delete forward word. */ |
extern int delfword(); /* Delete forward word. */ |
extern int delbword(); /* Delete backward word. */ |
extern int delbword(); /* Delete backward word. */ |
|
|
#ifdef AMIGA |
#ifdef AMIGA |
#ifdef DO_ICONIFY |
#ifdef DO_ICONIFY |
extern int tticon(); |
extern int tticon(); |
#endif |
#endif |
#ifdef DO_MENU |
#ifdef DO_MENU |
extern int amigamenu(); /* Menu function */ |
extern int amigamenu(); /* Menu function */ |
#endif |
#endif |
#ifdef MOUSE |
#ifdef MOUSE |
extern int amigamouse(); /* Amiga mouse functions */ |
extern int amigamouse(); /* Amiga mouse functions */ |
extern int mgotobob(); |
extern int mgotobob(); |
extern int mforwdel(); |
extern int mforwdel(); |
extern int mdelwhite(); |
extern int mdelwhite(); |
extern int mdelwind(); |
extern int mdelwind(); |
extern int mgotoeob(); |
extern int mgotoeob(); |
extern int menlargewind(); |
extern int menlargewind(); |
extern int mkillline(); |
extern int mkillline(); |
extern int mkillregion(); |
extern int mkillregion(); |
extern int mdelfword(); |
extern int mdelfword(); |
extern int mreposition(); |
extern int mreposition(); |
extern int mbackpage(); |
extern int mbackpage(); |
extern int mforwpage(); |
extern int mforwpage(); |
extern int mshrinkwind(); |
extern int mshrinkwind(); |
extern int msplitwind(); |
extern int msplitwind(); |
extern int myank(); |
extern int myank(); |
#endif MOUSE |
#endif /* MOUSE */ |
|
|
extern int togglewindow(); /* Defined by "ttyio.c" */ |
extern int togglewindow(); /* Defined by "ttyio.c" */ |
extern int togglezooms(); /* "" "" */ |
extern int togglezooms(); /* "" "" */ |
|
|
#ifdef CHANGE_FONT |
#ifdef CHANGE_FONT |
extern int setfont(); /* Defined by "ttyio.c" */ |
extern int setfont(); /* Defined by "ttyio.c" */ |
#endif |
#endif |
|
|
#ifdef CHANGE_COLOR |
#ifdef CHANGE_COLOR |
/* functions to mess with the mode line rendition, window colors*/ |
/* functions to mess with the mode line rendition, window colors */ |
extern int ttmode(); /* Defined by "tty.c" */ |
extern int ttmode(); /* Defined by "tty.c" */ |
extern int tttext(); /* "" */ |
extern int tttext(); /* "" */ |
extern int textforeground(); /* "" */ |
extern int textforeground(); /* "" */ |
extern int textbackground(); /* "" */ |
extern int textbackground(); /* "" */ |
extern int modeforeground(); /* "" */ |
extern int modeforeground(); /* "" */ |
extern int modebackground(); /* "" */ |
extern int modebackground(); /* "" */ |
#endif |
#endif |
|
|
/* |
/* |
|
|
*/ |
*/ |
#include "amiga_maps.c" |
#include "amiga_maps.c" |
|
|
#endif /* AMIGA */ |
#endif /* AMIGA */ |
|
|
/* initial keymap declarations, deepest first */ |
/* initial keymap declarations, deepest first */ |
|
|
#ifndef NO_HELP |
#ifndef NO_HELP |
static PF cHcG[] = { |
static PF cHcG[] = { |
ctrlg, /* ^G */ |
ctrlg, /* ^G */ |
help_help, /* ^H */ |
help_help, /* ^H */ |
}; |
}; |
static PF cHa[] = { |
static PF cHa[] = { |
apropos_command,/* a */ |
apropos_command, /* a */ |
wallchart, /* b */ |
wallchart, /* b */ |
desckey, /* c */ |
desckey, /* c */ |
}; |
}; |
static struct KEYMAPE(2+IMAPEXT) helpmap = { |
static struct KEYMAPE (2 + IMAPEXT) helpmap = { |
2, |
2, |
2+IMAPEXT, |
2 + IMAPEXT, |
rescan, |
rescan, |
{ |
{ |
{CCHR('G'),CCHR('H'), cHcG, (KEYMAP *)NULL}, |
{ |
{'a', 'c', cHa, (KEYMAP *)NULL}, |
CCHR('G'), CCHR('H'), cHcG, (KEYMAP *) NULL |
|
}, |
|
{ |
|
'a', 'c', cHa, (KEYMAP *) NULL |
|
}, |
} |
} |
}; |
}; |
#endif |
#endif |
|
|
static struct KEYMAPE(1+IMAPEXT) extramap1 = { |
static struct KEYMAPE (1 + IMAPEXT) extramap1 = { |
0, |
0, |
1+IMAPEXT, |
1 + IMAPEXT, |
rescan |
rescan |
}; |
}; |
|
|
static struct KEYMAPE(1+IMAPEXT) extramap2 = { |
static struct KEYMAPE (1 + IMAPEXT) extramap2 = { |
0, |
0, |
1+IMAPEXT, |
1 + IMAPEXT, |
rescan |
rescan |
}; |
}; |
|
|
static struct KEYMAPE(1+IMAPEXT) extramap3 = { |
static struct KEYMAPE (1 + IMAPEXT) extramap3 = { |
0, |
0, |
1+IMAPEXT, |
1 + IMAPEXT, |
rescan |
rescan |
}; |
}; |
|
|
static struct KEYMAPE(1+IMAPEXT) extramap4 = { |
static struct KEYMAPE (1 + IMAPEXT) extramap4 = { |
0, |
0, |
1+IMAPEXT, |
1 + IMAPEXT, |
rescan |
rescan |
}; |
}; |
|
|
static struct KEYMAPE(1+IMAPEXT) extramap5 = { |
static struct KEYMAPE (1 + IMAPEXT) extramap5 = { |
0, |
0, |
1+IMAPEXT, |
1 + IMAPEXT, |
rescan |
rescan |
}; |
}; |
|
|
static PF cX4cF[] = { |
static PF cX4cF[] = { |
poptofile, /* ^f */ |
poptofile, /* ^f */ |
ctrlg, /* ^g */ |
ctrlg, /* ^g */ |
}; |
}; |
static PF cX4b[] = { |
static PF cX4b[] = { |
poptobuffer, /* b */ |
poptobuffer, /* b */ |
rescan, /* c */ |
rescan, /* c */ |
rescan, /* d */ |
rescan, /* d */ |
rescan, /* e */ |
rescan, /* e */ |
poptofile, /* f */ |
poptofile, /* f */ |
}; |
}; |
static struct KEYMAPE(2+IMAPEXT) cX4map = { |
static struct KEYMAPE (2 + IMAPEXT) cX4map = { |
2, |
2, |
2+IMAPEXT, |
2 + IMAPEXT, |
rescan, |
rescan, |
{ |
{ |
{CCHR('F'),CCHR('G'), cX4cF, (KEYMAP *)NULL}, |
{ |
{'b', 'f', cX4b, (KEYMAP *)NULL}, |
CCHR('F'), CCHR('G'), cX4cF, (KEYMAP *) NULL |
|
}, |
|
{ |
|
'b', 'f', cX4b, (KEYMAP *) NULL |
|
}, |
} |
} |
}; |
}; |
|
|
static PF cXcB[] = { |
static PF cXcB[] = { |
listbuffers, /* ^B */ |
listbuffers, /* ^B */ |
quit, /* ^C */ |
quit, /* ^C */ |
rescan, /* ^D */ |
rescan, /* ^D */ |
rescan, /* ^E */ |
rescan, /* ^E */ |
filevisit, /* ^F */ |
filevisit, /* ^F */ |
ctrlg, /* ^G */ |
ctrlg, /* ^G */ |
}; |
}; |
static PF cXcL[] = { |
static PF cXcL[] = { |
lowerregion, /* ^L */ |
lowerregion, /* ^L */ |
rescan, /* ^M */ |
rescan, /* ^M */ |
rescan, /* ^N */ |
rescan, /* ^N */ |
deblank, /* ^O */ |
deblank, /* ^O */ |
rescan, /* ^P */ |
rescan, /* ^P */ |
rescan, /* ^Q */ |
rescan, /* ^Q */ |
rescan, /* ^R */ |
rescan, /* ^R */ |
filesave, /* ^S */ |
filesave, /* ^S */ |
rescan, /* ^T */ |
rescan, /* ^T */ |
upperregion, /* ^U */ |
upperregion, /* ^U */ |
rescan, /* ^V */ |
rescan, /* ^V */ |
filewrite, /* ^W */ |
filewrite, /* ^W */ |
swapmark, /* ^X */ |
swapmark, /* ^X */ |
}; |
}; |
#ifndef NO_MACRO |
#ifndef NO_MACRO |
static PF cXlp[] = { |
static PF cXlp[] = { |
definemacro, /* ( */ |
definemacro, /* ( */ |
finishmacro, /* ) */ |
finishmacro, /* ) */ |
}; |
}; |
#endif |
#endif |
static PF cX0[] = { |
static PF cX0[] = { |
delwind, /* 0 */ |
delwind, /* 0 */ |
onlywind, /* 1 */ |
onlywind, /* 1 */ |
splitwind, /* 2 */ |
splitwind, /* 2 */ |
rescan, /* 3 */ |
rescan, /* 3 */ |
prefix, /* 4 */ |
prefix, /* 4 */ |
}; |
}; |
static PF cXeq[] = { |
static PF cXeq[] = { |
showcpos, /* = */ |
showcpos, /* = */ |
}; |
}; |
static PF cXcar[] = { |
static PF cXcar[] = { |
enlargewind, /* ^ */ |
enlargewind, /* ^ */ |
rescan, /* _ */ |
rescan, /* _ */ |
rescan, /* ` */ |
rescan, /* ` */ |
rescan, /* a */ |
rescan, /* a */ |
usebuffer, /* b */ |
usebuffer, /* b */ |
rescan, /* c */ |
rescan, /* c */ |
#ifndef NO_DIRED |
#ifndef NO_DIRED |
dired, /* d */ |
dired, /* d */ |
#else |
#else |
rescan, /* d */ |
rescan, /* d */ |
#endif |
#endif |
#ifndef NO_MACRO |
#ifndef NO_MACRO |
executemacro, /* e */ |
executemacro, /* e */ |
#else |
#else |
rescan, /* e */ |
rescan, /* e */ |
#endif |
#endif |
setfillcol, /* f */ |
setfillcol, /* f */ |
rescan, /* g */ |
rescan, /* g */ |
rescan, /* h */ |
rescan, /* h */ |
fileinsert, /* i */ |
fileinsert, /* i */ |
rescan, /* j */ |
rescan, /* j */ |
killbuffer, /* k */ |
killbuffer, /* k */ |
rescan, /* l */ |
rescan, /* l */ |
rescan, /* m */ |
rescan, /* m */ |
rescan, /* n */ |
rescan, /* n */ |
nextwind, /* o */ |
nextwind, /* o */ |
rescan, /* p */ |
rescan, /* p */ |
rescan, /* q */ |
rescan, /* q */ |
rescan, /* r */ |
rescan, /* r */ |
savebuffers, /* s */ |
savebuffers, /* s */ |
}; |
}; |
#ifndef NO_MACRO |
#ifndef NO_MACRO |
static struct KEYMAPE(6+IMAPEXT) cXmap = { |
static struct KEYMAPE (6 + IMAPEXT) cXmap = { |
6, |
6, |
6+IMAPEXT, |
6 + IMAPEXT, |
#else |
#else |
static struct KEYMAPE(5+IMAPEXT) cXmap = { |
static struct KEYMAPE (5 + IMAPEXT) cXmap = { |
5, |
5, |
5+IMAPEXT, |
5 + IMAPEXT, |
#endif |
#endif |
rescan, |
rescan, |
{ |
{ |
{CCHR('B'),CCHR('G'), cXcB, (KEYMAP *)NULL}, |
{ |
{CCHR('L'),CCHR('X'), cXcL, (KEYMAP *)NULL}, |
CCHR('B'), CCHR('G'), cXcB, (KEYMAP *) NULL |
|
}, |
|
{ |
|
CCHR('L'), CCHR('X'), cXcL, (KEYMAP *) NULL |
|
}, |
#ifndef NO_MACRO |
#ifndef NO_MACRO |
{'(', ')', cXlp, (KEYMAP *)NULL}, |
{ |
|
'(', ')', cXlp, (KEYMAP *) NULL |
|
}, |
#endif |
#endif |
{'0', '4', cX0, (KEYMAP *)&cX4map}, |
{ |
{'=', '=', cXeq, (KEYMAP *)NULL}, |
'0', '4', cX0, (KEYMAP *) & cX4map |
{'^', 's', cXcar, (KEYMAP *)NULL}, |
}, |
|
{ |
|
'=', '=', cXeq, (KEYMAP *) NULL |
|
}, |
|
{ |
|
'^', 's', cXcar, (KEYMAP *) NULL |
|
}, |
} |
} |
}; |
}; |
|
|
static PF metacG[] = { |
static PF metacG[] = { |
ctrlg, /* ^G */ |
ctrlg, /* ^G */ |
}; |
}; |
static PF metacV[] = { |
static PF metacV[] = { |
pagenext, /* ^V */ |
pagenext, /* ^V */ |
}; |
}; |
static PF metasp[] = { |
static PF metasp[] = { |
justone, /* space */ |
justone, /* space */ |
}; |
}; |
static PF metapct[] = { |
static PF metapct[] = { |
queryrepl, /* % */ |
queryrepl, /* % */ |
}; |
}; |
static PF metami[] = { |
static PF metami[] = { |
negative_argument, /* - */ |
negative_argument, /* - */ |
rescan, /* . */ |
rescan, /* . */ |
rescan, /* / */ |
rescan, /* / */ |
digit_argument, /* 0 */ |
digit_argument, /* 0 */ |
digit_argument, /* 1 */ |
digit_argument, /* 1 */ |
digit_argument, /* 2 */ |
digit_argument, /* 2 */ |
digit_argument, /* 3 */ |
digit_argument, /* 3 */ |
digit_argument, /* 4 */ |
digit_argument, /* 4 */ |
digit_argument, /* 5 */ |
digit_argument, /* 5 */ |
digit_argument, /* 6 */ |
digit_argument, /* 6 */ |
digit_argument, /* 7 */ |
digit_argument, /* 7 */ |
digit_argument, /* 8 */ |
digit_argument, /* 8 */ |
digit_argument, /* 9 */ |
digit_argument, /* 9 */ |
rescan, /* : */ |
rescan, /* : */ |
rescan, /* ; */ |
rescan, /* ; */ |
gotobob, /* < */ |
gotobob, /* < */ |
rescan, /* = */ |
rescan, /* = */ |
gotoeob, /* > */ |
gotoeob, /* > */ |
}; |
}; |
static PF metalb[] = { |
static PF metalb[] = { |
gotobop, /* [ */ |
gotobop, /* [ */ |
delwhite, /* \ */ |
delwhite, /* \ */ |
gotoeop, /* ] */ |
gotoeop, /* ] */ |
rescan, /* ^ */ |
rescan, /* ^ */ |
rescan, /* _ */ |
rescan, /* _ */ |
rescan, /* ` */ |
rescan, /* ` */ |
rescan, /* a */ |
rescan, /* a */ |
backword, /* b */ |
backword, /* b */ |
capword, /* c */ |
capword, /* c */ |
delfword, /* d */ |
delfword, /* d */ |
rescan, /* e */ |
rescan, /* e */ |
forwword, /* f */ |
forwword, /* f */ |
}; |
}; |
static PF metal[] = { |
static PF metal[] = { |
lowerword, /* l */ |
lowerword, /* l */ |
rescan, /* m */ |
rescan, /* m */ |
rescan, /* n */ |
rescan, /* n */ |
rescan, /* o */ |
rescan, /* o */ |
rescan, /* p */ |
rescan, /* p */ |
fillpara, /* q */ |
fillpara, /* q */ |
backsearch, /* r */ |
backsearch, /* r */ |
forwsearch, /* s */ |
forwsearch, /* s */ |
rescan, /* t */ |
rescan, /* t */ |
upperword, /* u */ |
upperword, /* u */ |
backpage, /* v */ |
backpage, /* v */ |
copyregion, /* w */ |
copyregion, /* w */ |
extend, /* x */ |
extend, /* x */ |
}; |
}; |
static PF metatilde[] = { |
static PF metatilde[] = { |
notmodified, /* ~ */ |
notmodified, /* ~ */ |
delbword, /* DEL */ |
delbword, /* DEL */ |
}; |
}; |
static struct KEYMAPE(8+IMAPEXT) metamap = { |
static struct KEYMAPE (8 + IMAPEXT) metamap = { |
8, |
8, |
8+IMAPEXT, |
8 + IMAPEXT, |
rescan, |
rescan, |
{ |
{ |
{CCHR('G'),CCHR('G'), metacG, (KEYMAP *)NULL}, |
{ |
{CCHR('V'),CCHR('V'), metacV, (KEYMAP *)NULL}, |
CCHR('G'), CCHR('G'), metacG, (KEYMAP *) NULL |
{' ', ' ', metasp, (KEYMAP *)NULL}, |
}, |
{'%', '%', metapct,(KEYMAP *)NULL}, |
{ |
{'-', '>', metami, (KEYMAP *)NULL}, |
CCHR('V'), CCHR('V'), metacV, (KEYMAP *) NULL |
{'[', 'f', metalb, (KEYMAP *)NULL}, |
}, |
{'l', 'x', metal, (KEYMAP *)NULL}, |
{ |
{'~', CCHR('?'), metatilde,(KEYMAP *)NULL}, |
' ', ' ', metasp, (KEYMAP *) NULL |
|
}, |
|
{ |
|
'%', '%', metapct, (KEYMAP *) NULL |
|
}, |
|
{ |
|
'-', '>', metami, (KEYMAP *) NULL |
|
}, |
|
{ |
|
'[', 'f', metalb, (KEYMAP *) NULL |
|
}, |
|
{ |
|
'l', 'x', metal, (KEYMAP *) NULL |
|
}, |
|
{ |
|
'~', CCHR('?'), metatilde, (KEYMAP *) NULL |
|
}, |
} |
} |
}; |
}; |
|
|
static PF fund_at[] = { |
static PF fund_at[] = { |
setmark, /* ^@ */ |
setmark, /* ^@ */ |
gotobol, /* ^A */ |
gotobol, /* ^A */ |
backchar, /* ^B */ |
backchar, /* ^B */ |
rescan, /* ^C */ |
rescan, /* ^C */ |
forwdel, /* ^D */ |
forwdel, /* ^D */ |
gotoeol, /* ^E */ |
gotoeol, /* ^E */ |
forwchar, /* ^F */ |
forwchar, /* ^F */ |
ctrlg, /* ^G */ |
ctrlg, /* ^G */ |
#ifndef NO_HELP |
#ifndef NO_HELP |
prefix, /* ^H */ |
prefix, /* ^H */ |
#else |
#else |
rescan, /* ^H */ |
rescan, /* ^H */ |
#endif |
#endif |
}; |
}; |
/* ^I is selfinsert */ |
/* ^I is selfinsert */ |
static PF fund_CJ[] = { |
static PF fund_CJ[] = { |
indent, /* ^J */ |
indent, /* ^J */ |
killline, /* ^K */ |
killline, /* ^K */ |
reposition, /* ^L */ |
reposition, /* ^L */ |
newline, /* ^M */ |
newline, /* ^M */ |
forwline, /* ^N */ |
forwline, /* ^N */ |
openline, /* ^O */ |
openline, /* ^O */ |
backline, /* ^P */ |
backline, /* ^P */ |
quote, /* ^Q */ |
quote, /* ^Q */ |
backisearch, /* ^R */ |
backisearch, /* ^R */ |
forwisearch, /* ^S */ |
forwisearch, /* ^S */ |
twiddle, /* ^T */ |
twiddle, /* ^T */ |
universal_argument, /* ^U */ |
universal_argument, /* ^U */ |
forwpage, /* ^V */ |
forwpage, /* ^V */ |
killregion, /* ^W */ |
killregion, /* ^W */ |
prefix, /* ^X */ |
prefix, /* ^X */ |
yank, /* ^Y */ |
yank, /* ^Y */ |
#ifndef VMS |
#ifndef VMS |
spawncli, /* ^Z */ |
spawncli, /* ^Z */ |
#else |
#else |
attachtoparent, /* ^Z */ |
attachtoparent, /* ^Z */ |
#endif |
#endif |
}; |
}; |
static PF fund_esc[] = { |
static PF fund_esc[] = { |
prefix, /* esc */ |
prefix, /* esc */ |
rescan, /* ^\ */ /* selfinsert is default on fundamental */ |
rescan, /* ^\ *//* selfinsert is default on |
rescan, /* ^] */ |
* fundamental */ |
rescan, /* ^^ */ |
rescan, /* ^] */ |
rescan, /* ^_ */ |
rescan, /* ^^ */ |
|
rescan, /* ^_ */ |
}; |
}; |
static PF fund_del[] = { |
static PF fund_del[] = { |
backdel, /* DEL */ |
backdel, /* DEL */ |
}; |
}; |
|
|
#ifndef FUND_XMAPS |
#ifndef FUND_XMAPS |
#define NFUND_XMAPS 0 /* extra map sections after normal ones */ |
#define NFUND_XMAPS 0 /* extra map sections after normal ones */ |
#endif |
#endif |
|
|
static struct KEYMAPE(4+NFUND_XMAPS+IMAPEXT) fundmap = { |
static struct KEYMAPE (4 + NFUND_XMAPS + IMAPEXT) fundmap = { |
4 + NFUND_XMAPS, |
4 + NFUND_XMAPS, |
4 + NFUND_XMAPS + IMAPEXT, |
4 + NFUND_XMAPS + IMAPEXT, |
selfinsert, |
selfinsert, |
{ |
{ |
#ifndef NO_HELP |
#ifndef NO_HELP |
{CCHR('@'),CCHR('H'), fund_at, (KEYMAP *)&helpmap}, |
{ |
|
CCHR('@'), CCHR('H'), fund_at, (KEYMAP *) & helpmap |
|
}, |
#else |
#else |
{CCHR('@'),CCHR('H'), fund_at, (KEYMAP *)NULL}, |
{ |
|
CCHR('@'), CCHR('H'), fund_at, (KEYMAP *) NULL |
|
}, |
#endif |
#endif |
{CCHR('J'),CCHR('Z'), fund_CJ, (KEYMAP *)&cXmap}, |
{ |
{CCHR('['),CCHR('_'), fund_esc,(KEYMAP *)&metamap}, |
CCHR('J'), CCHR('Z'), fund_CJ, (KEYMAP *) & cXmap |
{CCHR('?'),CCHR('?'), fund_del,(KEYMAP *)NULL}, |
}, |
|
{ |
|
CCHR('['), CCHR('_'), fund_esc, (KEYMAP *) & metamap |
|
}, |
|
{ |
|
CCHR('?'), CCHR('?'), fund_del, (KEYMAP *) NULL |
|
}, |
#ifdef FUND_XMAPS |
#ifdef FUND_XMAPS |
FUND_XMAPS, |
FUND_XMAPS, |
#endif |
#endif |
} |
} |
}; |
}; |
|
|
static PF fill_sp[] = { |
static PF fill_sp[] = { |
fillword, /* ' ' */ |
fillword, /* ' ' */ |
}; |
}; |
static struct KEYMAPE(1+IMAPEXT) fillmap = { |
static struct KEYMAPE (1 + IMAPEXT) fillmap = { |
1, |
1, |
1+IMAPEXT, |
1 + IMAPEXT, |
rescan, |
rescan, |
{ |
{ |
{' ', ' ', fill_sp, (KEYMAP *)NULL}, |
{ |
|
' ', ' ', fill_sp, (KEYMAP *) NULL |
|
}, |
} |
} |
}; |
}; |
|
|
static PF indent_lf[] = { |
static PF indent_lf[] = { |
newline, /* ^J */ |
newline, /* ^J */ |
rescan, /* ^K */ |
rescan, /* ^K */ |
rescan, /* ^L */ |
rescan, /* ^L */ |
indent, /* ^M */ |
indent, /* ^M */ |
}; |
}; |
static struct KEYMAPE(1+IMAPEXT) indntmap = { |
static struct KEYMAPE (1 + IMAPEXT) indntmap = { |
1, |
1, |
1+IMAPEXT, |
1 + IMAPEXT, |
rescan, |
rescan, |
{ |
{ |
{CCHR('J'), CCHR('M'), indent_lf, (KEYMAP *)NULL}, |
{ |
|
CCHR('J'), CCHR('M'), indent_lf, (KEYMAP *) NULL |
|
}, |
} |
} |
}; |
}; |
static PF blink_rp[] = { |
static PF blink_rp[] = { |
showmatch, /* ) */ |
showmatch, /* ) */ |
}; |
}; |
static struct KEYMAPE(1+IMAPEXT) blinkmap = { |
static struct KEYMAPE (1 + IMAPEXT) blinkmap = { |
1, |
1, |
1+IMAPEXT, |
1 + IMAPEXT, |
rescan, |
rescan, |
{ |
{ |
{')', ')', blink_rp, (KEYMAP *)NULL}, |
{ |
|
')', ')', blink_rp, (KEYMAP *) NULL |
|
}, |
} |
} |
}; |
}; |
|
|
#ifdef NOTAB |
#ifdef NOTAB |
static PF notab_tab[] = { |
static PF notab_tab[] = { |
space_to_tabstop, /* ^I */ |
space_to_tabstop, /* ^I */ |
}; |
}; |
static struct KEYMAPE(1+IMAPEXT) notabmap = { |
static struct KEYMAPE (1 + IMAPEXT) notabmap = { |
1, |
1, |
1+IMAPEXT, |
1 + IMAPEXT, |
rescan, |
rescan, |
{ |
{ |
{CCHR('I'),CCHR('I'), notab_tab, (KEYMAP *)NULL}, |
{ |
|
CCHR('I'), CCHR('I'), notab_tab, (KEYMAP *) NULL |
|
}, |
} |
} |
}; |
}; |
#endif |
#endif |
|
|
static struct KEYMAPE(1+IMAPEXT) overwmap = { |
static struct KEYMAPE (1 + IMAPEXT) overwmap = { |
0, |
0, |
1+IMAPEXT, /* 1 to avoid 0 sized array */ |
1 + IMAPEXT, /* 1 to avoid 0 sized array */ |
rescan, |
rescan, |
{ |
{ |
/* unused dummy entry for VMS C */ |
/* unused dummy entry for VMS C */ |
{(KCHAR)0, (KCHAR)0, (PF *)NULL, (KEYMAP *)NULL}, |
{ |
|
(KCHAR) 0, (KCHAR) 0, (PF *) NULL, (KEYMAP *) NULL |
|
}, |
} |
} |
}; |
}; |
|
|
#ifndef NO_DIRED |
#ifndef NO_DIRED |
static PF dirednul[] = { |
static PF dirednul[] = { |
setmark, /* ^@ */ |
setmark, /* ^@ */ |
gotobol, /* ^A */ |
gotobol, /* ^A */ |
backchar, /* ^B */ |
backchar, /* ^B */ |
rescan, /* ^C */ |
rescan, /* ^C */ |
d_del, /* ^D */ |
d_del, /* ^D */ |
gotoeol, /* ^E */ |
gotoeol, /* ^E */ |
forwchar, /* ^F */ |
forwchar, /* ^F */ |
ctrlg, /* ^G */ |
ctrlg, /* ^G */ |
#ifndef NO_HELP |
#ifndef NO_HELP |
prefix, /* ^H */ |
prefix, /* ^H */ |
#endif |
#endif |
}; |
}; |
static PF diredcl[] = { |
static PF diredcl[] = { |
reposition, /* ^L */ |
reposition, /* ^L */ |
forwline, /* ^M */ |
forwline, /* ^M */ |
forwline, /* ^N */ |
forwline, /* ^N */ |
rescan, /* ^O */ |
rescan, /* ^O */ |
backline, /* ^P */ |
backline, /* ^P */ |
rescan, /* ^Q */ |
rescan, /* ^Q */ |
backisearch, /* ^R */ |
backisearch, /* ^R */ |
forwisearch, /* ^S */ |
forwisearch, /* ^S */ |
rescan, /* ^T */ |
rescan, /* ^T */ |
universal_argument, /* ^U */ |
universal_argument, /* ^U */ |
forwpage, /* ^V */ |
forwpage, /* ^V */ |
rescan, /* ^W */ |
rescan, /* ^W */ |
prefix, /* ^X */ |
prefix, /* ^X */ |
}; |
}; |
static PF diredcz[] = { |
static PF diredcz[] = { |
#ifndef VMS |
#ifndef VMS |
spawncli, /* ^Z */ |
spawncli, /* ^Z */ |
#else |
#else |
attachtoparent, /* ^Z */ |
attachtoparent, /* ^Z */ |
#endif |
#endif |
prefix, /* esc */ |
prefix, /* esc */ |
rescan, /* ^\ */ |
rescan, /* ^\ */ |
rescan, /* ^] */ |
rescan, /* ^] */ |
rescan, /* ^^ */ |
rescan, /* ^^ */ |
rescan, /* ^_ */ |
rescan, /* ^_ */ |
forwline, /* SP */ |
forwline, /* SP */ |
}; |
}; |
static PF diredc[] = { |
static PF diredc[] = { |
d_copy, /* c */ |
d_copy, /* c */ |
d_del, /* d */ |
d_del, /* d */ |
d_findfile, /* e */ |
d_findfile, /* e */ |
d_findfile, /* f */ |
d_findfile, /* f */ |
}; |
}; |
static PF diredn[] = { |
static PF diredn[] = { |
forwline, /* n */ |
forwline, /* n */ |
d_ffotherwindow,/* o */ |
d_ffotherwindow, /* o */ |
backline, /* p */ |
backline, /* p */ |
rescan, /* q */ |
rescan, /* q */ |
d_rename, /* r */ |
d_rename, /* r */ |
rescan, /* s */ |
rescan, /* s */ |
rescan, /* t */ |
rescan, /* t */ |
d_undel, /* u */ |
d_undel, /* u */ |
rescan, /* v */ |
rescan, /* v */ |
rescan, /* w */ |
rescan, /* w */ |
d_expunge, /* x */ |
d_expunge, /* x */ |
}; |
}; |
static PF direddl[] = { |
static PF direddl[] = { |
d_undelbak, /* del */ |
d_undelbak, /* del */ |
}; |
}; |
|
|
#ifndef DIRED_XMAPS |
#ifndef DIRED_XMAPS |
#define NDIRED_XMAPS 0 /* number of extra map sections */ |
#define NDIRED_XMAPS 0 /* number of extra map sections */ |
#endif |
#endif |
|
|
static struct KEYMAPE(6 + NDIRED_XMAPS + IMAPEXT) diredmap = { |
static struct KEYMAPE (6 + NDIRED_XMAPS + IMAPEXT) diredmap = { |
6 + NDIRED_XMAPS, |
6 + NDIRED_XMAPS, |
6 + NDIRED_XMAPS + IMAPEXT, |
6 + NDIRED_XMAPS + IMAPEXT, |
rescan, |
rescan, |
{ |
{ |
#ifndef NO_HELP |
#ifndef NO_HELP |
{CCHR('@'), CCHR('H'), dirednul, (KEYMAP *)&helpmap}, |
{ |
|
CCHR('@'), CCHR('H'), dirednul, (KEYMAP *) & helpmap |
|
}, |
#else |
#else |
{CCHR('@'), CCHR('G'), dirednul, (KEYMAP *)NULL}, |
{ |
|
CCHR('@'), CCHR('G'), dirednul, (KEYMAP *) NULL |
|
}, |
#endif |
#endif |
{CCHR('L'), CCHR('X'), diredcl, (KEYMAP *)&cXmap}, |
{ |
{CCHR('Z'), ' ', diredcz, (KEYMAP *)&metamap}, |
CCHR('L'), CCHR('X'), diredcl, (KEYMAP *) & cXmap |
{'c', 'f', diredc, (KEYMAP *)NULL}, |
}, |
{'n', 'x', diredn, (KEYMAP *)NULL}, |
{ |
{CCHR('?'), CCHR('?'), direddl, (KEYMAP *)NULL}, |
CCHR('Z'), ' ', diredcz, (KEYMAP *) & metamap |
|
}, |
|
{ |
|
'c', 'f', diredc, (KEYMAP *) NULL |
|
}, |
|
{ |
|
'n', 'x', diredn, (KEYMAP *) NULL |
|
}, |
|
{ |
|
CCHR('?'), CCHR('?'), direddl, (KEYMAP *) NULL |
|
}, |
#ifdef DIRED_XMAPS |
#ifdef DIRED_XMAPS |
DIRED_XMAPS, /* map sections for dired mode keys */ |
DIRED_XMAPS, /* map sections for dired mode keys */ |
#endif |
#endif |
} |
} |
}; |
}; |
#endif |
#endif |
|
|
/* give names to the maps, for use by help etc. |
/* |
* If the map is to be bindable, it must also be listed in the |
* give names to the maps, for use by help etc. If the map is to be bindable, |
* function name table below with the same name. |
* it must also be listed in the function name table below with the same |
* Maps created dynamicly currently don't get added here, thus are unnamed. |
* name. Maps created dynamicly currently don't get added here, thus are |
* Modes are just named keymaps with functions to add/subtract them from |
* unnamed. Modes are just named keymaps with functions to add/subtract them |
* a buffer's list of modes. If you change a mode name, change it in |
* from a buffer's list of modes. If you change a mode name, change it in |
* modes.c also. |
* modes.c also. |
*/ |
*/ |
|
|
MAPS map_table[] = { |
MAPS map_table[] = { |
/* fundamental map MUST be first entry */ |
/* fundamental map MUST be first entry */ |
{(KEYMAP *)&fundmap, "fundamental"}, |
{(KEYMAP *) & fundmap, "fundamental"}, |
{(KEYMAP *)&fillmap, "fill"}, |
{(KEYMAP *) & fillmap, "fill"}, |
{(KEYMAP *)&indntmap, "indent"}, |
{(KEYMAP *) & indntmap, "indent"}, |
{(KEYMAP *)&blinkmap, "blink"}, |
{(KEYMAP *) & blinkmap, "blink"}, |
#ifdef NOTAB |
#ifdef NOTAB |
{(KEYMAP *)¬abmap, "notab"}, |
{(KEYMAP *) & notabmap, "notab"}, |
#endif |
#endif |
{(KEYMAP *)&overwmap, "overwrite"}, |
{(KEYMAP *) & overwmap, "overwrite"}, |
{(KEYMAP *)&metamap, "esc prefix"}, |
{(KEYMAP *) & metamap, "esc prefix"}, |
{(KEYMAP *)&cXmap, "c-x prefix"}, |
{(KEYMAP *) & cXmap, "c-x prefix"}, |
{(KEYMAP *)&cX4map, "c-x 4 prefix"}, |
{(KEYMAP *) & cX4map, "c-x 4 prefix"}, |
{(KEYMAP *)&extramap1, "extra prefix 1"}, |
{(KEYMAP *) & extramap1, "extra prefix 1"}, |
{(KEYMAP *)&extramap2, "extra prefix 2"}, |
{(KEYMAP *) & extramap2, "extra prefix 2"}, |
{(KEYMAP *)&extramap3, "extra prefix 3"}, |
{(KEYMAP *) & extramap3, "extra prefix 3"}, |
{(KEYMAP *)&extramap4, "extra prefix 4"}, |
{(KEYMAP *) & extramap4, "extra prefix 4"}, |
{(KEYMAP *)&extramap5, "extra prefix 5"}, |
{(KEYMAP *) & extramap5, "extra prefix 5"}, |
#ifndef NO_HELP |
#ifndef NO_HELP |
{(KEYMAP *)&helpmap, "help"}, |
{(KEYMAP *) & helpmap, "help"}, |
#endif |
#endif |
#ifndef NO_DIRED |
#ifndef NO_DIRED |
{(KEYMAP *)&diredmap, "dired"}, |
{(KEYMAP *) & diredmap, "dired"}, |
#endif |
#endif |
}; |
}; |
|
|
#define NMAPS (sizeof map_table/sizeof(MAPS)) |
#define NMAPS (sizeof map_table/sizeof(MAPS)) |
int nmaps = NMAPS; /* for use by rebind in extend.c */ |
int nmaps = NMAPS; /* for use by rebind in extend.c */ |
|
|
char *map_name(map) |
char * |
KEYMAP *map; |
map_name(map) |
|
KEYMAP *map; |
{ |
{ |
MAPS *mp = &map_table[0]; |
MAPS *mp = &map_table[0]; |
|
|
do { |
do { |
if(mp->p_map == map) return mp->p_name; |
if (mp->p_map == map) |
} while(++mp < &map_table[NMAPS]); |
return mp->p_name; |
return (char *)NULL; |
} while (++mp < &map_table[NMAPS]); |
|
return (char *) NULL; |
} |
} |
|
|
MAPS *name_mode(name) |
MAPS * |
char *name; |
name_mode(name) |
|
char *name; |
{ |
{ |
MAPS *mp = &map_table[0]; |
MAPS *mp = &map_table[0]; |
|
|
do { |
do { |
if(strcmp(mp->p_name,name)==0) return mp; |
if (strcmp(mp->p_name, name) == 0) |
} while(++mp < &map_table[NMAPS]); |
return mp; |
return (MAPS *)NULL; |
} while (++mp < &map_table[NMAPS]); |
|
return (MAPS *) NULL; |
} |
} |
|
|
KEYMAP *name_map(name) |
KEYMAP * |
char *name; |
name_map(name) |
|
char *name; |
{ |
{ |
MAPS *mp; |
MAPS *mp; |
return (mp=name_mode(name))==NULL ? (KEYMAP *)NULL : mp->p_map; |
return (mp = name_mode(name)) == NULL ? (KEYMAP *) NULL : mp->p_map; |
} |
} |
|
|
/* Warning: functnames MUST be in alphabetical order! (due to binary |
/* |
* search in name_function.) If the function is prefix, it must be listed |
* Warning: functnames MUST be in alphabetical order! (due to binary search |
* with the same name in the map_table above. |
* in name_function.) If the function is prefix, it must be listed with the |
|
* same name in the map_table above. |
*/ |
*/ |
|
|
FUNCTNAMES functnames[] = { |
FUNCTNAMES functnames[] = { |
#ifdef AMIGA |
#ifdef AMIGA |
#ifdef DO_ICONIFY |
#ifdef DO_ICONIFY |
{tticon, "amiga-iconify"}, |
{tticon, "amiga-iconify"}, |
#endif |
#endif |
#ifdef DO_MENU |
#ifdef DO_MENU |
{amigamenu, "amiga-menu"}, |
{amigamenu, "amiga-menu"}, |
#endif |
#endif |
#ifdef CHANGE_COLOR |
#ifdef CHANGE_COLOR |
{modebackground,"amiga-mode-background"}, |
{modebackground, "amiga-mode-background"}, |
{modeforeground,"amiga-mode-foreground"}, |
{modeforeground, "amiga-mode-foreground"}, |
{ttmode, "amiga-mode-rendition"}, |
{ttmode, "amiga-mode-rendition"}, |
#endif |
#endif |
#ifdef CHANGE_FONT |
#ifdef CHANGE_FONT |
{setfont, "amiga-set-font"}, |
{setfont, "amiga-set-font"}, |
#endif |
#endif |
#ifdef CHANGE_COLOR |
#ifdef CHANGE_COLOR |
{textbackground,"amiga-text-background"}, |
{textbackground, "amiga-text-background"}, |
{textforeground,"amiga-text-foreground"}, |
{textforeground, "amiga-text-foreground"}, |
{tttext, "amiga-text-rendition"}, |
{tttext, "amiga-text-rendition"}, |
#endif |
#endif |
{togglewindow, "amiga-toggle-border"}, |
{togglewindow, "amiga-toggle-border"}, |
{togglezooms, "amiga-zoom-mode"}, |
{togglezooms, "amiga-zoom-mode"}, |
#endif /* AMIGA */ |
#endif /* AMIGA */ |
#ifndef NO_HELP |
#ifndef NO_HELP |
{apropos_command, "apropos"}, |
{apropos_command, "apropos"}, |
#endif |
#endif |
{fillmode, "auto-fill-mode"}, |
{fillmode, "auto-fill-mode"}, |
{indentmode, "auto-indent-mode"}, |
{indentmode, "auto-indent-mode"}, |
{backchar, "backward-char"}, |
{backchar, "backward-char"}, |
{delbword, "backward-kill-word"}, |
{delbword, "backward-kill-word"}, |
{gotobop, "backward-paragraph"}, |
{gotobop, "backward-paragraph"}, |
{backword, "backward-word"}, |
{backword, "backward-word"}, |
{gotobob, "beginning-of-buffer"}, |
{gotobob, "beginning-of-buffer"}, |
{gotobol, "beginning-of-line"}, |
{gotobol, "beginning-of-line"}, |
{blinkparen, "blink-matching-paren"}, |
{blinkparen, "blink-matching-paren"}, |
{showmatch, "blink-matching-paren-hack"}, |
{showmatch, "blink-matching-paren-hack"}, |
#ifdef BSMAP |
#ifdef BSMAP |
{bsmap, "bsmap-mode"}, |
{bsmap, "bsmap-mode"}, |
#endif |
#endif |
{prefix, "c-x 4 prefix"}, |
{prefix, "c-x 4 prefix"}, |
{prefix, "c-x prefix"}, |
{prefix, "c-x prefix"}, |
#ifndef NO_MACRO |
#ifndef NO_MACRO |
{executemacro, "call-last-kbd-macro"}, |
{executemacro, "call-last-kbd-macro"}, |
#endif |
#endif |
{capword, "capitalize-word"}, |
{capword, "capitalize-word"}, |
#ifndef NO_DIR |
#ifndef NO_DIR |
{changedir, "cd"}, |
{changedir, "cd"}, |
#endif |
#endif |
{copyregion, "copy-region-as-kill"}, |
{copyregion, "copy-region-as-kill"}, |
#ifdef REGEX |
#ifdef REGEX |
{cntmatchlines, "count-matches"}, |
{cntmatchlines, "count-matches"}, |
{cntnonmatchlines,"count-non-matches"}, |
{cntnonmatchlines, "count-non-matches"}, |
#endif |
#endif |
{define_key, "define-key"}, |
{define_key, "define-key"}, |
{backdel, "delete-backward-char"}, |
{backdel, "delete-backward-char"}, |
{deblank, "delete-blank-lines"}, |
{deblank, "delete-blank-lines"}, |
{forwdel, "delete-char"}, |
{forwdel, "delete-char"}, |
{delwhite, "delete-horizontal-space"}, |
{delwhite, "delete-horizontal-space"}, |
#ifdef REGEX |
#ifdef REGEX |
{delmatchlines, "delete-matching-lines"}, |
{delmatchlines, "delete-matching-lines"}, |
{delnonmatchlines,"delete-non-matching-lines"}, |
{delnonmatchlines, "delete-non-matching-lines"}, |
#endif |
#endif |
{onlywind, "delete-other-windows"}, |
{onlywind, "delete-other-windows"}, |
{delwind, "delete-window"}, |
{delwind, "delete-window"}, |
#ifndef NO_HELP |
#ifndef NO_HELP |
{wallchart, "describe-bindings"}, |
{wallchart, "describe-bindings"}, |
{desckey, "describe-key-briefly"}, |
{desckey, "describe-key-briefly"}, |
#endif |
#endif |
{digit_argument,"digit-argument"}, |
{digit_argument, "digit-argument"}, |
#ifndef NO_DIRED |
#ifndef NO_DIRED |
{dired, "dired"}, |
{dired, "dired"}, |
{d_undelbak, "dired-backup-unflag"}, |
{d_undelbak, "dired-backup-unflag"}, |
{d_copy, "dired-copy-file"}, |
{d_copy, "dired-copy-file"}, |
{d_expunge, "dired-do-deletions"}, |
{d_expunge, "dired-do-deletions"}, |
{d_findfile, "dired-find-file"}, |
{d_findfile, "dired-find-file"}, |
{d_ffotherwindow, "dired-find-file-other-window"}, |
{d_ffotherwindow, "dired-find-file-other-window"}, |
{d_del, "dired-flag-file-deleted"}, |
{d_del, "dired-flag-file-deleted"}, |
{d_otherwindow, "dired-other-window"}, |
{d_otherwindow, "dired-other-window"}, |
{d_rename, "dired-rename-file"}, |
{d_rename, "dired-rename-file"}, |
{d_undel, "dired-unflag"}, |
{d_undel, "dired-unflag"}, |
#endif |
#endif |
{lowerregion, "downcase-region"}, |
{lowerregion, "downcase-region"}, |
{lowerword, "downcase-word"}, |
{lowerword, "downcase-word"}, |
{showversion, "emacs-version"}, |
{showversion, "emacs-version"}, |
#ifndef NO_MACRO |
#ifndef NO_MACRO |
{finishmacro, "end-kbd-macro"}, |
{finishmacro, "end-kbd-macro"}, |
#endif |
#endif |
{gotoeob, "end-of-buffer"}, |
{gotoeob, "end-of-buffer"}, |
{gotoeol, "end-of-line"}, |
{gotoeol, "end-of-line"}, |
{enlargewind, "enlarge-window"}, |
{enlargewind, "enlarge-window"}, |
{prefix, "esc prefix"}, |
{prefix, "esc prefix"}, |
#ifndef NO_STARTUP |
#ifndef NO_STARTUP |
{evalbuffer, "eval-current-buffer"}, |
{evalbuffer, "eval-current-buffer"}, |
{evalexpr, "eval-expression"}, |
{evalexpr, "eval-expression"}, |
#endif |
#endif |
{swapmark, "exchange-point-and-mark"}, |
{swapmark, "exchange-point-and-mark"}, |
{extend, "execute-extended-command"}, |
{extend, "execute-extended-command"}, |
{prefix, "extra prefix 1"}, |
{prefix, "extra prefix 1"}, |
{prefix, "extra prefix 2"}, |
{prefix, "extra prefix 2"}, |
{prefix, "extra prefix 3"}, |
{prefix, "extra prefix 3"}, |
{prefix, "extra prefix 4"}, |
{prefix, "extra prefix 4"}, |
{prefix, "extra prefix 5"}, |
{prefix, "extra prefix 5"}, |
{fillpara, "fill-paragraph"}, |
{fillpara, "fill-paragraph"}, |
{filevisit, "find-file"}, |
{filevisit, "find-file"}, |
{poptofile, "find-file-other-window"}, |
{poptofile, "find-file-other-window"}, |
{forwchar, "forward-char"}, |
{forwchar, "forward-char"}, |
{gotoeop, "forward-paragraph"}, |
{gotoeop, "forward-paragraph"}, |
{forwword, "forward-word"}, |
{forwword, "forward-word"}, |
{bindtokey, "global-set-key"}, |
{bindtokey, "global-set-key"}, |
{unbindtokey, "global-unset-key"}, |
{unbindtokey, "global-unset-key"}, |
{gotoline, "goto-line"}, |
{gotoline, "goto-line"}, |
#ifndef NO_HELP |
#ifndef NO_HELP |
{prefix, "help"}, |
{prefix, "help"}, |
{help_help, "help-help"}, |
{help_help, "help-help"}, |
#endif |
#endif |
{insert, "insert"}, |
{insert, "insert"}, |
{bufferinsert, "insert-buffer"}, |
{bufferinsert, "insert-buffer"}, |
{fileinsert, "insert-file"}, |
{fileinsert, "insert-file"}, |
{fillword, "insert-with-wrap"}, |
{fillword, "insert-with-wrap"}, |
{backisearch, "isearch-backward"}, |
{backisearch, "isearch-backward"}, |
{forwisearch, "isearch-forward"}, |
{forwisearch, "isearch-forward"}, |
{justone, "just-one-space"}, |
{justone, "just-one-space"}, |
{ctrlg, "keyboard-quit"}, |
{ctrlg, "keyboard-quit"}, |
{killbuffer, "kill-buffer"}, |
{killbuffer, "kill-buffer"}, |
{killline, "kill-line"}, |
{killline, "kill-line"}, |
{killpara, "kill-paragraph"}, |
{killpara, "kill-paragraph"}, |
{killregion, "kill-region"}, |
{killregion, "kill-region"}, |
{delfword, "kill-word"}, |
{delfword, "kill-word"}, |
{listbuffers, "list-buffers"}, |
{listbuffers, "list-buffers"}, |
#ifndef NO_STARTUP |
#ifndef NO_STARTUP |
{evalfile, "load"}, |
{evalfile, "load"}, |
#endif |
#endif |
{localbind, "local-set-key"}, |
{localbind, "local-set-key"}, |
{localunbind, "local-unset-key"}, |
{localunbind, "local-unset-key"}, |
#ifndef NO_BACKUP |
#ifndef NO_BACKUP |
{makebkfile, "make-backup-files"}, |
{makebkfile, "make-backup-files"}, |
#endif |
#endif |
#ifdef DO_METAKEY |
#ifdef DO_METAKEY |
{do_meta, "meta-key-mode"}, /* better name, anyone? */ |
{do_meta, "meta-key-mode"}, /* better name, anyone? */ |
#endif |
#endif |
#ifdef AMIGA |
#ifdef AMIGA |
#ifdef MOUSE |
#ifdef MOUSE |
{mgotobob, "mouse-beginning-of-buffer"}, |
{mgotobob, "mouse-beginning-of-buffer"}, |
{mforwdel, "mouse-delete-char"}, |
{mforwdel, "mouse-delete-char"}, |
{mdelwhite, "mouse-delete-horizontal-space"}, |
{mdelwhite, "mouse-delete-horizontal-space"}, |
{mdelwind, "mouse-delete-window"}, |
{mdelwind, "mouse-delete-window"}, |
{mgotoeob, "mouse-end-of-buffer"}, |
{mgotoeob, "mouse-end-of-buffer"}, |
{menlargewind, "mouse-enlarge-window"}, |
{menlargewind, "mouse-enlarge-window"}, |
{mkillline, "mouse-kill-line"}, |
{mkillline, "mouse-kill-line"}, |
{mkillregion, "mouse-kill-region"}, |
{mkillregion, "mouse-kill-region"}, |
{mdelfword, "mouse-kill-word"}, |
{mdelfword, "mouse-kill-word"}, |
{mreposition, "mouse-recenter"}, |
{mreposition, "mouse-recenter"}, |
{mbackpage, "mouse-scroll-down"}, |
{mbackpage, "mouse-scroll-down"}, |
{mforwpage, "mouse-scroll-up"}, |
{mforwpage, "mouse-scroll-up"}, |
{amigamouse, "mouse-set-point"}, |
{amigamouse, "mouse-set-point"}, |
{mshrinkwind, "mouse-shrink-window"}, |
{mshrinkwind, "mouse-shrink-window"}, |
{msplitwind, "mouse-split-window-vertically"}, |
{msplitwind, "mouse-split-window-vertically"}, |
{myank, "mouse-yank"}, |
{myank, "mouse-yank"}, |
#endif |
#endif |
#endif |
#endif |
{negative_argument, "negative-argument"}, |
{negative_argument, "negative-argument"}, |
{newline, "newline"}, |
{newline, "newline"}, |
{indent, "newline-and-indent"}, |
{indent, "newline-and-indent"}, |
{forwline, "next-line"}, |
{forwline, "next-line"}, |
#ifdef NOTAB |
#ifdef NOTAB |
{notabmode, "no-tab-mode"}, |
{notabmode, "no-tab-mode"}, |
#endif |
#endif |
{notmodified, "not-modified"}, |
{notmodified, "not-modified"}, |
{openline, "open-line"}, |
{openline, "open-line"}, |
{nextwind, "other-window"}, |
{nextwind, "other-window"}, |
{overwrite, "overwrite-mode"}, |
{overwrite, "overwrite-mode"}, |
#ifdef PREFIXREGION |
#ifdef PREFIXREGION |
{prefixregion, "prefix-region"}, |
{prefixregion, "prefix-region"}, |
#endif |
#endif |
{backline, "previous-line"}, |
{backline, "previous-line"}, |
#ifdef GOSMACS |
#ifdef GOSMACS |
{prevwind, "previous-window"}, |
{prevwind, "previous-window"}, |
#endif |
#endif |
#ifdef VMS |
#ifdef VMS |
{spawncli, "push-to-dcl"}, |
{spawncli, "push-to-dcl"}, |
#else |
#else |
{spawncli, "push-shell"}, |
{spawncli, "push-shell"}, |
#endif |
#endif |
#ifndef NO_DIR |
#ifndef NO_DIR |
{showcwdir, "pwd"}, |
{showcwdir, "pwd"}, |
#endif |
#endif |
{queryrepl, "query-replace"}, |
{queryrepl, "query-replace"}, |
#ifdef REGEX |
#ifdef REGEX |
{re_queryrepl, "query-replace-regexp"}, |
{re_queryrepl, "query-replace-regexp"}, |
#endif |
#endif |
{quote, "quoted-insert"}, |
{quote, "quoted-insert"}, |
#ifdef REGEX |
#ifdef REGEX |
{re_searchagain,"re-search-again"}, |
{re_searchagain, "re-search-again"}, |
{re_backsearch, "re-search-backward"}, |
{re_backsearch, "re-search-backward"}, |
{re_forwsearch, "re-search-forward"}, |
{re_forwsearch, "re-search-forward"}, |
#endif |
#endif |
{reposition, "recenter"}, |
{reposition, "recenter"}, |
{refresh, "redraw-display"}, |
{refresh, "redraw-display"}, |
{filesave, "save-buffer"}, |
{filesave, "save-buffer"}, |
{quit, "save-buffers-kill-emacs"}, |
{quit, "save-buffers-kill-emacs"}, |
{savebuffers, "save-some-buffers"}, |
{savebuffers, "save-some-buffers"}, |
{backpage, "scroll-down"}, |
{backpage, "scroll-down"}, |
#ifdef GOSMACS |
#ifdef GOSMACS |
{back1page, "scroll-one-line-down"}, |
{back1page, "scroll-one-line-down"}, |
{forw1page, "scroll-one-line-up"}, |
{forw1page, "scroll-one-line-up"}, |
#endif |
#endif |
{pagenext, "scroll-other-window"}, |
{pagenext, "scroll-other-window"}, |
{forwpage, "scroll-up"}, |
{forwpage, "scroll-up"}, |
{searchagain, "search-again"}, |
{searchagain, "search-again"}, |
{backsearch, "search-backward"}, |
{backsearch, "search-backward"}, |
{forwsearch, "search-forward"}, |
{forwsearch, "search-forward"}, |
{selfinsert, "self-insert-command"}, |
{selfinsert, "self-insert-command"}, |
#ifdef REGEX |
#ifdef REGEX |
{setcasefold, "set-case-fold-search"}, |
{setcasefold, "set-case-fold-search"}, |
#endif |
#endif |
{set_default_mode, "set-default-mode"}, |
{set_default_mode, "set-default-mode"}, |
{setfillcol, "set-fill-column"}, |
{setfillcol, "set-fill-column"}, |
{setmark, "set-mark-command"}, |
{setmark, "set-mark-command"}, |
#ifdef PREFIXREGION |
#ifdef PREFIXREGION |
{setprefix, "set-prefix-string"}, |
{setprefix, "set-prefix-string"}, |
#endif |
#endif |
{shrinkwind, "shrink-window"}, |
{shrinkwind, "shrink-window"}, |
#ifdef NOTAB |
#ifdef NOTAB |
{space_to_tabstop, "space-to-tabstop"}, |
{space_to_tabstop, "space-to-tabstop"}, |
#endif |
#endif |
{splitwind, "split-window-vertically"}, |
{splitwind, "split-window-vertically"}, |
#ifndef NO_MACRO |
#ifndef NO_MACRO |
{definemacro, "start-kbd-macro"}, |
{definemacro, "start-kbd-macro"}, |
#endif |
#endif |
#ifdef VMS |
#ifdef VMS |
{attachtoparent,"suspend-emacs"}, |
{attachtoparent, "suspend-emacs"}, |
#else |
#else |
{spawncli, "suspend-emacs"}, |
{spawncli, "suspend-emacs"}, |
#endif |
#endif |
{usebuffer, "switch-to-buffer"}, |
{usebuffer, "switch-to-buffer"}, |
{poptobuffer, "switch-to-buffer-other-window"}, |
{poptobuffer, "switch-to-buffer-other-window"}, |
{twiddle, "transpose-chars"}, |
{twiddle, "transpose-chars"}, |
{universal_argument, "universal-argument"}, |
{universal_argument, "universal-argument"}, |
{upperregion, "upcase-region"}, |
{upperregion, "upcase-region"}, |
{upperword, "upcase-word"}, |
{upperword, "upcase-word"}, |
{showcpos, "what-cursor-position"}, |
{showcpos, "what-cursor-position"}, |
{filewrite, "write-file"}, |
{filewrite, "write-file"}, |
{yank, "yank"}, |
{yank, "yank"}, |
}; |
}; |
|
|
#define NFUNCT (sizeof(functnames)/sizeof(FUNCTNAMES)) |
#define NFUNCT (sizeof(functnames)/sizeof(FUNCTNAMES)) |
|
|
int nfunct = NFUNCT; /* used by help.c */ |
int nfunct = NFUNCT;/* used by help.c */ |
|
|
/* |
/* |
* The general-purpose version of ROUND2 blows osk C (2.0) out of the water. |
* The general-purpose version of ROUND2 blows osk C (2.0) out of the water. |
|
|
*/ |
*/ |
#define ROUND2(x) (x<128?(x<64?32:64):(x<256?128:256)) |
#define ROUND2(x) (x<128?(x<64?32:64):(x<256?128:256)) |
|
|
static name_fent(fname, flag) |
static |
register char *fname; |
name_fent(fname, flag) |
int flag; |
register char *fname; |
|
int flag; |
{ |
{ |
register int try; |
register int try; |
register int x = ROUND2(NFUNCT); |
register int x = ROUND2(NFUNCT); |
register int base = 0; |
register int base = 0; |
register int notit; |
register int notit; |
|
|
do { |
do { |
/* + can be used instead of | here if more efficent. */ |
/* + can be used instead of | here if more efficent. */ |
if((try = base | x) < NFUNCT) { |
if ((try = base | x) < NFUNCT) { |
if((notit = strcmp(fname, functnames[try].n_name)) >= 0) { |
if ((notit = strcmp(fname, functnames[try].n_name)) >= 0) { |
if(!notit) return try; |
if (!notit) |
base = try; |
return try; |
|
base = try; |
|
} |
} |
} |
} |
} while ((x >>= 1) || (try == 1 && base == 0)); /* try 0 once if needed */ |
} while((x>>=1) || (try==1 && base==0)); /* try 0 once if needed */ |
|
return flag ? base : -1; |
return flag ? base : -1; |
} |
} |
|
|
|
|
* Translate from function name to function pointer, using binary search. |
* Translate from function name to function pointer, using binary search. |
*/ |
*/ |
|
|
PF name_function(fname) |
PF |
char *fname; |
name_function(fname) |
|
char *fname; |
{ |
{ |
int i; |
int i; |
if((i = name_fent(fname, FALSE)) >= 0) return functnames[i].n_funct; |
if ((i = name_fent(fname, FALSE)) >= 0) |
return (PF)NULL; |
return functnames[i].n_funct; |
|
return (PF) NULL; |
} |
} |
|
|
/* complete function name */ |
/* complete function name */ |
|
|
|
int |
complete_function(fname, c) |
complete_function(fname, c) |
register char *fname; |
register char *fname; |
|
int c; |
{ |
{ |
register int i, j, k, l; |
register int i, j, k, l; |
int oj; |
int oj; |
|
|
i = name_fent(fname, TRUE); |
i = name_fent(fname, TRUE); |
for(j=0; (l=fname[j]) && functnames[i].n_name[j]==l; j++) {} |
for (j = 0; (l = fname[j]) && functnames[i].n_name[j] == l; j++) { |
if(fname[j]!='\0') { |
|
if(++i >= NFUNCT) return -2; /* no match */ |
|
for(j=0; (l=fname[j]) && functnames[i].n_name[j]==l; j++) {} |
|
if(fname[j]!='\0') return -2; /* no match */ |
|
} |
} |
if(c==CCHR('M') && functnames[i].n_name[j]=='\0') return -1; |
if (fname[j] != '\0') { |
for(k=i+1; k<NFUNCT; k++) { /* find last match */ |
if (++i >= NFUNCT) |
for(l=0; functnames[k].n_name[l]==fname[l]; l++) {} |
return -2; /* no match */ |
if(l<j) break; |
for (j = 0; (l = fname[j]) && functnames[i].n_name[j] == l; j++) { |
|
} |
|
if (fname[j] != '\0') |
|
return -2; /* no match */ |
} |
} |
|
if (c == CCHR('M') && functnames[i].n_name[j] == '\0') |
|
return -1; |
|
for (k = i + 1; k < NFUNCT; k++) { /* find last match */ |
|
for (l = 0; functnames[k].n_name[l] == fname[l]; l++) { |
|
} |
|
if (l < j) |
|
break; |
|
} |
k--; |
k--; |
oj = j; |
oj = j; |
if(k>i) { /* multiple matches */ |
if (k > i) { /* multiple matches */ |
while((l = functnames[i].n_name[j]) == functnames[k].n_name[j]) { |
while ((l = functnames[i].n_name[j]) == functnames[k].n_name[j]) { |
fname[j++] = l; |
fname[j++] = l; |
if(l=='-' && c==' ') break; |
if (l == '-' && c == ' ') |
} |
break; |
if(j==oj) return -3; /* ambiguous */ |
} |
} else { /* single match */ |
if (j == oj) |
while(l = functnames[i].n_name[j]) { |
return -3; /* ambiguous */ |
fname[j++] = l; |
} else { /* single match */ |
if(l=='-' && c==' ') break; |
while (l = functnames[i].n_name[j]) { |
} |
fname[j++] = l; |
|
if (l == '-' && c == ' ') |
|
break; |
|
} |
} |
} |
fname[j] = '\0'; |
fname[j] = '\0'; |
return j - oj; |
return j - oj; |
|
|
|
|
/* list possible function name completions */ |
/* list possible function name completions */ |
|
|
LIST *complete_function_list(fname, c) |
LIST * |
register char *fname; |
complete_function_list(fname, c) |
|
register char *fname; |
{ |
{ |
register int i, j, k, l; |
register int i, j, k, l; |
int oj; |
int oj; |
LIST *current,*last; |
LIST *current, *last; |
|
|
i = name_fent(fname, TRUE); |
i = name_fent(fname, TRUE); |
for(j=0; (l=fname[j]) && functnames[i].n_name[j]==l; j++) {} |
for (j = 0; (l = fname[j]) && functnames[i].n_name[j] == l; j++) { |
if(fname[j]!='\0') { |
|
if(++i >= NFUNCT) return NULL; /* no match */ |
|
for(j=0; (l=fname[j]) && functnames[i].n_name[j]==l; j++) {} |
|
if(fname[j]!='\0') return NULL; /* no match */ |
|
} |
} |
/* |
if (fname[j] != '\0') { |
* if(c==CCHR('M') && functnames[i].n_name[j]=='\0') return -1; |
if (++i >= NFUNCT) |
*/ |
return NULL; /* no match */ |
for(k=i+1; k<NFUNCT; k++) { /* find last match */ |
for (j = 0; (l = fname[j]) && functnames[i].n_name[j] == l; j++) { |
for(l=0; functnames[k].n_name[l]==fname[l]; l++) {} |
} |
if(l<j) break; |
if (fname[j] != '\0') |
|
return NULL; /* no match */ |
} |
} |
|
/* |
|
* if(c==CCHR('M') && functnames[i].n_name[j]=='\0') return -1; |
|
*/ |
|
for (k = i + 1; k < NFUNCT; k++) { /* find last match */ |
|
for (l = 0; functnames[k].n_name[l] == fname[l]; l++) { |
|
} |
|
if (l < j) |
|
break; |
|
} |
k--; |
k--; |
last = NULL; |
last = NULL; |
for (; k >= i; k--) { |
for (; k >= i; k--) { |
current = (LIST *)malloc(sizeof(LIST)); |
current = (LIST *) malloc(sizeof(LIST)); |
current->l_next = last; |
current->l_next = last; |
current->l_name = functnames[k].n_name; |
current->l_name = functnames[k].n_name; |
last = current; |
last = current; |
} |
} |
return(last); |
return (last); |
} |
} |
|
|
/* translate from function pointer to function name. */ |
/* translate from function pointer to function name. */ |
|
|
char *function_name(fpoint) |
char * |
register PF fpoint; |
function_name(fpoint) |
|
register PF fpoint; |
{ |
{ |
register FUNCTNAMES *fnp = &functnames[0]; |
register FUNCTNAMES *fnp = &functnames[0]; |
|
|
if(fpoint == prefix) return (char *)NULL; /* ambiguous */ |
if (fpoint == prefix) |
|
return (char *) NULL; /* ambiguous */ |
do { |
do { |
if(fnp->n_funct == fpoint) return fnp->n_name; |
if (fnp->n_funct == fpoint) |
} while(++fnp < &functnames[NFUNCT]); |
return fnp->n_name; |
return (char *)NULL; |
} while (++fnp < &functnames[NFUNCT]); |
|
return (char *) NULL; |
} |
} |