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