home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Unix / Shells / zsh / Source / src / zle.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-07  |  8.7 KB  |  361 lines

  1. /*
  2.  *
  3.  * zle.h - header file for line editor
  4.  *
  5.  * This file is part of zsh, the Z shell.
  6.  *
  7.  * This software is Copyright 1992 by Paul Falstad
  8.  *
  9.  * Permission is hereby granted to copy, reproduce, redistribute or otherwise
  10.  * use this software as long as: there is no monetary profit gained
  11.  * specifically from the use or reproduction of this software, it is not
  12.  * sold, rented, traded or otherwise marketed, and this copyright notice is
  13.  * included prominently in any copy made.
  14.  *
  15.  * The author make no claims as to the fitness or correctness of this software
  16.  * for any use whatsoever, and it is provided as is. Any use of this software
  17.  * is at the user's own risk.
  18.  *
  19.  */
  20.  
  21. #ifdef ZLEGLOBALS
  22. #define ZLEXTERN
  23. #else
  24. #define ZLEXTERN extern
  25. #endif
  26.  
  27. #ifdef ZLE
  28.  
  29. /* cursor position */
  30. ZLEXTERN int cs;
  31.  
  32. /* line length */
  33. ZLEXTERN int ll;
  34.  
  35. /* size of line buffer */
  36. ZLEXTERN int linesz;
  37.  
  38. /* location of mark */
  39. ZLEXTERN int mark;
  40.  
  41. /* last character pressed */
  42. ZLEXTERN int c;
  43.  
  44. /* the z_ binding id for this key */
  45. ZLEXTERN int bindk;
  46.  
  47. /* command argument */
  48. ZLEXTERN int mult;
  49.  
  50. /* insert mode/overwrite mode flag */
  51. ZLEXTERN int insmode;
  52.  
  53. /* cost of last update */
  54. #ifdef HAS_SELECT
  55. ZLEXTERN int cost;
  56. #endif
  57.  
  58. /* number of lines displayed */
  59. ZLEXTERN int nlnct;
  60.  
  61. /* flags associated with last command */
  62. ZLEXTERN int lastcmd;
  63.  
  64. /* column position before last LINEMOVE movement */
  65. ZLEXTERN int lastcol;
  66.  
  67. /* != 0 if we're getting a vi range */
  68. ZLEXTERN int virangeflag;
  69.  
  70. /* kludge to get cw and dw to work right */
  71. ZLEXTERN int wordflag;
  72.  
  73. #endif
  74.  
  75. /* last named command done */
  76. ZLEXTERN int lastnamed;
  77.  
  78. /* != 0 if we're done editing */
  79. ZLEXTERN int done;
  80.  
  81. /* length of prompt, rprompt on screen */
  82. ZLEXTERN int pptlen, ppt2len;
  83.  
  84. /* current history line number */
  85. ZLEXTERN int histline;
  86.  
  87. /* != 0 if we need to call resetvideo() */
  88. ZLEXTERN int resetneeded;
  89.  
  90. /* != 0 if the line editor is active */
  91. ZLEXTERN int zleactive;
  92.  
  93. /* the line buffer */
  94. ZLEXTERN unsigned char *line;
  95.  
  96. /* the cut buffer */
  97. ZLEXTERN char *cutbuf;
  98.  
  99. /* prompt and rprompt */
  100. ZLEXTERN char *pmpt, *pmpt2;
  101.  
  102. /* the last line in the history (the current one) */
  103. ZLEXTERN char *curhistline;
  104.  
  105. /* the status line */
  106. ZLEXTERN char *statusline;
  107.  
  108. /* !=0 if a complete added a suffix at the end of a completion */
  109. ZLEXTERN int addedsuffix;
  110.  
  111. /* 1 if we expect special keys after completing a parameter name */
  112. ZLEXTERN int complexpect;
  113.  
  114. /*
  115.     the current history line and cursor position for the top line
  116.     on the buffer stack
  117. */
  118.  
  119. ZLEXTERN int stackhist, stackcs;
  120.  
  121. /* != 0 if we are in the middle of a menu completion */
  122. ZLEXTERN int menucmp;
  123.  
  124. /* != 0 if we are making undo records */
  125. ZLEXTERN int undoing;
  126.  
  127. /* != 0 if executing a shell function called from zle */
  128. ZLEXTERN  int inzlefunc;
  129.  
  130. /* last vi change buffer */
  131. ZLEXTERN int vichgbufsz, vichgbufptr, vichgflag;
  132. ZLEXTERN char *vichgbuf;
  133.  
  134. ZLEXTERN int viinsbegin;
  135.  
  136. typedef void bindfunc DCLPROTO((void));
  137. typedef bindfunc *F;
  138.  
  139. struct key {
  140.     struct hashnode *next;
  141.     char *nam;        /* hash data */
  142.     int func;        /* function code for this key */
  143.     char *str;        /* string corresponding to this key,
  144.                if func = z_sendstring */ 
  145.     int len;        /* length of string */
  146.     int prefixct;    /* number of strings for which this is a prefix */
  147. };
  148.  
  149. struct zlecmd {
  150.     char *name;            /* name of function */
  151.     F func;            /* handler function */
  152.     int flags;
  153. };
  154.  
  155. /* undo event */
  156.  
  157. struct undoent {
  158.     int pref;            /* number of initial chars unchanged */
  159.     int suff;            /* number of trailing chars unchanged */
  160.     int len;            /* length of changed chars */
  161.     int cs;            /* cursor pos before change */
  162.     char *change;        /* NOT null terminated */
  163. };
  164.  
  165. #define UNDOCT 64
  166.  
  167. ZLEXTERN struct undoent undos[UNDOCT];
  168.  
  169. /* the line before last mod (for undo purposes) */
  170. ZLEXTERN unsigned char *lastline;
  171.  
  172. /* buffer specified with "x */
  173. ZLEXTERN int vibufspec;
  174.  
  175. ZLEXTERN int undoct, lastcs;
  176.  
  177. ZLEXTERN char *visrchstr;
  178. ZLEXTERN int visrchsense;
  179.  
  180. #define ZLE_MOVEMENT       1
  181. #define ZLE_MENUCMP       2
  182. #define ZLE_UNDO           4
  183. #define ZLE_YANK          8
  184. #define ZLE_LINEMOVE      16
  185. #define ZLE_ARG           32
  186. #define ZLE_NAMEDBUFFER 128
  187. #define ZLE_KILL        (64|ZLE_NAMEDBUFFER)
  188. #define ZLE_HISTSEARCH  256
  189. #define ZLE_NEGARG      512
  190. #define ZLE_INSERT     1024
  191. #define ZLE_DELETE     2048
  192.  
  193. typedef struct key *Key;
  194.  
  195. ZLEXTERN int *bindtab, *mainbindtab;
  196. extern int emacsbind[], viinsbind[], vicmdbind[];
  197. ZLEXTERN int altbindtab[256];
  198.  
  199. #define KRINGCT 8
  200. ZLEXTERN char *kring[KRINGCT];
  201. ZLEXTERN int kringnum;
  202. ZLEXTERN char *vibuf[36];
  203.  
  204. #define z_acceptandhold 0
  205. #define z_acceptandinfernexthistory 1
  206. #define z_acceptandmenucomplete 2
  207. #define z_acceptline 3
  208. #define z_acceptlineanddownhistory 4
  209. #define z_backwardchar 5
  210. #define z_backwarddeletechar 6
  211. #define z_backwarddeleteword 7
  212. #define z_backwardkillline 8
  213. #define z_backwardkillword 9
  214. #define z_backwardword 10
  215. #define z_beginningofbufferorhistory 11
  216. #define z_beginningofhistory 12
  217. #define z_beginningofline 13
  218. #define z_beginningoflinehist 14
  219. #define z_capitalizeword 15
  220. #define z_clearscreen 16
  221. #define z_completeword 17
  222. #define z_copyprevword 18
  223. #define z_copyregionaskill 19
  224. #define z_deletechar 20
  225. #define z_deletecharorlist 21
  226. #define z_deleteword 22
  227. #define z_digitargument 23
  228. #define z_downcaseword 24
  229. #define z_downhistory 25
  230. #define z_downlineorhistory 26
  231. #define z_endofbufferorhistory 27
  232. #define z_endofhistory 28
  233. #define z_endofline 29
  234. #define z_endoflinehist 30
  235. #define z_exchangepointandmark 31
  236. #define z_executelastnamedcmd 32
  237. #define z_executenamedcmd 33
  238. #define z_expandhistory 34
  239. #define z_expandorcomplete 35
  240. #define z_expandword 36
  241. #define z_forwardchar 37
  242. #define z_forwardword 38
  243. #define z_getline 39
  244. #define z_gosmacstransposechars 40
  245. #define z_historyincrementalsearchbackward 41
  246. #define z_historyincrementalsearchforward 42
  247. #define z_historysearchbackward 43
  248. #define z_historysearchforward 44
  249. #define z_infernexthistory 45
  250. #define z_insertlastword 46
  251. #define z_killbuffer 47
  252. #define z_killline 48
  253. #define z_killregion 49
  254. #define z_killwholeline 50
  255. #define z_listchoices 51
  256. #define z_listexpand 52
  257. #define z_magicspace 53
  258. #define z_menucompleteword 54
  259. #define z_menuexpandorcomplete 55
  260. #define z_overwritemode 56
  261. #define z_pushline 57
  262. #define z_quotedinsert 58
  263. #define z_quoteline 59
  264. #define z_quoteregion 60
  265. #define z_redisplay 61
  266. #define z_reversemenucomplete 62
  267. #define z_runhelp 63
  268. #define z_selfinsert 64
  269. #define z_selfinsertunmeta 65
  270. #define z_sendbreak 66
  271. #define z_sendstring 67
  272. #define z_sequenceleadin 68
  273. #define z_setmarkcommand 69
  274. #define z_spellword 70
  275. #define z_toggleliteralhistory 71
  276. #define z_transposechars 72
  277. #define z_transposewords 73
  278. #define z_undefinedkey 74
  279. #define z_undo 75
  280. #define z_universalargument 76
  281. #define z_upcaseword 77
  282. #define z_uphistory 78
  283. #define z_uplineorhistory 79
  284. #define z_viaddeol 80
  285. #define z_viaddnext 81
  286. #define z_vibackwardblankword 82
  287. #define z_vibackwardchar 83
  288. #define z_vibackwarddeletechar 84
  289. #define z_vibeginningofline 85
  290. #define z_vicapslockpanic 86
  291. #define z_vichange 87
  292. #define z_vichangeeol 88
  293. #define z_vichangewholeline 89
  294. #define z_vicmdmode 90
  295. #define z_videlete 91
  296. #define z_videletechar 92
  297. #define z_vidigitorbeginningofline 93
  298. #define z_viendofline 94
  299. #define z_vifetchhistory 95
  300. #define z_vifindnextchar 96
  301. #define z_vifindnextcharskip 97
  302. #define z_vifindprevchar 98
  303. #define z_vifindprevcharskip 99
  304. #define z_vifirstnonblank 100
  305. #define z_viforwardblankword 101
  306. #define z_viforwardblankwordend 102
  307. #define z_viforwardchar 103
  308. #define z_viforwardwordend 104
  309. #define z_vigotocolumn 105
  310. #define z_vigotomark 106
  311. #define z_vigotomarkline 107
  312. #define z_vihistorysearchbackward 108
  313. #define z_vihistorysearchforward 109
  314. #define z_viindent 110
  315. #define z_viinsert 111
  316. #define z_viinsertbol 112
  317. #define z_vijoin 113
  318. #define z_vimatchbracket 114
  319. #define z_viopenlineabove 115
  320. #define z_viopenlinebelow 116
  321. #define z_vioperswapcases 117
  322. #define z_viputafter 118
  323. #define z_virepeatchange 119
  324. #define z_virepeatfind 120
  325. #define z_virepeatsearch 121
  326. #define z_vireplace 122
  327. #define z_vireplacechars 123
  328. #define z_virevrepeatfind 124
  329. #define z_virevrepeatsearch 125
  330. #define z_visetbuffer 126
  331. #define z_visetmark 127
  332. #define z_visubstitute 128
  333. #define z_viswapcase 129
  334. #define z_viundochange 130
  335. #define z_viunindent 131
  336. #define z_viyank 132
  337. #define z_viyankeol 133
  338. #define z_whichcommand 134
  339. #define z_yank 135
  340. #define z_yankpop 136
  341. #define z_emacsbackwardword 137
  342. #define z_emacsforwardword 138
  343. #define z_killword 139
  344. #define z_vikillline 140
  345. #define z_vibackwardkillword 141
  346. #define z_expandcmdpath 142
  347. #define z_negargument 143
  348. #define z_poundinsert 144
  349. #define z_viforwardword 145
  350. #define z_vibackwardword 146
  351. #define z_uplineorsearch 147
  352. #define z_downlineorsearch 148
  353. #define z_pushinput 149
  354. #define z_pushpopinput 150
  355. #define z_historybeginningsearchbackward 151
  356. #define z_historybeginningsearchforward 152
  357. #define z_expandorcompleteprefix 153
  358. #define ZLECMDCOUNT 154
  359.  
  360. extern struct zlecmd zlecmds[];
  361.