home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d166 / stevie.lha / Stevie / source / stevie.h < prev    next >
C/C++ Source or Header  |  1988-11-22  |  7KB  |  296 lines

  1. /*
  2.  * STEVIE - Simply Try this Editor for VI Enthusiasts
  3.  *
  4.  * Code Contributions By : Tim Thompson           twitch!tjt
  5.  *                         Tony Andrews           onecom!wldrdg!tony 
  6.  *                         G. R. (Fred) Walter    watmath!watcgl!grwalter 
  7.  */
  8.  
  9. /*
  10.  * One (and only 1) of the following defines should be uncommented. Most of
  11.  * the code is pretty machine-independent. Machine dependent code goes in a
  12.  * file like tos.c or unix.c. The only other place where machine dependent
  13.  * code goes is term.h for escape sequences. 
  14.  */
  15.  
  16. #ifndef AMIGA
  17. /* #define    ATARI        Atari ST */
  18. /* #define    UNIX        System V */
  19. #define    BSD            BSD 4.3 */
  20. /* #define    OS2        Microsoft OS/2 */
  21. /* #define    AMIGA        Amiga */
  22. #endif
  23.  
  24. /*
  25.  * If ATARI is defined, one of the following compilers must be selected. 
  26.  */
  27. #ifdef    ATARI
  28. #define    MEGAMAX            Megamax Compiler */
  29. /* #define    ALCYON        Alcyon C compiler */
  30. #endif
  31.  
  32. /*
  33.  * If HELP is defined, the :help command shows a vi command summary. 
  34.  */
  35. #define    HELP            /* enable help command */
  36.  
  37. #include <stdio.h>
  38. #ifndef ATARI
  39. # ifndef UNIX
  40. #  ifndef OS2
  41. #   include <stdlib.h>
  42. #  endif
  43. # endif
  44. #endif
  45. #include <ctype.h>
  46. #include <string.h>
  47. #include "ascii.h"
  48. #include "keymap.h"
  49. #include "param.h"
  50. #include "term.h"
  51. #include "macros.h"
  52.  
  53. #ifdef AMIGA
  54. /*
  55.  * This won't be needed if you have a version of Lattice 4.01 without broken
  56.  * break signal handling.
  57.  */
  58. #include <signal.h>
  59. #endif
  60.  
  61. extern char    *strchr();
  62.  
  63. #define NORMAL   0
  64. #define CMDLINE  1
  65. #define INSERT   2
  66. #define APPEND   3
  67. #define FORWARD  4
  68. #define BACKWARD 5
  69.  
  70. /*
  71.  * Boolean type definition and constants 
  72.  */
  73. typedef int     bool_t;
  74.  
  75. #ifndef    TRUE
  76. #define    FALSE    (0)
  77. #define    TRUE    (1)
  78. #endif
  79. #define    SORTOF    (2)
  80. #define YES      TRUE
  81. #define NO       FALSE
  82. #define MAYBE    SORTOF
  83.  
  84. /*
  85.  * Maximum screen dimensions
  86.  */
  87. #define MAX_COLUMNS 140L
  88.  
  89. /*
  90.  * Buffer sizes
  91.  */
  92. #define CMDBUFFSIZE MAX_COLUMNS    /* size of the command processing buffer */
  93.  
  94. #define LSIZE        512    /* max. size of a line in the tags file */
  95.  
  96. #define IOSIZE     (1024+1)    /* file i/o and sprintf buffer size */
  97.  
  98. #define YANKSIZE    5200    /* yank buffer size */
  99. #define INSERT_SIZE 5300    /* insert, redo and undo buffer size must be
  100.                  * bigger than YANKSIZE */
  101. #define REDO_UNDO_SIZE 5400    /* redo, undo and (undo an undo) buffer size
  102.                  * must be bigger than INSERT_SIZE */
  103. #define READSIZE    5500    /* read buffer size must be bigger than
  104.                  * YANKSIZE and REDO_UNDO_SIZE */
  105.  
  106. /*
  107.  * SLOP is the amount of extra space we get for text on a line during editing
  108.  * operations that need more space. This keeps us from calling malloc every
  109.  * time we get a character during insert mode. No extra space is allocated
  110.  * when the file is initially read. 
  111.  */
  112. #define    SLOP    10
  113.  
  114. /*
  115.  * LINEINC is the gap we leave between the artificial line numbers. This
  116.  * helps to avoid renumbering all the lines every time a new line is
  117.  * inserted. 
  118.  */
  119. #define    LINEINC    10
  120.  
  121. #define CHANGED   { Changed = TRUE; }
  122. #define UNCHANGED { Changed = FALSE; }
  123.  
  124. struct line {
  125.     struct line    *next;    /* next line */
  126.     struct line    *prev;    /* previous line */
  127.     char           *s;        /* text for this line */
  128.     int             size;    /* actual size of space at 's' */
  129.     unsigned long   num;    /* line "number" */
  130. };
  131.  
  132. #define    LINEOF(x)    ((x)->linep->num)
  133.  
  134. struct lptr {
  135.     struct line    *linep;    /* line we're referencing */
  136.     int             index;    /* position within that line */
  137. };
  138.  
  139. typedef struct line LINE;
  140. typedef struct lptr LPTR;
  141.  
  142. struct charinfo {
  143.     char            ch_size;
  144.     char           *ch_str;
  145. };
  146.  
  147. extern struct charinfo chars[];
  148.  
  149. extern int      State;
  150. extern int      Rows;
  151. extern int      Columns;
  152. extern char    *Realscreen;
  153. extern char    *Nextscreen;
  154. extern char    *Filename;
  155. extern LPTR    *Filemem;
  156. extern LPTR    *Fileend;
  157. extern LPTR    *Topchar;
  158. extern LPTR    *Botchar;
  159. extern LPTR    *Curschar;
  160. extern LPTR    *Insstart;
  161. extern int      Cursrow, Curscol, Cursvcol, Curswant;
  162. extern bool_t   set_want_col;
  163. extern int      Prenum;
  164. extern bool_t   Changed;
  165. extern bool_t   RedrawingDisabled;
  166. extern bool_t   MustRedrawLine;
  167. extern bool_t   MustRedrawScreen;
  168. extern bool_t   UndoInProgress;
  169. extern bool_t   Binary;
  170. extern char    *IObuff;
  171. extern char    *Insbuffptr;
  172. extern char    *Insbuff;
  173. extern char    *Readbuffptr;
  174. extern char    *Readbuff;
  175. extern char    *Redobuffptr;
  176. extern char    *Redobuff;
  177. extern char    *Undobuffptr;
  178. extern char    *Undobuff;
  179. extern char    *UndoUndobuffptr;
  180. extern char    *UndoUndobuff;
  181. extern char    *Yankbuffptr;
  182. extern char    *Yankbuff;
  183. extern char     last_command;
  184. extern char     last_command_char;
  185.  
  186. extern char *malloc(), *strcpy();
  187.  
  188. /* alloc.c */
  189. char  *alloc();
  190. char  *strsave();
  191. void   screenalloc(), filealloc(), freeall();
  192. LINE  *newline();
  193. bool_t canincrease();
  194.  
  195. /* cmdline.c */
  196. void   readcmdline();
  197. void   dotag();
  198. void   msg(), emsg(), smsg();
  199. void   gotocmdline();
  200. void   wait_return();
  201.  
  202. /* dec.c */
  203. int    dec();
  204.  
  205. /* edit.c */
  206. void   edit(), insertchar(), getout(), scrollup(), scrolldown(), beginline();
  207. bool_t oneright(), oneleft(), oneup(), onedown();
  208.  
  209. /* fileio.c */
  210. void   filemess(), renum();
  211. bool_t readfile(), writeit();
  212.  
  213. /* updateNextscreen.c */
  214. void   updateNextscreen();
  215.  
  216. /* help.c */
  217. bool_t help();
  218.  
  219. /* inc.c */
  220. int    inc();
  221.  
  222. /* linefunc.c */
  223. LPTR   *nextline(), *prevline(), *coladvance();
  224.  
  225. /* main.c */
  226. void   stuffReadbuff();
  227. void   stuffnumReadbuff();
  228. char   vgetc();
  229. char   vpeekc();
  230.  
  231. /* mark.c */
  232. void   setpcmark(), clrall(), clrmark();
  233. bool_t setmark();
  234. LPTR  *getmark();
  235.  
  236. /* misccmds.c */
  237. bool_t opencmd();
  238. void   fileinfo(), inschar(), insstr(), delline();
  239. bool_t delchar();
  240. int    cntllines(), plines();
  241. LPTR  *gotoline();
  242.  
  243. /* updateRealscreen.c */
  244. void   updateRealscreen();
  245.  
  246. /* normal.c */
  247. void   normal();
  248. void   ResetBuffers();
  249. void   AppendToRedobuff();
  250. void   AppendNumberToRedobuff();
  251. void   AppendToUndobuff();
  252. void   AppendNumberToUndobuff();
  253. void   AppendPositionToUndobuff();
  254. void   AppendToUndoUndobuff();
  255. void   AppendNumberToUndoUndobuff();
  256. void   AppendPositionToUndoUndobuff();
  257. char  *mkstr();
  258.  
  259. /* param.c */
  260. void   doset();
  261.  
  262. /* screen.c */
  263. void   nexttoscreen();
  264. void   updateline();
  265. void   redrawline();
  266. void   screenclear();
  267. void   cursupdate();
  268. void   s_ins(), s_del();
  269.  
  270. /* search.c */
  271. void   dosearch();
  272. void   searchagain();
  273. void   repsearch();
  274. bool_t searchc(), crepsearch(), findfunc();
  275. LPTR  *showmatch();
  276. LPTR  *fwd_word(), *bck_word(), *end_word();
  277.  
  278. /*
  279.  * Machine-dependent routines. 
  280.  */
  281. #ifdef AMIGA
  282. # include "amiga.h"
  283. #endif
  284. #ifdef BSD
  285. # include "bsd.h"
  286. #endif
  287. #ifdef UNIX
  288. # include "unix.h"
  289. #endif
  290. #ifdef TOS
  291. # include "tos.h"
  292. #endif
  293. #ifdef OS2
  294. # include "os2.h"
  295. #endif
  296.