242 lines
4.9 KiB
C
242 lines
4.9 KiB
C
/*
|
|
* $Header: /nw/tony/src/stevie/src/RCS/stevie.h,v 1.19 89/07/12 21:33:32 tony Exp $
|
|
*
|
|
* Main header file included by all source files.
|
|
*/
|
|
|
|
#include "env.h" /* defines to establish the compile-time environment */
|
|
|
|
#include <excpt.h>
|
|
#include <ntdef.h>
|
|
#include <stdio.h>
|
|
#include <ctype.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "ascii.h"
|
|
#include "keymap.h"
|
|
#include "param.h"
|
|
|
|
#define NORMAL 0
|
|
#define CMDLINE 1
|
|
#define INSERT 2
|
|
#define REPLACE 3
|
|
#define FORWARD 4
|
|
#define BACKWARD 5
|
|
|
|
/*
|
|
* Boolean type definition and constants
|
|
*/
|
|
typedef unsigned bool_t;
|
|
|
|
#ifndef TRUE
|
|
#define FALSE (0)
|
|
#define TRUE (1)
|
|
#endif
|
|
|
|
/*
|
|
* SLOP is the amount of extra space we get for text on a line during
|
|
* editing operations that need more space. This keeps us from calling
|
|
* malloc every time we get a character during insert mode. No extra
|
|
* space is allocated when the file is initially read.
|
|
*/
|
|
#define SLOP 10
|
|
#define INSERTSLOP 1024 // for insert buffer
|
|
#define REDOBUFFMIN 100 // minimum size of redo buffer
|
|
|
|
/*
|
|
* LINEINC is the gap we leave between the artificial line numbers. This
|
|
* helps to avoid renumbering all the lines every time a new line is
|
|
* inserted.
|
|
*/
|
|
#define LINEINC 10
|
|
|
|
#define CHANGED Changed=TRUE
|
|
#define UNCHANGED Changed=FALSE
|
|
|
|
struct line {
|
|
struct line *prev, *next; /* previous and next lines */
|
|
char *s; /* text for this line */
|
|
int size; /* actual size of space at 's' */
|
|
unsigned long num; /* line "number" */
|
|
};
|
|
|
|
#define LINEOF(x) ((x)->linep->num)
|
|
|
|
struct LNPTR {
|
|
struct line *linep; /* line we're referencing */
|
|
int index; /* position within that line */
|
|
};
|
|
|
|
typedef struct line LINE;
|
|
typedef struct LNPTR LNPTR;
|
|
|
|
struct charinfo {
|
|
char ch_size;
|
|
char *ch_str;
|
|
};
|
|
|
|
extern struct charinfo chars[];
|
|
|
|
extern int State;
|
|
extern int Rows;
|
|
extern int Columns;
|
|
extern char *Realscreen;
|
|
extern char *Nextscreen;
|
|
extern char *Filename;
|
|
extern char *Appname;
|
|
extern LNPTR *Filemem;
|
|
extern LNPTR *Filetop;
|
|
extern LNPTR *Fileend;
|
|
extern LNPTR *Topchar;
|
|
extern LNPTR *Botchar;
|
|
extern LNPTR *Curschar;
|
|
extern LNPTR *Insstart;
|
|
extern int Cursrow, Curscol, Cursvcol, Curswant;
|
|
extern bool_t set_want_col;
|
|
extern int Prenum,namedbuff;
|
|
extern bool_t Changed;
|
|
extern char *Redobuff, *Insbuff;
|
|
extern int InsbuffSize;
|
|
extern char *Insptr;
|
|
extern int Ninsert;
|
|
extern bool_t got_int;
|
|
|
|
/*
|
|
* alloc.c
|
|
*/
|
|
char *alloc(), *strsave(), *mkstr();
|
|
char *ralloc(char *,unsigned);
|
|
void screenalloc(), filealloc(), freeall();
|
|
LINE *newline();
|
|
bool_t bufempty(), buf1line(), lineempty(), endofline(), canincrease();
|
|
|
|
/*
|
|
* cmdline.c
|
|
*/
|
|
void doxit(),docmdln(), dotag(), msg(), emsg();
|
|
void smsg(), gotocmd(), wait_return();
|
|
int wait_return0();
|
|
void dosource(char *,bool_t);
|
|
char *getcmdln();
|
|
|
|
/*
|
|
* edit.c
|
|
*/
|
|
void edit(), insertchar(), getout(), scrollup(), scrolldown(), beginline();
|
|
bool_t oneright(), oneleft(), oneup(), onedown();
|
|
|
|
/*
|
|
* fileio.c
|
|
*/
|
|
void filemess(), renum();
|
|
bool_t readfile(), writeit();
|
|
|
|
/*
|
|
* help.c
|
|
*/
|
|
bool_t help();
|
|
|
|
/*
|
|
* linefunc.c
|
|
*/
|
|
LNPTR *nextline(), *prevline(), *coladvance();
|
|
|
|
/*
|
|
* main.c
|
|
*/
|
|
void stuffin(), stuffnum();
|
|
void do_mlines();
|
|
int vgetc();
|
|
bool_t anyinput();
|
|
|
|
/*
|
|
* mark.c
|
|
*/
|
|
void setpcmark(), clrall(), clrmark();
|
|
bool_t setmark();
|
|
LNPTR *getmark();
|
|
|
|
/*
|
|
* misccmds.c
|
|
*/
|
|
void opencmd(), fileinfo(), inschar(), delline();
|
|
bool_t delchar();
|
|
int cntllines(), plines();
|
|
LNPTR *gotoline();
|
|
|
|
/*
|
|
* normal.c
|
|
*/
|
|
void normal();
|
|
|
|
/*
|
|
* ops.c
|
|
*/
|
|
|
|
void inityank();
|
|
|
|
/*
|
|
* param.c
|
|
*/
|
|
void doset();
|
|
|
|
/*
|
|
* ptrfunc.c
|
|
*/
|
|
int inc(), dec();
|
|
int gchar();
|
|
void pchar(), pswap();
|
|
bool_t lt(), equal(), ltoreq();
|
|
#if 0
|
|
/* not currently used */
|
|
bool_t gtoreq(), gt();
|
|
#endif
|
|
|
|
/*
|
|
* screen.c
|
|
*/
|
|
void updatescreen(), updateline();
|
|
void screenclear(), cursupdate();
|
|
void s_ins(), s_del();
|
|
void prt_line();
|
|
|
|
/*
|
|
* search.c
|
|
*/
|
|
void dosub(), doglob();
|
|
bool_t searchc(), crepsearch(), findfunc(), dosearch(), repsearch();
|
|
LNPTR *showmatch();
|
|
LNPTR *fwd_word(), *bck_word(), *end_word();
|
|
|
|
/*
|
|
* undo.c
|
|
*/
|
|
void u_save(), u_saveline(), u_clear();
|
|
void u_lcheck(), u_lundo();
|
|
void u_undo();
|
|
|
|
/*
|
|
* Machine-dependent routines.
|
|
*/
|
|
int inchar();
|
|
void flushbuf();
|
|
void outchar(), outstr(), beep();
|
|
char *fixname();
|
|
void windinit(), windexit(), windgoto();
|
|
void delay();
|
|
void doshell();
|
|
void sleep(int);
|
|
void setviconsoletitle();
|
|
void dochdir();
|
|
|
|
void Scroll(int t,int l,int b,int r,int Row,int Col);
|
|
void EraseLine(void);
|
|
void EraseNLinesAtRow(int n,int row);
|
|
void InsertLine(void);
|
|
void SaveCursor(void);
|
|
void RestoreCursor(void);
|
|
void ClearDisplay(void);
|
|
void InvisibleCursor(void);
|
|
void VisibleCursor(void);
|