00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _EDITOR_HEADER_
00017 #define _EDITOR_HEADER_
00018
00019 #include <stdio.h>
00020 #define _STDIO_INCLUDED_
00021 #include <stdlib.h>
00022 #include <string.h>
00023
00024 #include "argacces.h"
00025 #include "constant.h"
00026 #include "constrct.h"
00027 #include "memalloc.h"
00028 #include "evaluatn.h"
00029 #include "router.h"
00030 #include "scanner.h"
00031 #include "symbol.h"
00032 #include "sysdep.h"
00033
00034 #if VAX_VMS
00035 #define ANSI 1
00036 #define VT52 0
00037 #define TERMCAP 0
00038 #define IBM_PC 0
00039 #endif
00040
00041 #if UNIX_7 || UNIX_V || LINUX || DARWIN
00042 #define ANSI 0
00043 #define VT52 0
00044 #define TERMCAP 1
00045 #define IBM_PC 0
00046 #endif
00047
00048 #if WIN_MVC || WIN_BTC
00049 #define ANSI 0
00050 #define VT52 0
00051 #define TERMCAP 0
00052 #define IBM_PC 1
00053 #endif
00054
00055 #if WIN_GCC
00056 #define ANSI 0
00057 #define VT52 0
00058 #define TERMCAP 0
00059 #define IBM_PC 1
00060 #endif
00061
00062
00063 #define CVMVAS 1
00064
00065 #define VERSION_NUM "3.0"
00066
00067 #define NFILEN 256
00068 #define NBUFN 16
00069 #define NLINE 256
00070 #define NKBDM 256
00071 #define NPAT 80
00072 #define HUGE 1000
00073
00074 #define AGRAVE 0x60
00075 #define METACH 0x1B
00076 #define CTMECH 0x1C
00077 #define EXITCH 0x1D
00078 #define COTLCH 0x1E
00079 #define HELPCH 0x1F
00080 #define DEL_KEY 0x7F
00081
00082 #define COTL 0x0100
00083 #define META 0x0200
00084 #define CTLX 0x0400
00085
00086 #define ABORT 2
00087
00088 #define FIOSUC 0
00089 #define FIOFNF 1
00090 #define FIOEOF 2
00091 #define FIOERR 3
00092
00093 #define CFCPCN 0x0001
00094 #define CFKILL 0x0002
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 typedef struct WINDOW {
00106 struct WINDOW *w_wndp;
00107 struct BUFFER *w_bufp;
00108 struct LINE *w_linep;
00109 struct LINE *w_dotp;
00110 short w_doto;
00111 struct LINE *w_markp;
00112 short w_marko;
00113 char w_toprow;
00114 char w_ntrows;
00115 char w_force;
00116 char w_flag;
00117 } WINDOW;
00118
00119 #define WFFORCE 0x01
00120 #define WFMOVE 0x02
00121 #define WFEDIT 0x04
00122 #define WFHARD 0x08
00123 #define WFMODE 0x10
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134 typedef struct BUFFER {
00135 struct BUFFER *b_bufp;
00136 struct LINE *b_dotp;
00137 short b_doto;
00138 struct LINE *b_markp;
00139 short b_marko;
00140 struct LINE *b_linep;
00141 char b_nwnd;
00142 char b_flag;
00143 char b_fname[NFILEN];
00144 char b_bname[NBUFN];
00145 } BUFFER;
00146
00147 #define BFTEMP 0x01
00148 #define BFCHG 0x02
00149
00150
00151
00152
00153
00154 typedef struct {
00155 struct LINE *r_linep;
00156 short r_offset;
00157 long r_size;
00158 } REGION;
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168 typedef struct LINE {
00169 struct LINE *l_fp;
00170 struct LINE *l_bp;
00171 short l_size;
00172 short l_used;
00173 char l_text[1];
00174 } LINE;
00175
00176 #define lforw(lp) ((lp)->l_fp)
00177 #define lback(lp) ((lp)->l_bp)
00178 #define lgetc(lp, n) ((lp)->l_text[(int) (n)]&0xFF)
00179 #define lputc(lp, n, c) ((lp)->l_text[(int) (n)]= (char) (c))
00180 #define llength(lp) ((lp)->l_used)
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193 typedef struct {
00194 short t_nrow;
00195 short t_ncol;
00196 void (*t_open)(void);
00197 void (*t_close)(void);
00198 int (*t_getchar)(void);
00199 void (*t_putchar)(int);
00200 void (*t_flush)(void);
00201 void (*t_move)(int,int);
00202 void (*t_eeol)(void);
00203 void (*t_eeop)(void);
00204 void (*t_beep)(void);
00205 } TERM;
00206
00207
00208 #if IBM_PC || WIN_GCC
00209
00210
00211
00212
00213
00214
00215 #define UP_ARROW 256
00216 #define DOWN_ARROW 257
00217 #define RIGHT_ARROW 258
00218 #define LEFT_ARROW 259
00219 #define HOME_KEY 260
00220 #define END_KEY 261
00221 #define PGUP_KEY 262
00222 #define PGDN_KEY 263
00223
00224 #define COTL_RIGHT_ARROW 264
00225 #define COTL_LEFT_ARROW 265
00226
00227 #define COTL_AT_SIGN 266
00228
00229 #endif
00230
00231 #if IBM_PC || VAX_VMS
00232
00233 #define BADKEY 999
00234
00235 #endif
00236
00237 #ifdef LOCALE
00238 #undef LOCALE
00239 #endif
00240
00241 #ifdef _EDBASIC_SOURCE_
00242 #define LOCALE
00243 #else
00244 #define LOCALE extern
00245 #endif
00246
00247 LOCALE int gotobol(void *,int,int);
00248 LOCALE int backchar(void *,int,int);
00249 LOCALE int gotoeol(void *,int,int);
00250 LOCALE int forwchar(void *,int,int);
00251 LOCALE int gotobob(void *,int,int);
00252 LOCALE int gotoeob(void *,int,int);
00253 LOCALE int forwline(void *,int,int);
00254 LOCALE int backline(void *,int,int);
00255 LOCALE int getgoal(LINE *);
00256 LOCALE int forwpage(void *,int,int);
00257 LOCALE int backpage(void *,int,int);
00258 LOCALE int setmark(void *,int,int);
00259 LOCALE int swapmark(void *,int,int);
00260 LOCALE int wrapword(void *);
00261 LOCALE int backword(void *,int,int);
00262 LOCALE int forwword(void *,int,int);
00263 LOCALE int upperword(void *,int,int);
00264 LOCALE int lowerword(void *,int,int);
00265 LOCALE int capword(void *,int,int);
00266 LOCALE int delfword(void *,int,int);
00267 LOCALE int delbword(void *,int,int);
00268 LOCALE int inword(void);
00269 LOCALE int killregion(void *,int,int);
00270 LOCALE int copyregion(void *,int,int);
00271 LOCALE int upperregion(void *,int,int);
00272 LOCALE int lowerregion(void *,int,int);
00273 LOCALE int getregion(REGION *);
00274 LOCALE int fileread(void *,int,int);
00275 LOCALE int filevisit(void *,int,int);
00276 LOCALE int filevisit_guts(void *,char []);
00277 LOCALE int readin(void *,char []);
00278 LOCALE int makename(char [],char []);
00279 LOCALE int filewrite(void *,int,int);
00280 LOCALE int filesave(void *,int,int);
00281 LOCALE int writeout(char *);
00282 LOCALE int filename(void *,int,int);
00283 LOCALE int ffropen(char *);
00284 LOCALE int ffwopen(char *);
00285 LOCALE int ffclose(void);
00286 LOCALE int ffputline(char [],int);
00287 LOCALE int ffgetline(char [],int);
00288 LOCALE void ttopen(void);
00289 LOCALE void ttclose(void);
00290 LOCALE void ttputc(int);
00291 LOCALE void ttflush(void);
00292 LOCALE int ttgetc(void);
00293
00294 #if VAX_VMS
00295 LOCALE int parse_esc_seq(void);
00296 #endif
00297
00298 #undef LOCALE
00299 #ifdef _EDMAIN_SOURCE_
00300 #define LOCALE
00301 #else
00302 #define LOCALE extern
00303 #endif
00304
00305 LOCALE void edinit(void *,char []);
00306 LOCALE int execute(void *,int,int,int);
00307 LOCALE int getkey(void);
00308 LOCALE int getctl(void);
00309 LOCALE int quickexit(void *,int,int);
00310 LOCALE int edquit(void *,int,int);
00311 LOCALE int temp_quit(void *,int,int);
00312 LOCALE int ctlxlp(void *,int,int);
00313 LOCALE int ctlxrp(void *,int,int);
00314 LOCALE int ctlxe(void *,int,int);
00315 LOCALE int ctrlg(void *,int,int);
00316 LOCALE void full_cleanup(void *);
00317 LOCALE int kill_all_buffers(void *,BUFFER **);
00318 LOCALE int kill_all_windows(void *);
00319 LOCALE int spec_clear(void *,BUFFER *);
00320 LOCALE void EditCommand(void *);
00321 LOCALE void EditorFunctionDefinition(void *);
00322
00323 #ifndef _EDMAIN_SOURCE_
00324
00325 extern int currow;
00326 extern int curcol;
00327 extern int fillcol;
00328 extern int thisflag;
00329 extern int lastflag;
00330 extern int curgoal;
00331 extern BUFFER *curbp;
00332 extern WINDOW *curwp;
00333 extern BUFFER *bheadp;
00334 extern WINDOW *wheadp;
00335 extern BUFFER *blistp;
00336 extern short kbdm[NKBDM];
00337 extern short *kbdmip;
00338 extern short *kbdmop;
00339 extern char pat[NPAT];
00340 extern char lastbufn[NBUFN];
00341 extern BUFFER *CompileBufferp;
00342
00343 #endif
00344
00345
00346 #undef LOCALE
00347 #ifdef _EDMISC_SOURCE_
00348 #define LOCALE
00349 #else
00350 #define LOCALE extern
00351 #endif
00352
00353 LOCALE int compile_region(void *,int,int);
00354 LOCALE int compile_file(void *,int,int);
00355 LOCALE int get_compile(void *,char *,char *);
00356 LOCALE int region_fnd(void *,char *);
00357 LOCALE int region_getc(void *,char *);
00358 LOCALE int region_ungetc(void *,int,char *);
00359 LOCALE int buffer_fnd(void *,char *);
00360 LOCALE int buffer_getc(void *,char *);
00361 LOCALE int buffer_ungetc(void *,int,char *);
00362 LOCALE int query_cmp(void *,char *);
00363 LOCALE int print_cmp(void *,char *,char *);
00364 LOCALE void init_cmp_router(void *);
00365 LOCALE void kill_cmp_router(void *);
00366 LOCALE int setfillcol(void *,int,int);
00367 LOCALE int showcpos(void *,int,int);
00368 LOCALE int getccol(int);
00369 LOCALE int getcline(void);
00370 LOCALE int cntlines(void);
00371 LOCALE int gotoline(void *,int,int);
00372 LOCALE int twiddle(void *,int,int);
00373 LOCALE int quote(void *,int,int);
00374 LOCALE int tab(void *,int,int);
00375 LOCALE int openline(void *,int,int);
00376 LOCALE int newline(void *,int,int);
00377 LOCALE int deblank(void *,int,int);
00378 LOCALE int indent(void *,int,int);
00379 LOCALE int forwdel(void *,int,int);
00380 LOCALE int backdel(void *,int,int);
00381 LOCALE int kill_fwd(void *,int,int);
00382 LOCALE int yank(void *,int,int);
00383 LOCALE int forwsearch(void *,int,int);
00384 LOCALE int backsearch(void *,int,int);
00385 LOCALE int bkwrdrpl(void *,int,int);
00386 LOCALE int bkwrdcr(void *,int,int);
00387 LOCALE int frwsr(void *,int,int);
00388 LOCALE int querysr(void *,int,int);
00389 LOCALE int lreplace(void *,char *);
00390 LOCALE int smatchb(void *,int,int);
00391 LOCALE int searchcl(int);
00392 LOCALE int searchop(int);
00393 LOCALE int readpattern(void *,char *);
00394 LOCALE int spawncli(void *,int,int);
00395 LOCALE int spawn(void *,int,int);
00396
00397 #if VAX_VMS
00398 LOCALE int sys(char *);
00399 #endif
00400
00401
00402 #undef LOCALE
00403 #ifdef _EDSTRUCT_SOURCE_
00404 #define LOCALE
00405 #else
00406 #define LOCALE extern
00407 #endif
00408
00409 LOCALE int usebuffer(void *,int,int);
00410 LOCALE int killbuffer(void *,int,int);
00411 LOCALE int listbuffers(void *,int,int);
00412 LOCALE int makelist(void *);
00413 LOCALE int addline(void *,BUFFER *,char *);
00414 LOCALE int anycb(void);
00415 LOCALE BUFFER *bfind(void *,char *,int,int);
00416 LOCALE int bclear(void *,BUFFER *);
00417 LOCALE LINE *lalloc(void *,int);
00418 LOCALE void lfree(void *,LINE *);
00419 LOCALE void lchange(int);
00420 LOCALE int linsert(void *,int,int);
00421 LOCALE int lnewline(void *);
00422 LOCALE int ldelete(void *,long,int);
00423 LOCALE int ldelnewline(void *);
00424 LOCALE void kdelete(void *);
00425 LOCALE int kinsert(void *,int);
00426 LOCALE int kremove(int);
00427 LOCALE int reposition(void *,int,int);
00428 LOCALE int EditorRefresh(void *,int,int);
00429 LOCALE int nextwind(void *,int,int);
00430 LOCALE int prevwind(void *,int,int);
00431 LOCALE int mvdnwind(void *,int,int);
00432 LOCALE int mvupwind(void *,int,int);
00433 LOCALE int onlywind(void *,int,int);
00434 LOCALE int splitwind(void *,int,int);
00435 LOCALE int enlargewind(void *,int,int);
00436 LOCALE int shrinkwind(void *,int,int);
00437 LOCALE WINDOW *wpopup(void *);
00438 LOCALE void vtinit(void *);
00439 LOCALE void vttidy(void);
00440 LOCALE void vtmove(int,int);
00441 LOCALE void vtputc(int);
00442 LOCALE void vteeol(void);
00443 LOCALE void update(void);
00444 LOCALE void updateline(int,char [],char []);
00445 LOCALE void modeline(WINDOW *);
00446 LOCALE void movecursor(int,int);
00447 LOCALE void mlerase(void);
00448 LOCALE int mlyesno(void *,char *);
00449 LOCALE int mlreply(void *,char *,char *,int);
00450 LOCALE void mlwrite(char *,...);
00451 LOCALE void mlputs(char *);
00452 LOCALE void mlputi(int,int);
00453 LOCALE void mlputli(long,int);
00454 LOCALE void kill_video_buffers(void *);
00455
00456 #ifndef _EDSTRUCT_SOURCE_
00457 extern int mpresf;
00458 extern int sgarbf;
00459 #endif
00460
00461 #ifndef _EDTERM_SOURCE_
00462 extern TERM term;
00463 #endif
00464
00465 #endif
00466
00467
00468
00469