diff options
Diffstat (limited to 'contrib/global/nvi-1.66.diff')
-rw-r--r-- | contrib/global/nvi-1.66.diff | 673 |
1 files changed, 673 insertions, 0 deletions
diff --git a/contrib/global/nvi-1.66.diff b/contrib/global/nvi-1.66.diff new file mode 100644 index 0000000000000..bf1400b5679ab --- /dev/null +++ b/contrib/global/nvi-1.66.diff @@ -0,0 +1,673 @@ +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/build/Makefile ./build/Makefile +*** /usr/src/usr.bin/nvi-1.66.org/build/Makefile Tue May 5 15:57:21 1998 +--- ./build/Makefile Sun Aug 16 03:22:53 1998 +*************** +*** 3,9 **** + # from: @(#)Makefile.in 8.56 (Berkeley) 5/18/96 + + WARNS= 0 +! CPPFLAGS+=-I${.CURDIR} -I${.CURDIR}/../include + + LDADD+= -lcurses -ltermcap + DPADD+= ${LIBCURSES} ${LIBTERMCAP} +--- 3,9 ---- + # from: @(#)Makefile.in 8.56 (Berkeley) 5/18/96 + + WARNS= 0 +! CPPFLAGS+=-I${.CURDIR} -I${.CURDIR}/../include -DGTAGS + + LDADD+= -lcurses -ltermcap + DPADD+= ${LIBCURSES} ${LIBTERMCAP} +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/common/main.c ./common/main.c +*** /usr/src/usr.bin/nvi-1.66.org/common/main.c Tue May 5 15:57:26 1998 +--- ./common/main.c Sun Aug 16 03:27:19 1998 +*************** +*** 63,68 **** +--- 63,71 ---- + size_t len; + u_int flags; + int ch, fd, flagchk, lflag, startup, readonly, rval, silent; ++ #ifdef GTAGS ++ int gtags = 0; ++ #endif + char *tag_f, *wsizearg; + char path[256]; + +*************** +*** 113,123 **** +--- 116,135 ---- + /* Set the file snapshot flag. */ + F_SET(gp, G_SNAPSHOT); + ++ #ifdef GTAGS ++ #ifdef DEBUG ++ while ((ch = getopt(argc, argv, "c:D:eFGlRrsT:t:vw:")) != EOF) ++ #else ++ while ((ch = getopt(argc, argv, "c:eFGlRrst:vw:")) != EOF) ++ #endif ++ #else + #ifdef DEBUG + while ((ch = getopt(argc, argv, "c:D:eFlRrsT:t:vw:")) != EOF) + #else + while ((ch = getopt(argc, argv, "c:eFlRrst:vw:")) != EOF) + #endif ++ #endif ++ + switch (ch) { + case 'c': /* Run the command. */ + /* +*************** +*** 167,172 **** +--- 179,189 ---- + case 'F': /* No snapshot. */ + F_CLR(gp, G_SNAPSHOT); + break; ++ #ifdef GTAGS ++ case 'G': /* gtags mode. */ ++ gtags = 1; ++ break; ++ #endif + case 'l': /* Set lisp, showmatch options. */ + lflag = 1; + break; +*************** +*** 258,263 **** +--- 275,284 ---- + { int oargs[4], *oargp = oargs; + if (readonly) /* Command-line options. */ + *oargp++ = O_READONLY; ++ #ifdef GTAGS ++ if (gtags) ++ *oargp++ = O_GTAGSMODE; ++ #endif + if (lflag) { + *oargp++ = O_LISP; + *oargp++ = O_SHOWMATCH; +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/common/options.c ./common/options.c +*** /usr/src/usr.bin/nvi-1.66.org/common/options.c Tue May 5 15:57:26 1998 +--- ./common/options.c Sun Aug 16 03:29:51 1998 +*************** +*** 80,85 **** +--- 80,89 ---- + {"filec", NULL, OPT_STR, 0}, + /* O_FLASH HPUX */ + {"flash", NULL, OPT_1BOOL, 0}, ++ #ifdef GTAGS ++ /* O_GTAGSMODE FreeBSD, NetBSD */ ++ {"gtagsmode", NULL, OPT_0BOOL, 0}, ++ #endif + /* O_HARDTABS 4BSD */ + {"hardtabs", NULL, OPT_NUM, 0}, + /* O_ICLOWER 4.4BSD */ +*************** +*** 240,245 **** +--- 244,252 ---- + {"eb", O_ERRORBELLS}, /* 4BSD */ + {"ed", O_EDCOMPATIBLE}, /* 4BSD */ + {"ex", O_EXRC}, /* System V (undocumented) */ ++ #ifdef GTAGS ++ {"gt", O_GTAGSMODE}, /* FreeBSD, NetBSD */ ++ #endif + {"ht", O_HARDTABS}, /* 4BSD */ + {"ic", O_IGNORECASE}, /* 4BSD */ + {"li", O_LINES}, /* 4.4BSD */ +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/docs/USD.doc/vi.man/vi.1 ./docs/USD.doc/vi.man/vi.1 +*** /usr/src/usr.bin/nvi-1.66.org/docs/USD.doc/vi.man/vi.1 Tue May 5 15:57:31 1998 +--- ./docs/USD.doc/vi.man/vi.1 Sun Aug 16 03:34:12 1998 +*************** +*** 40,46 **** + .SH SYNOPSIS + .B ex + [\c +! .B -eFRrsv\c + ] [\c + .BI -c " cmd"\c + ] [\c +--- 40,46 ---- + .SH SYNOPSIS + .B ex + [\c +! .B -eFGRrsv\c + ] [\c + .BI -c " cmd"\c + ] [\c +*************** +*** 51,57 **** + .br + .B vi + [\c +! .B -eFlRrv\c + ] [\c + .BI -c " cmd"\c + ] [\c +--- 51,57 ---- + .br + .B vi + [\c +! .B -eFGlRrv\c + ] [\c + .BI -c " cmd"\c + ] [\c +*************** +*** 62,68 **** + .br + .B view + [\c +! .B -eFRrv\c + ] [\c + .BI -c " cmd"\c + ] [\c +--- 62,68 ---- + .br + .B view + [\c +! .B -eFGRrv\c + ] [\c + .BI -c " cmd"\c + ] [\c +*************** +*** 135,140 **** +--- 135,143 ---- + (The default is to make a copy in case someone else modifies + the file during your edit session.) + .TP ++ .B \-G ++ Start editing in gtags mode, as if the gtagsmode option was set. ++ .TP + .B \-l + Start editing with the lisp and showmatch options set. + .TP +*************** +*** 441,446 **** +--- 444,451 ---- + .TP + .B "<control-]>" + Push a tag reference onto the tag stack. ++ In gtagsmode, if at the first column of line, ++ locate function references otherwise function definitions. + .TP + .B "<control-^>" + Switch to the most recently edited file. +*************** +*** 952,957 **** +--- 957,965 ---- + .B "rew[ind][!]" + Rewind the argument list. + .TP ++ .B "rta[g][!] tagstring" ++ Edit the file refering the specified tag. (Only in gtagsmode) ++ .TP + .B "se[t] [option[=[value]] ...] [nooption ...] [option? ...] [all]" + Display or set editor options. + .TP +*************** +*** 1121,1126 **** +--- 1129,1137 ---- + .TP + .B "flash [on]" + Flash the screen instead of beeping the keyboard on error. ++ .TP ++ .B "gtagsmode, gt [off]" ++ Use GTAGS and GRTAGS instead of tags. + .TP + .B "hardtabs, ht [8]" + Set the spacing between hardware tab settings. +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/ex/ex.h ./ex/ex.h +*** /usr/src/usr.bin/nvi-1.66.org/ex/ex.h Tue May 5 15:57:37 1998 +--- ./ex/ex.h Sun Aug 16 03:35:58 1998 +*************** +*** 162,167 **** +--- 162,170 ---- + #define E_NEWLINE 0x00800000 /* Found ending <newline>. */ + #define E_USELASTCMD 0x01000000 /* Use the last command. */ + #define E_VISEARCH 0x02000000 /* It's really a vi search command. */ ++ #ifdef GTAGS ++ #define E_REFERENCE 0x04000000 /* locate function references */ ++ #endif + u_int32_t flags; /* Current flags. */ + }; + +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/ex/ex_cmd.c ./ex/ex_cmd.c +*** /usr/src/usr.bin/nvi-1.66.org/ex/ex_cmd.c Tue May 5 15:57:37 1998 +--- ./ex/ex_cmd.c Sun Aug 16 03:38:03 1998 +*************** +*** 302,307 **** +--- 302,314 ---- + "!", + "rew[ind][!]", + "re-edit all the files in the file argument list"}, ++ #ifdef GTAGS ++ /* C_RTAG */ ++ {"rtag", ex_rtag_push, E_NEWSCREEN, ++ "!w1o", ++ "rta[g][!] [string]", ++ "edit the file containing the tag"}, ++ #endif + /* + * !!! + * Adding new commands starting with 's' may break the substitute command code +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/ex/ex_tag.c ./ex/ex_tag.c +*** /usr/src/usr.bin/nvi-1.66.org/ex/ex_tag.c Tue May 5 15:57:41 1998 +--- ./ex/ex_tag.c Sun Aug 16 03:46:43 1998 +*************** +*** 46,51 **** +--- 46,55 ---- + static int compare __P((char *, char *, char *)); + static void ctag_file __P((SCR *, TAGF *, char *, char **, size_t *)); + static int ctag_search __P((SCR *, char *, char *)); ++ #ifdef GTAGS ++ static int getentry __P((char *, char **, char **, char **)); ++ static TAGQ *gtag_slist __P((SCR *, char *, int)); ++ #endif + static int ctag_sfile __P((SCR *, TAGF *, TAGQ *, char *)); + static TAGQ *ctag_slist __P((SCR *, char *)); + static char *linear_search __P((char *, char *, char *)); +*************** +*** 89,94 **** +--- 93,117 ---- + return (0); + } + ++ #ifdef GTAGS ++ /* ++ * ex_rtag_push -- ^] ++ * :rtag[!] [string] ++ * ++ * Enter a new TAGQ context based on a ctag string. ++ * ++ * PUBLIC: int ex_rtag_push __P((SCR *, EXCMD *)); ++ */ ++ int ++ ex_rtag_push(sp, cmdp) ++ SCR *sp; ++ EXCMD *cmdp; ++ { ++ F_SET(cmdp, E_REFERENCE); ++ return ex_tag_push(sp, cmdp); ++ } ++ #endif ++ + /* + * ex_tag_push -- ^] + * :tag[!] [string] +*************** +*** 138,143 **** +--- 161,172 ---- + } + + /* Get the tag information. */ ++ #ifdef GTAGS ++ if (O_ISSET(sp, O_GTAGSMODE)) { ++ if ((tqp = gtag_slist(sp, exp->tag_last, F_ISSET(cmdp, E_REFERENCE))) == NULL) ++ return (1); ++ } else ++ #endif + if ((tqp = ctag_slist(sp, exp->tag_last)) == NULL) + return (1); + +*************** +*** 963,969 **** +--- 992,1120 ---- + (void)nonblank(sp, sp->lno, &sp->cno); + return (0); + } ++ #ifdef GTAGS ++ /* ++ * getentry -- ++ * get tag information from current line. ++ * ++ * gtags temporary file format. ++ * <tag> <lineno> <file> <image> ++ * ++ * sample. ++ * +------------------------------------------------ ++ * |main 30 main.c main(argc, argv) ++ * |func 21 subr.c func(arg) ++ */ ++ static int ++ getentry(buf, tag, file, line) ++ char *buf, **tag, **file, **line; ++ { ++ char *p = buf; ++ ++ for (*tag = p; *p && !isspace(*p); p++) /* tag name */ ++ ; ++ if (*p == 0) ++ goto err; ++ *p++ = 0; ++ for (; *p && isspace(*p); p++) /* (skip blanks) */ ++ ; ++ if (*p == 0) ++ goto err; ++ *line = p; /* line no */ ++ for (*line = p; *p && !isspace(*p); p++) ++ ; ++ if (*p == 0) ++ goto err; ++ *p++ = 0; ++ for (; *p && isspace(*p); p++) /* (skip blanks) */ ++ ; ++ if (*p == 0) ++ goto err; ++ *file = p; /* file name */ ++ for (*file = p; *p && !isspace(*p); p++) ++ ; ++ if (*p == 0) ++ goto err; ++ *p = 0; ++ ++ /* value check */ ++ if (strlen(*tag) && strlen(*line) && strlen(*file) && atoi(*line) > 0) ++ return 1; /* OK */ ++ err: ++ return 0; /* ERROR */ ++ } ++ ++ /* ++ * gtag_slist -- ++ * Search the list of tags files for a tag, and return tag queue. ++ */ ++ static TAGQ * ++ gtag_slist(sp, tag, ref) ++ SCR *sp; ++ char *tag; ++ int ref; ++ { ++ EX_PRIVATE *exp; ++ TAGF *tfp; ++ TAGQ *tqp; ++ size_t len; ++ int echk; ++ TAG *tp; ++ char *name, *file, *line; ++ char command[BUFSIZ]; ++ char buf[BUFSIZ]; ++ FILE *fp; ++ ++ /* Allocate and initialize the tag queue structure. */ ++ len = strlen(tag); ++ CALLOC_GOTO(sp, tqp, TAGQ *, 1, sizeof(TAGQ) + len + 1); ++ CIRCLEQ_INIT(&tqp->tagq); ++ tqp->tag = tqp->buf; ++ memcpy(tqp->tag, tag, (tqp->tlen = len) + 1); ++ ++ /* ++ * Find the tag, only display missing file messages once, and ++ * then only if we didn't find the tag. ++ */ ++ snprintf(command, sizeof(command), "global -%s '%s' 2>/dev/null", ref ? "rx" : "x", tag); ++ if (fp = popen(command, "r")) { ++ while (fgets(buf, sizeof(buf), fp)) { ++ if (buf[strlen(buf)-1] == '\n') /* chop(buf) */ ++ buf[strlen(buf)-1] = 0; ++ else ++ while (fgetc(fp) != '\n') ++ ; ++ if (getentry(buf, &name, &file, &line) == 0) { ++ echk = 1; ++ F_SET(tfp, TAGF_ERR); ++ break; ++ } ++ CALLOC_GOTO(sp, tp, ++ TAG *, 1, sizeof(TAG) + strlen(file) + 1 + strlen(line) + 1); ++ tp->fname = tp->buf; ++ strcpy(tp->fname, file); ++ tp->fnlen = strlen(file); ++ tp->search = tp->fname + tp->fnlen + 1; ++ strcpy(tp->search, line); ++ CIRCLEQ_INSERT_TAIL(&tqp->tagq, tp, q); ++ } ++ pclose(fp); ++ } ++ ++ /* Check to see if we found anything. */ ++ if (tqp->tagq.cqh_first == (void *)&tqp->tagq) { ++ msgq_str(sp, M_ERR, tag, "162|%s: tag not found"); ++ free(tqp); ++ return (NULL); ++ } + ++ tqp->current = tqp->tagq.cqh_first; ++ return (tqp); ++ ++ alloc_err: ++ return (NULL); ++ } ++ #endif + /* + * ctag_slist -- + * Search the list of tags files for a tag, and return tag queue. +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/include/ex_def.h ./include/ex_def.h +*** /usr/src/usr.bin/nvi-1.66.org/include/ex_def.h Tue May 5 15:57:42 1998 +--- ./include/ex_def.h Sun Aug 16 03:49:40 1998 +*************** +*** 47,78 **** + #define C_RECOVER 46 + #define C_RESIZE 47 + #define C_REWIND 48 +! #define C_SUBSTITUTE 49 +! #define C_SCRIPT 50 +! #define C_SET 51 +! #define C_SHELL 52 +! #define C_SOURCE 53 +! #define C_STOP 54 +! #define C_SUSPEND 55 +! #define C_T 56 +! #define C_TAG 57 +! #define C_TAGNEXT 58 +! #define C_TAGPOP 59 +! #define C_TAGPREV 60 +! #define C_TAGTOP 61 +! #define C_TCLCMD 62 +! #define C_UNDO 63 +! #define C_UNABBREVIATE 64 +! #define C_UNMAP 65 +! #define C_V 66 +! #define C_VERSION 67 +! #define C_VISUAL_EX 68 +! #define C_VISUAL_VI 69 +! #define C_VIUSAGE 70 +! #define C_WRITE 71 +! #define C_WN 72 +! #define C_WQ 73 +! #define C_XIT 74 +! #define C_YANK 75 +! #define C_Z 76 +! #define C_SUBTILDE 77 +--- 47,79 ---- + #define C_RECOVER 46 + #define C_RESIZE 47 + #define C_REWIND 48 +! #define C_RTAG 49 +! #define C_SUBSTITUTE 50 +! #define C_SCRIPT 51 +! #define C_SET 52 +! #define C_SHELL 53 +! #define C_SOURCE 54 +! #define C_STOP 55 +! #define C_SUSPEND 56 +! #define C_T 57 +! #define C_TAG 58 +! #define C_TAGNEXT 59 +! #define C_TAGPOP 60 +! #define C_TAGPREV 61 +! #define C_TAGTOP 62 +! #define C_TCLCMD 63 +! #define C_UNDO 64 +! #define C_UNABBREVIATE 65 +! #define C_UNMAP 66 +! #define C_V 67 +! #define C_VERSION 68 +! #define C_VISUAL_EX 69 +! #define C_VISUAL_VI 70 +! #define C_VIUSAGE 71 +! #define C_WRITE 72 +! #define C_WN 73 +! #define C_WQ 74 +! #define C_XIT 75 +! #define C_YANK 76 +! #define C_Z 77 +! #define C_SUBTILDE 78 +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/include/ex_extern.h ./include/ex_extern.h +*** /usr/src/usr.bin/nvi-1.66.org/include/ex_extern.h Tue May 5 15:57:42 1998 +--- ./include/ex_extern.h Sun Aug 16 03:50:24 1998 +*************** +*** 92,97 **** +--- 92,100 ---- + char *, char **, size_t *, regex_t *, u_int)); + void re_error __P((SCR *, int, regex_t *)); + int ex_tag_first __P((SCR *, char *)); ++ #ifdef GTAGS ++ int ex_rtag_push __P((SCR *, EXCMD *)); ++ #endif + int ex_tag_push __P((SCR *, EXCMD *)); + int ex_tag_next __P((SCR *, EXCMD *)); + int ex_tag_prev __P((SCR *, EXCMD *)); +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/include/options_def.h ./include/options_def.h +*** /usr/src/usr.bin/nvi-1.66.org/include/options_def.h Tue May 5 15:57:42 1998 +--- ./include/options_def.h Sun Aug 16 03:54:45 1998 +*************** +*** 16,77 **** + #define O_EXTENDED 15 + #define O_FILEC 16 + #define O_FLASH 17 +! #define O_HARDTABS 18 +! #define O_ICLOWER 19 +! #define O_IGNORECASE 20 +! #define O_KEYTIME 21 +! #define O_LEFTRIGHT 22 +! #define O_LINES 23 +! #define O_LISP 24 +! #define O_LIST 25 +! #define O_LOCKFILES 26 +! #define O_MAGIC 27 +! #define O_MATCHTIME 28 +! #define O_MESG 29 +! #define O_MODELINE 30 +! #define O_MSGCAT 31 +! #define O_NOPRINT 32 +! #define O_NUMBER 33 +! #define O_OCTAL 34 +! #define O_OPEN 35 +! #define O_OPTIMIZE 36 +! #define O_PARAGRAPHS 37 +! #define O_PRINT 38 +! #define O_PROMPT 39 +! #define O_READONLY 40 +! #define O_RECDIR 41 +! #define O_REDRAW 42 +! #define O_REMAP 43 +! #define O_REPORT 44 +! #define O_RULER 45 +! #define O_SCROLL 46 +! #define O_SEARCHINCR 47 +! #define O_SECTIONS 48 +! #define O_SECURE 49 +! #define O_SHELL 50 +! #define O_SHELLMETA 51 +! #define O_SHIFTWIDTH 52 +! #define O_SHOWMATCH 53 +! #define O_SHOWMODE 54 +! #define O_SIDESCROLL 55 +! #define O_SLOWOPEN 56 +! #define O_SOURCEANY 57 +! #define O_TABSTOP 58 +! #define O_TAGLENGTH 59 +! #define O_TAGS 60 +! #define O_TERM 61 +! #define O_TERSE 62 +! #define O_TILDEOP 63 +! #define O_TIMEOUT 64 +! #define O_TTYWERASE 65 +! #define O_VERBOSE 66 +! #define O_W1200 67 +! #define O_W300 68 +! #define O_W9600 69 +! #define O_WARN 70 +! #define O_WINDOW 71 +! #define O_WRAPLEN 72 +! #define O_WRAPMARGIN 73 +! #define O_WRAPSCAN 74 +! #define O_WRITEANY 75 +! #define O_OPTIONCOUNT 76 +--- 16,78 ---- + #define O_EXTENDED 15 + #define O_FILEC 16 + #define O_FLASH 17 +! #define O_GTAGSMODE 18 +! #define O_HARDTABS 19 +! #define O_ICLOWER 20 +! #define O_IGNORECASE 21 +! #define O_KEYTIME 22 +! #define O_LEFTRIGHT 23 +! #define O_LINES 24 +! #define O_LISP 25 +! #define O_LIST 26 +! #define O_LOCKFILES 27 +! #define O_MAGIC 28 +! #define O_MATCHTIME 29 +! #define O_MESG 30 +! #define O_MODELINE 31 +! #define O_MSGCAT 32 +! #define O_NOPRINT 33 +! #define O_NUMBER 34 +! #define O_OCTAL 35 +! #define O_OPEN 36 +! #define O_OPTIMIZE 37 +! #define O_PARAGRAPHS 38 +! #define O_PRINT 39 +! #define O_PROMPT 40 +! #define O_READONLY 41 +! #define O_RECDIR 42 +! #define O_REDRAW 43 +! #define O_REMAP 44 +! #define O_REPORT 45 +! #define O_RULER 46 +! #define O_SCROLL 47 +! #define O_SEARCHINCR 48 +! #define O_SECTIONS 49 +! #define O_SECURE 50 +! #define O_SHELL 51 +! #define O_SHELLMETA 52 +! #define O_SHIFTWIDTH 53 +! #define O_SHOWMATCH 54 +! #define O_SHOWMODE 55 +! #define O_SIDESCROLL 56 +! #define O_SLOWOPEN 57 +! #define O_SOURCEANY 58 +! #define O_TABSTOP 59 +! #define O_TAGLENGTH 60 +! #define O_TAGS 61 +! #define O_TERM 62 +! #define O_TERSE 63 +! #define O_TILDEOP 64 +! #define O_TIMEOUT 65 +! #define O_TTYWERASE 66 +! #define O_VERBOSE 67 +! #define O_W1200 68 +! #define O_W300 69 +! #define O_W9600 70 +! #define O_WARN 71 +! #define O_WINDOW 72 +! #define O_WRAPLEN 73 +! #define O_WRAPMARGIN 74 +! #define O_WRAPSCAN 75 +! #define O_WRITEANY 76 +! #define O_OPTIONCOUNT 77 +diff -c -r -N /usr/src/usr.bin/nvi-1.66.org/vi/v_ex.c ./vi/v_ex.c +*** /usr/src/usr.bin/nvi-1.66.org/vi/v_ex.c Tue May 5 15:57:45 1998 +--- ./vi/v_ex.c Sun Aug 16 03:55:38 1998 +*************** +*** 221,226 **** +--- 221,231 ---- + ARGS *ap[2], a; + EXCMD cmd; + ++ #ifdef GTAGS ++ if (O_ISSET(sp, O_GTAGSMODE) && vp->m_start.cno == 0) ++ ex_cinit(&cmd, C_RTAG, 0, OOBLNO, 0, 0, ap); ++ else ++ #endif + ex_cinit(&cmd, C_TAG, 0, OOBLNO, 0, 0, ap); + ex_cadd(&cmd, &a, VIP(sp)->keyw, strlen(VIP(sp)->keyw)); + return (v_exec_ex(sp, vp, &cmd)); |