📄 buf.h
字号:
/*************************************************************************** * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne. JOVE * * is provided to you without charge, and with no warranty. You may give * * away copies of JOVE, including sources, provided that this notice is * * included in all the files. * ***************************************************************************//* maximum length of a line (including '\0'). Currently cannot be larger than a logical disk block. */#define LBSIZE JBUFSIZ/* buffer types */#define B_SCRATCH 1 /* for internal things, e.g. minibuffer ... */#define B_FILE 2 /* normal file (we auto-save these.) */#define B_PROCESS 3 /* unix process output in this buffer *//* major modes */#define FUNDAMENTAL 0 /* Fundamental mode */#define TEXT 1 /* Text mode */#define CMODE 2 /* C mode */#ifdef LISP# define LISPMODE 3 /* Lisp mode */# define NMAJORS 4#else# define NMAJORS 3#endif#define MajorMode(x) (curbuf->b_major == (x))#define SetMajor(x) { curbuf->b_major = (x); UpdModLine = YES; }/* minor modes */#define Indent (1 << 0) /* indent same as previous line after return */#define ShowMatch (1 << 1) /* paren flash mode */#define Fill (1 << 2) /* text fill mode */#define OverWrite (1 << 3) /* over write mode */#define Abbrev (1 << 4) /* abbrev mode */#define ReadOnly (1 << 5) /* buffer is read only */#define BufMinorMode(b, x) (((b)->b_minor & (x)) != 0)#define MinorMode(x) BufMinorMode(curbuf, (x))/* global line scratch buffers */#ifdef pdp11extern char *genbuf, /* scratch pad points at s_genbuf (see main()) */ *linebuf, /* points at s_linebuf */ *iobuff; /* for file reading ... points at s_iobuff */#elseextern char genbuf[LBSIZE], linebuf[LBSIZE], iobuff[LBSIZE];#endifstruct line { Line *l_prev, /* pointer to prev */ *l_next; /* pointer to next */ daddr l_dline; /* pointer to disk location */};struct mark { Line *m_line; int m_char; Mark *m_next; /* list of marks */#define M_FIXED 00#define M_FLOATER 01#define M_BIG_DELETE 02 char m_flags; /* FLOATERing mark? */};struct buffer {#ifdef MAC int Type; /* kludge... to look like a data_obj */ char *Name; /* Name will not be used */#endif Buffer *b_next; /* next buffer in chain */ char *b_name, /* buffer name */ *b_fname; /* file name associated with buffer */ dev_t b_dev; /* device of file name. */ ino_t b_ino; /* inode of file name */ time_t b_mtime; /* last modify time ... to detect two people writing to the same file */ Line *b_first, /* pointer to first line in list */ *b_dot, /* current line */ *b_last; /* last line in list */ int b_char; /* current character in line */#define NMARKS 8 /* number of marks in the ring */ Mark *b_markring[NMARKS], /* new marks are pushed here */#define b_curmark(b) ((b)->b_markring[(b)->b_themark])#define curmark b_curmark(curbuf) *b_marks; /* all the marks for this buffer */ char b_themark, /* current mark (in b_markring) */ b_type, /* file, scratch, process, iprocess */ b_ntbf, /* (bool) needs to be found when we first select? */ b_modified; /* (bool) is the buffer modified? */ int b_major, /* major mode */ b_minor; /* and minor mode */ struct keymap *b_map; /* local bindings (if any) */#ifdef IPROCS Process *b_process; /* process we're attached to */#endif};extern Buffer *world, /* first buffer */ *curbuf, /* pointer into world for current buffer */ *lastbuf, /* Last buffer we were in so we have a default buffer during a select buffer. */ *perr_buf; /* Buffer with error messages */#define curline (curbuf->b_dot)#define curchar (curbuf->b_char)/* kill buffer */#define NUMKILLS 10 /* number of kills saved in the kill ring */extern Line *killbuf[NUMKILLS];struct position { Line *p_line; int p_char;};extern int killptr; /* index into killbuf */extern Buffer *buf_exists proto((char *name)), *do_find proto((struct window *w, char *fname, bool force)), *do_select proto((struct window *w,char *name)), *file_exists proto((char *name));extern char *ask_buf proto((struct buffer *def));extern UnivPtr freealloc proto((UnivPtr obj, size_t size));#ifdef REALSTDCstruct macro; /* forward declaration preventing prototype scoping */#endif /* REALSTDC */extern void TogMinor proto((int bit)), initlist proto((struct buffer *b)), setfname proto((struct buffer *b,char *name)), set_ino proto((struct buffer *b)), SetABuf proto((struct buffer *b)), SetBuf proto((struct buffer *newbuf)), AllMarkSet proto((struct buffer *b,struct line *line,int col)), DFixMarks proto((struct line *line1,int char1,struct line *line2,int char2)), DelMark proto((struct mark *m)), IFixMarks proto((struct line *line1, int char1, struct line *line2, int char2)), MarkSet proto((struct mark *m, struct line *line, int column)), ToMark proto((struct mark *m)), flush_marks proto((Buffer *)), b_char proto((int n)), b_word proto((int num)), del_char proto((int dir,int num,int OK_kill)), do_macro proto((struct macro *mac)), do_set_mark proto((struct line *l, int c)), f_char proto((int n)), f_word proto((int num)), ins_str proto((char *str,int ok_nl)), insert_c proto((int c,int n)), lfreelist proto((struct line *first)), lfreereg proto((struct line *line1,struct line *line2)), line_move proto((int dir, int n, bool line_cmd)), mac_putc proto((int c)), n_indent proto((int goal)), open_lines proto((int n)), reg_kill proto((struct line *line2, int char2, bool dot_moved)), set_mark proto((void)), unwind_macro_stack proto((void)), buf_init proto((void));extern int ModMacs proto((void)), in_macro proto((void)), mac_getc proto((void)), how_far proto((struct line *line,int col));extern struct line *lastline proto((struct line *lp)), *listput proto((struct buffer *buf,struct line *after)), *nbufline proto((void)), *next_line proto((struct line *line,int num)), *prev_line proto((struct line *line,int num)), *reg_delete proto((struct line *line1,int char1,struct line *line2,int char2));extern Mark *CurMark proto((void)), *MakeMark proto((struct line *line,int column,int type));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -