[BACK]Return to vim.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / vim

File: [local] / src / usr.bin / vim / Attic / vim.h (download)

Revision 1.1.1.1 (vendor branch), Sat Sep 7 21:40:28 1996 UTC (27 years, 9 months ago) by downsj
Branch: VIM
CVS Tags: VIM42
Changes since 1.1: +0 -0 lines

Initial import of vim 4.2.

This is meant to replace nvi in the tree.  Vim, in general, works better,
provides more features, and does not suffer from the license problems
being imposed upon nvi.

On the other hand, vim lacks a non-visual ex mode, in addition to open mode.

This includes the GUI (X11) code, but doesn't try to compile it.


/*	$OpenBSD: vim.h,v 1.1.1.1 1996/09/07 21:40:28 downsj Exp $	*/
/* vi:set ts=4 sw=4:
 *
 * VIM - Vi IMproved		by Bram Moolenaar
 *
 * Do ":help uganda"  in Vim to read copying and usage conditions.
 * Do ":help credits" in Vim to see a list of people who contributed.
 */

/* ============ the header file puzzle (ca. 50-100 pieces) ========= */

#ifdef HAVE_CONFIG_H	/* GNU autoconf (or something else) was here */
# include "config.h"
#endif

#ifdef __EMX__			/* hand-edited config.h for OS/2 with EMX */
# include "conf_os2.h"
#endif

/*
 * This is a bit of a wishlist.  Currently we only have the Motif and Athena
 * GUI.
 */
#if defined(USE_GUI_MOTIF) \
	|| defined(USE_GUI_ATHENA) \
	|| defined(USE_GUI_MAC) \
	|| defined(USE_GUI_WINDOWS31) \
	|| defined(USE_GUI_WIN32) \
	|| defined(USE_GUI_OS2)
# ifndef USE_GUI
#  define USE_GUI
# endif
#endif

#include "feature.h"	/* #defines for optionals and features */

/*
 * Find out if function definitions should include argument types
 */
#ifdef AZTEC_C
# include <functions.h>
# define __ARGS(x)	x
# define __PARMS(x)	x
#endif

#ifdef SASC
# include <clib/exec_protos.h>
# define __ARGS(x)	x
# define __PARMS(x)	x
#endif

#ifdef _DCC
# include <clib/exec_protos.h>
# define __ARGS(x)	x
# define __PARMS(x)	x
#endif

#ifdef __TURBOC__
# define __ARGS(x) x
#endif

#if defined(UNIX) || defined(__EMX__)
# include "unix.h"		/* bring lots of system header files */
#endif

#ifdef VMS
# include "vms.h"
#endif

#ifndef __ARGS
# if defined(__STDC__) || defined(__GNUC__) || defined(WIN32)
#  define __ARGS(x) x
# else
#  define __ARGS(x) ()
# endif
#endif

/* __ARGS and __PARMS are the same thing. */
#ifndef __PARMS
# define __PARMS(x) __ARGS(x)
#endif

#ifdef UNIX
# include "osdef.h"		/* bring missing declarations in */
#endif

#ifdef __EMX__
# define	getcwd	_getcwd2
# define	chdir	_chdir2
# undef		CHECK_INODE
#endif

#ifdef AMIGA
# include "amiga.h"
#endif

#ifdef ARCHIE
# include "archie.h"
#endif

#ifdef MSDOS
# include "msdos.h"
#endif

#ifdef WIN32
# include "win32.h"
#endif

#ifdef MINT
# include "mint.h"
#endif

/*
 * maximum length of a file name and a path	(for non-unix systems)
 */
#ifndef MAXNAMLEN
# define MAXNAMLEN 31
#endif

#ifndef MAXPATHL
# define MAXPATHL	128			/* not too long to put name on stack */
#endif

/*
 * Shorthand for unsigned variables. Many systems, but not all, have u_char
 * already defined, so we use char_u to avoid trouble.
 */
typedef unsigned char	char_u;
typedef unsigned short	short_u;
typedef unsigned int	int_u;
typedef unsigned long	long_u;

#ifndef UNIX				/* For Unix this is included in unix.h */
#include <stdio.h>
#include <ctype.h>
#endif

#if defined(HAVE_STRING_H)
# include <string.h>
#else
# ifdef HAVE_STRINGS_H
#  include <strings.h>
# endif
#endif

#include "ascii.h"
#include "keymap.h"
#include "term.h"
#include "macros.h"

#ifdef LATTICE
# include <sys/types.h>
# include <sys/stat.h>
#endif
#ifdef _DCC
# include <sys/stat.h>
#endif
#if defined MSDOS  ||  defined WIN32
# include <sys\stat.h>
#endif

/* allow other (non-unix) systems to configure themselves now */
#ifndef UNIX
# ifdef HAVE_STAT_H
#  include <stat.h>
# endif
# ifdef HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif /* NON-UNIX */

/* ================ end of the header file puzzle =============== */

/*
 * flags for updateScreen()
 * The higher the value, the higher the priority
 */
#define VALID					10	/* buffer not changed */
#define INVERTED				20	/* redisplay inverted part */
#define VALID_TO_CURSCHAR		30	/* buffer at/below cursor changed */
#define NOT_VALID				40	/* buffer changed */
#define CURSUPD					50	/* buffer changed, update cursor first */
#define CLEAR					60	/* screen messed up, clear it */

/*
 * Attributes for NextScreen.
 */
#define CHAR_NORMAL		0
#define CHAR_INVERT		1
#define CHAR_UNDERL		2
#define CHAR_BOLD		3
#define CHAR_STDOUT		4
#define CHAR_ITALIC		5

/*
 * values for State
 *
 * The lowest four bits are used to distinguish normal/visual/cmdline/
 * insert+replace mode. This is used for mapping. If none of these bits are
 * set, no mapping is done.
 * The upper four bits are used to distinguish between other states.
 */
#define NORMAL					0x01
#define VISUAL					0x02
#define CMDLINE 				0x04
#define INSERT					0x08
#define NORMAL_BUSY				0x11	/* busy interpreting a command */
#define REPLACE 				0x28	/* replace mode */
#define HITRETURN				0x61	/* waiting for a return */
#define ASKMORE					0x70	/* Asking if you want --more-- */
#define SETWSIZE				0x80	/* window size has changed */
#define ABBREV					0x90	/* abbreviation instead of mapping */
#define EXTERNCMD				0xa0	/* executing an external command */

/* directions */
#define FORWARD 				1
#define BACKWARD				(-1)
#define BOTH_DIRECTIONS			2

/* return values for functions */
#define OK						1
#define FAIL					0

/*
 * values for command line completion
 */
#define CONTEXT_UNKNOWN			(-2)
#define EXPAND_UNSUCCESSFUL		(-1)
#define EXPAND_NOTHING			0
#define EXPAND_COMMANDS			1
#define EXPAND_FILES			2
#define EXPAND_DIRECTORIES		3
#define EXPAND_SETTINGS			4
#define EXPAND_BOOL_SETTINGS	5
#define EXPAND_TAGS				6
#define EXPAND_OLD_SETTING		7
#define EXPAND_HELP				8
#define EXPAND_BUFFERS			9
#define EXPAND_EVENTS			10
#define EXPAND_MENUS			11

/* Values for nextwild() and ExpandOne().  See ExpandOne() for meaning. */
#define WILD_FREE				1
#define WILD_EXPAND_FREE		2
#define WILD_EXPAND_KEEP		3
#define WILD_NEXT				4
#define WILD_PREV				5
#define WILD_ALL				6
#define WILD_LONGEST			7

#define WILD_LIST_NOTFOUND		1
#define WILD_HOME_REPLACE		2

/* Values for the find_pattern_in_path() function args 'type' and 'action': */
#define FIND_ANY		1
#define FIND_DEFINE		2
#define CHECK_PATH		3

#define ACTION_SHOW		1
#define ACTION_GOTO		2
#define ACTION_SPLIT	3
#define ACTION_SHOW_ALL	4
#ifdef INSERT_EXPAND
# define ACTION_EXPAND	5
#endif

/* Values for 'options' argument in do_search() and searchit() */
#define SEARCH_REV	  0x01	/* go in reverse of previous dir. */
#define SEARCH_ECHO	  0x02	/* echo the search command and handle options */
#define SEARCH_MSG	  0x0c	/* give messages (yes, it's not 0x04) */
#define SEARCH_NFMSG  0x08	/* give all messages except not found */
#define SEARCH_OPT	  0x10	/* interpret optional flags */
#define SEARCH_HIS	  0x20	/* put search pattern in history */
#define SEARCH_END	  0x40	/* put cursor at end of match */
#define SEARCH_NOOF	  0x80	/* don't add offset to position */
#define SEARCH_START 0x100	/* start search without col offset */
#define SEARCH_MARK  0x200	/* set previous context mark */
#define SEARCH_KEEP  0x400	/* keep previous search pattern */

/* Values for find_ident_under_cursor() */
#define FIND_IDENT	1		/* find identifier (word) */
#define FIND_STRING	2		/* find any string (WORD) */

/* Values for get_file_name_in_path() */
#define FNAME_MESS	1		/* give error message */
#define FNAME_EXP	2		/* expand to path */
#define FNAME_HYP	4		/* check for hypertext link */

/* Values for buflist_getfile() */
#define GETF_SETMARK	0x01	/* set pcmark before jumping */
#define GETF_ALT		0x02	/* jumping to alternate file (not buf num) */

/* Values for in_indentkeys() */
#define KEY_OPEN_FORW	0x101
#define KEY_OPEN_BACK	0x102

/* Values for call_shell() second argument */
#define SHELL_FILTER		1		/* filtering text */
#define SHELL_EXPAND		2		/* expanding wildcards */
#define SHELL_COOKED		4		/* set term to cooked mode */

/* Values for change_indent() */
#define INDENT_SET			1		/* set indent */
#define INDENT_INC			2		/* increase indent */
#define INDENT_DEC			3		/* decrease indent */

/* Values for flags argument for findmatchlimit() */
#define FM_BACKWARD			0x01	/* search backwards */
#define FM_FORWARD			0x02	/* search forwards */
#define FM_BLOCKSTOP		0x04	/* stop at start/end of block */
#define FM_SKIPCOMM			0x08	/* skip comments */

/* Values for action argument for do_buffer() */
#define DOBUF_GOTO		0		/* go to specified buffer */
#define DOBUF_SPLIT		1		/* split window and go to specified buffer */
#define DOBUF_UNLOAD	2		/* unload specified buffer(s) */
#define DOBUF_DEL		3		/* delete specified buffer(s) */

/* Values for start argument for do_buffer() */
#define DOBUF_CURRENT	0		/* "count" buffer from current buffer */
#define DOBUF_FIRST		1		/* "count" buffer from first buffer */
#define DOBUF_LAST		2		/* "count" buffer from last buffer */
#define DOBUF_MOD		3		/* "count" mod. buffer from current buffer */

/* Values for sub_cmd and which_pat argument for myregcomp() */
/* Also used for which_pat argument for searchit() */
#define RE_SEARCH	0			/* save/use pat in/from search_pattern */
#define RE_SUBST	1			/* save/use pat in/from subst_pattern */
#define RE_BOTH		2			/* save pat in both patterns */
#define RE_LAST		2			/* use last used pattern if "pat" is NULL */

/* Return values for fullpathcmp() */
#define FPC_SAME   1			/* both exist and are the same file. */
#define FPC_DIFF   2			/* both exist and are different files. */
#define FPC_NOTX   3			/* both don't exist. */
#define FPC_DIFFX  4			/* one of them doesn't exist. */

/*
 * Events for autocommands.
 */
enum auto_events
{
	EVENT_BUFENTER = 0,		/* after entering a buffer */
	EVENT_BUFLEAVE,			/* before leaving a buffer */
	EVENT_BUFNEWFILE,		/* when creating a buffer for a new file */
	EVENT_BUFREADPOST,		/* after reading a buffer */
	EVENT_BUFREADPRE,		/* before reading a buffer */
	EVENT_BUFWRITEPOST,		/* after writing a buffer */
	EVENT_BUFWRITEPRE,		/* before writing a buffer */
	EVENT_FILEAPPENDPOST,	/* after appending to a file */
	EVENT_FILEAPPENDPRE,	/* before appending to a file */
	EVENT_FILEREADPOST,		/* after reading a file */
	EVENT_FILEREADPRE,		/* before reading a file */
	EVENT_FILEWRITEPOST,	/* after writing a file */
	EVENT_FILEWRITEPRE,		/* before writing a file */
	EVENT_FILTERREADPOST,	/* after reading from a filter */
	EVENT_FILTERREADPRE,	/* before reading from a filter */
	EVENT_FILTERWRITEPOST,	/* after writing to a filter */
	EVENT_FILTERWRITEPRE,	/* before writing to a filter */
	EVENT_VIMLEAVE,			/* before exiting Vim */
	EVENT_WINENTER,			/* after entering a window */
	EVENT_WINLEAVE,			/* before leaving a window */
	NUM_EVENTS				/* MUST be the last one */
};

/*
 * Boolean constants
 */
#ifndef TRUE
# define FALSE	0			/* note: this is an int, not a long! */
# define TRUE	1
#endif

#define MAYBE	2			/* for beginline() and the 'sol' option */

/* May be returned by add_new_completion(): */
#define RET_ERROR				(-1)

/*
 * jump_to_mouse() returns one of these values, possibly with
 * CURSOR_MOVED added
 */
#define IN_UNKNOWN		1
#define IN_BUFFER		2
#define IN_STATUS_LINE	3			/* Or in command line */
#define CURSOR_MOVED	0x100

/* flags for jump_to_mouse() */
#define MOUSE_FOCUS		0x1		/* if used, need to stay in this window */
#define MOUSE_MAY_VIS	0x2		/* if used, may set visual mode */ 
#define MOUSE_DID_MOVE	0x4		/* if used, only act when mouse has moved */
#define MOUSE_SETPOS	0x8		/* if used, only set current mouse position */

/*
 * Minimum screen size
 */
#define MIN_COLUMNS		12		/* minimal columns for screen */
#define MIN_ROWS		1		/* minimal rows for one window */
#define STATUS_HEIGHT	1		/* height of a status line under a window */

/*
 * Buffer sizes
 */
#ifndef CMDBUFFSIZE
# define CMDBUFFSIZE	256		/* size of the command processing buffer */
#endif

#define LSIZE		512			/* max. size of a line in the tags file */

#define IOSIZE	   (1024+1) 	/* file i/o and sprintf buffer size */
#define MSG_BUF_LEN	80			/* length of buffer for small messages */

#define	TERMBUFSIZE	1024

#if defined(AMIGA) || defined(__linux__)
# define TBUFSZ 2048			/* buffer size for termcap entry */
#else
# define TBUFSZ 1024			/* buffer size for termcap entry */
#endif

/*
 * Maximum length of key sequence to be mapped.
 * Must be able to hold an Amiga resize report.
 */
#define MAXMAPLEN	50

#ifdef BINARY_FILE_IO
# define WRITEBIN	"wb"		/* no CR-LF translation */
# define READBIN	"rb"
# define APPENDBIN	"ab"
#else
# define WRITEBIN	"w"
# define READBIN	"r"
# define APPENDBIN	"a"
#endif

/*
 * EMX doesn't have a global way of making open() use binary I/O.
 * Use O_BINARY for all open() calls.
 */
#ifdef __EMX__
# define O_EXTRA	O_BINARY
#else
# define O_EXTRA	0
#endif

#define CHANGED   		set_Changed()
#define UNCHANGED(buf)	unset_Changed(buf)

/*
 * defines to avoid typecasts from (char_u *) to (char *) and back
 * (vim_strchr() and vim_strrchr() are now in alloc.c)
 */
#define STRLEN(s)			strlen((char *)(s))
#define STRCPY(d, s)		strcpy((char *)(d), (char *)(s))
#define STRNCPY(d, s, n)	strncpy((char *)(d), (char *)(s), (size_t)(n))
#define STRCMP(d, s)		strcmp((char *)(d), (char *)(s))
#define STRNCMP(d, s, n)	strncmp((char *)(d), (char *)(s), (size_t)(n))
#define STRCAT(d, s)		strcat((char *)(d), (char *)(s))
#define STRNCAT(d, s, n)	strncat((char *)(d), (char *)(s), (size_t)(n))

#define MSG(s)				msg((char_u *)(s))
#define EMSG(s)				emsg((char_u *)(s))
#define EMSG2(s, p)			emsg2((char_u *)(s), (char_u *)(p))
#define EMSGN(s, n)			emsgn((char_u *)(s), (long)(n))
#define OUTSTR(s)			outstr((char_u *)(s))
#define OUTSTRN(s)			outstrn((char_u *)(s))
#define MSG_OUTSTR(s)		msg_outstr((char_u *)(s))

typedef long		linenr_t;		/* line number type */
typedef unsigned	colnr_t;		/* column number type */

#define MAXLNUM (0x7fffffff)		/* maximum (invalid) line number */

#if SIZEOF_INT >= 4
# define MAXCOL	(0x7fffffff)		/* maximum column number, 31 bits */
#else
# define MAXCOL	(0x7fff)			/* maximum column number, 15 bits */
#endif

#define SHOWCMD_COLS 10				/* columns needed by shown command */

/*
 * Include a prototype for vim_memmove(), it may not be in alloc.pro.
 */
#ifdef VIM_MEMMOVE
void vim_memmove __ARGS((void *, void *, size_t));
#else
# ifndef vim_memmove
#  define vim_memmove(to, from, len) memmove(to, from, len)
# endif
#endif

/*
 * For the Amiga we use a version of getenv that does local variables under 2.0
 * For Win32 and MSDOS we also check $HOME when $VIM is used.
 */
#if !defined(AMIGA) && !defined(WIN32) && !defined(MSDOS) && !defined(VMS)
# define vim_getenv(x) (char_u *)getenv((char *)x)
#endif

/*
 * fnamecmp() is used to compare filenames.
 * On some systems case in a filename does not matter, on others it does.
 * (this does not account for maximum name lengths and things like "../dir",
 * thus it is not 100% accurate!)
 */
#ifdef CASE_INSENSITIVE_FILENAME
# define fnamecmp(x, y) stricmp((char *)(x), (char *)(y))
# define fnamencmp(x, y, n) strnicmp((char *)(x), (char *)(y), (size_t)(n))
#else
# define fnamecmp(x, y) strcmp((char *)(x), (char *)(y))
# define fnamencmp(x, y, n) strncmp((char *)(x), (char *)(y), (size_t)(n))
#endif

#ifdef HAVE_MEMSET
# define vim_memset(ptr, c, size)	memset((ptr), (c), (size))
#else
void *vim_memset __ARGS((void *, int, size_t));
#endif

/* for MS-DOS and Win32: use chdir() that also changes the default drive */
#ifdef USE_VIM_CHDIR
int vim_chdir __ARGS((char *));
#else
# define vim_chdir chdir
#endif

/*
 * vim_iswhite() is used for "^" and the like. It differs from isspace()
 * because it doesn't include <CR> and <LF> and the like.
 */
#define vim_iswhite(x)	((x) == ' ' || (x) == '\t')

/* Note that gui.h is included by structs.h */

#include "structs.h"		/* file that defines many structures */