summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editors/nvi-m17n/distinfo17
-rw-r--r--editors/nvi-m17n/patches/patch-aa4
-rw-r--r--editors/nvi-m17n/patches/patch-ab4
-rw-r--r--editors/nvi-m17n/patches/patch-ac57
-rw-r--r--editors/nvi-m17n/patches/patch-ad25
-rw-r--r--editors/nvi-m17n/patches/patch-ae70
-rw-r--r--editors/nvi-m17n/patches/patch-af14
-rw-r--r--editors/nvi-m17n/patches/patch-ag18
-rw-r--r--editors/nvi-m17n/patches/patch-ah184
-rw-r--r--editors/nvi-m17n/patches/patch-ai67
-rw-r--r--editors/nvi-m17n/patches/patch-aj12
-rw-r--r--editors/nvi-m17n/patches/patch-ak135
-rw-r--r--editors/nvi-m17n/patches/patch-al16
-rw-r--r--editors/nvi-m17n/patches/patch-global556
14 files changed, 615 insertions, 564 deletions
diff --git a/editors/nvi-m17n/distinfo b/editors/nvi-m17n/distinfo
index 9858f9bcd8e..24d7623ce24 100644
--- a/editors/nvi-m17n/distinfo
+++ b/editors/nvi-m17n/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.9 2005/12/01 18:33:48 wiz Exp $
+$NetBSD: distinfo,v 1.10 2005/12/01 18:46:53 wiz Exp $
SHA1 (nvi-1.79.tar.gz) = 65b49768783372609278ecedd63caa8c1547aa2a
RMD160 (nvi-1.79.tar.gz) = 1c39d480e0d30a87fc061c3219354b50011a8621
@@ -6,6 +6,15 @@ Size (nvi-1.79.tar.gz) = 1295401 bytes
SHA1 (nvi-1.79.m17n-20040401.diff.gz) = 10fa772dad4368727a7ddc740d85cdfda3062414
RMD160 (nvi-1.79.m17n-20040401.diff.gz) = 1b1790448d38a4f92f3b2df5f6aa566f1d8efff0
Size (nvi-1.79.m17n-19991117.diff.gz) = 166609 bytes
-SHA1 (patch-aa) = 4f9f677af314c1bba142d9c249d9d0b294c63fb0
-SHA1 (patch-ab) = 5559561254fce98b99e9d3d529d86e868f1abd03
-SHA1 (patch-global) = 8a825c8c68872cdfb38c280616d8cbe444bda4b0
+SHA1 (patch-aa) = f9de0fd75adfd08ec55acd4bcbbce22d292d8535
+SHA1 (patch-ab) = 4526fa11abf619c5b2cfc23c97b2a4700462b601
+SHA1 (patch-ac) = 617ddb4ba49ce3d556d2148ff4154430ad2868a0
+SHA1 (patch-ad) = eff439277414d1e5318b2bdc54f273da5aabfc20
+SHA1 (patch-ae) = 094bb54c79a587cbbf10756821ac52dcb53f6dc4
+SHA1 (patch-af) = a19450db7df7900fb2b13c93309c002f12c563eb
+SHA1 (patch-ag) = 015f95d6667dc1cbaa85efe9e6cdcf1da4946b31
+SHA1 (patch-ah) = b262dbc7fd380456d0eebc9cc0fac68a9db30969
+SHA1 (patch-ai) = a6da171a13f01615ad4c831aad8c26ea9d2ed315
+SHA1 (patch-aj) = bc8698e2d12a88fe7024d38188723cb058ab240a
+SHA1 (patch-ak) = 2c5069a892a5204fcd3a607e6b383e8a503092f8
+SHA1 (patch-al) = 96a625d1eb906390beca232b129711b869ab3026
diff --git a/editors/nvi-m17n/patches/patch-aa b/editors/nvi-m17n/patches/patch-aa
index 83f309c7815..2afdc539a48 100644
--- a/editors/nvi-m17n/patches/patch-aa
+++ b/editors/nvi-m17n/patches/patch-aa
@@ -1,6 +1,6 @@
-$NetBSD: patch-aa,v 1.4 2005/12/01 18:33:48 wiz Exp $
+$NetBSD: patch-aa,v 1.5 2005/12/01 18:46:53 wiz Exp $
---- build/Makefile.in.orig 2005-12-01 19:32:57.000000000 +0100
+--- build/Makefile.in.orig 2005-12-01 19:37:32.000000000 +0100
+++ build/Makefile.in
@@ -88,9 +88,9 @@ install: all install_common
cd $(bindir) && $(chmod) $(emode) `echo vi | sed '$(transform)'`
diff --git a/editors/nvi-m17n/patches/patch-ab b/editors/nvi-m17n/patches/patch-ab
index 828b9cba262..5a8c23437e3 100644
--- a/editors/nvi-m17n/patches/patch-ab
+++ b/editors/nvi-m17n/patches/patch-ab
@@ -1,5 +1,5 @@
-$NetBSD: patch-ab,v 1.5 2005/12/01 18:33:48 wiz Exp $
---- build/configure.orig 2005-12-01 19:32:57.000000000 +0100
+$NetBSD: patch-ab,v 1.6 2005/12/01 18:46:53 wiz Exp $
+--- build/configure.orig 2005-12-01 19:37:32.000000000 +0100
+++ build/configure
@@ -1805,10 +1805,8 @@ if test "$vi_cv_canna" = "yes"; then
case "$host_os" in
diff --git a/editors/nvi-m17n/patches/patch-ac b/editors/nvi-m17n/patches/patch-ac
new file mode 100644
index 00000000000..62cae24f953
--- /dev/null
+++ b/editors/nvi-m17n/patches/patch-ac
@@ -0,0 +1,57 @@
+$NetBSD: patch-ac,v 1.3 2005/12/01 18:46:53 wiz Exp $
+
+--- common/main.c.orig 1996-10-12 00:28:28.000000000 +0200
++++ common/main.c
+@@ -64,6 +64,9 @@ editor(gp, argc, argv)
+ size_t len;
+ u_int flags;
+ int ch, flagchk, lflag, secure, startup, readonly, rval, silent;
++#ifdef GTAGS
++ int gtags = 0;
++#endif
+ char *tag_f, *wsizearg, path[256];
+
+ /* Initialize the busy routine, if not defined by the screen. */
+@@ -113,11 +116,19 @@ editor(gp, argc, argv)
+ /* Set the file snapshot flag. */
+ F_SET(gp, G_SNAPSHOT);
+
++#ifdef GTAGS
++#ifdef DEBUG
++ while ((ch = getopt(argc, argv, "c:D:eFGlRrSsT:t:vw:")) != EOF)
++#else
++ while ((ch = getopt(argc, argv, "c:eFGlRrSst:vw:")) != EOF)
++#endif
++#else
+ #ifdef DEBUG
+ while ((ch = getopt(argc, argv, "c:D:eFlRrSsT:t:vw:")) != EOF)
+ #else
+ while ((ch = getopt(argc, argv, "c:eFlRrSst:vw:")) != EOF)
+ #endif
++#endif
+ switch (ch) {
+ case 'c': /* Run the command. */
+ /*
+@@ -154,6 +165,11 @@ editor(gp, argc, argv)
+ 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;
+@@ -252,6 +268,10 @@ editor(gp, argc, argv)
+ }
+ if (readonly)
+ *oargp++ = O_READONLY;
++#ifdef GTAGS
++ if (gtags)
++ *oargp++ = O_GTAGSMODE;
++#endif
+ if (secure)
+ *oargp++ = O_SECURE;
+ *oargp = -1; /* Options initialization. */
diff --git a/editors/nvi-m17n/patches/patch-ad b/editors/nvi-m17n/patches/patch-ad
new file mode 100644
index 00000000000..0a5656417b7
--- /dev/null
+++ b/editors/nvi-m17n/patches/patch-ad
@@ -0,0 +1,25 @@
+$NetBSD: patch-ad,v 1.3 2005/12/01 18:46:53 wiz Exp $
+
+--- common/options.c.orig 2005-12-01 19:37:32.000000000 +0100
++++ common/options.c
+@@ -128,6 +128,10 @@ OPTLIST const optlist[] = {
+ #endif
+ /* O_FLASH HPUX */
+ {"flash", NULL, OPT_1BOOL, 0},
++#ifdef GTAGS
++/* O_GTAGSMODE FreeBSD2.2 */
++ {"gtagsmode", NULL, OPT_0BOOL, 0},
++#endif
+ /* O_HARDTABS 4BSD */
+ {"hardtabs", NULL, OPT_NUM, 0},
+ /* O_ICLOWER 4.4BSD */
+@@ -313,6 +317,9 @@ static OABBREV const abbrev[] = {
+ #ifdef MULTIBYTE
+ {"fe", O_FILEENCODING}, /* MULTIBYTE */
+ #endif
++#ifdef GTAGS
++ {"gt", O_GTAGSMODE}, /* GTAGS */
++#endif
+ {"ht", O_HARDTABS}, /* 4BSD */
+ {"ic", O_IGNORECASE}, /* 4BSD */
+ #ifdef MULTIBYTE
diff --git a/editors/nvi-m17n/patches/patch-ae b/editors/nvi-m17n/patches/patch-ae
new file mode 100644
index 00000000000..a726bf1af26
--- /dev/null
+++ b/editors/nvi-m17n/patches/patch-ae
@@ -0,0 +1,70 @@
+$NetBSD: patch-ae,v 1.3 2005/12/01 18:46:53 wiz Exp $
+
+--- docs/USD.doc/vi.man/vi.1.orig 1996-10-11 03:34:05.000000000 +0200
++++ docs/USD.doc/vi.man/vi.1
+@@ -17,7 +17,7 @@ ex, vi, view \- text editors
+ .SH SYNOPSIS
+ .B ex
+ [\c
+-.B -eFRrSsv\c
++.B -eFGRrSsv\c
+ ] [\c
+ .BI -c " cmd"\c
+ ] [\c
+@@ -28,7 +28,7 @@ ex, vi, view \- text editors
+ .br
+ .B vi
+ [\c
+-.B -eFlRrSv\c
++.B -eFGlRrSv\c
+ ] [\c
+ .BI -c " cmd"\c
+ ] [\c
+@@ -39,7 +39,7 @@ ex, vi, view \- text editors
+ .br
+ .B view
+ [\c
+-.B -eFRrSv\c
++.B -eFGRrSv\c
+ ] [\c
+ .BI -c " cmd"\c
+ ] [\c
+@@ -121,6 +121,9 @@ the file during your edit session.)
+ .B \-l
+ Start editing with the lisp and showmatch options set.
+ .TP
++.B \-G
++Start editing in gtags mode, as if the gtagsmode option was set.
++.TP
+ .B \-R
+ Start editing in read-only mode, as if the command name was
+ .IR view ,
+@@ -429,6 +432,8 @@ commands or cancel partial commands.
+ .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.
+@@ -940,6 +945,9 @@ Grow or shrink the current screen.
+ .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
+@@ -1110,6 +1118,9 @@ command line.
+ .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.
+ .TP
diff --git a/editors/nvi-m17n/patches/patch-af b/editors/nvi-m17n/patches/patch-af
new file mode 100644
index 00000000000..355298fedce
--- /dev/null
+++ b/editors/nvi-m17n/patches/patch-af
@@ -0,0 +1,14 @@
+$NetBSD: patch-af,v 1.1 2005/12/01 18:46:53 wiz Exp $
+
+--- ex/ex.h.orig 2005-12-01 19:37:32.000000000 +0100
++++ ex/ex.h
+@@ -164,6 +164,9 @@ struct _excmd {
+ #define E_SEARCH_WMSG 0x01000000 /* Display search-wrapped message. */
+ #define E_USELASTCMD 0x02000000 /* Use the last command. */
+ #define E_VISEARCH 0x04000000 /* It's really a vi search command. */
++#ifdef GTAGS
++#define E_REFERENCE 0x08000000 /* locate function references */
++#endif
+ u_int32_t flags; /* Current flags. */
+ };
+
diff --git a/editors/nvi-m17n/patches/patch-ag b/editors/nvi-m17n/patches/patch-ag
new file mode 100644
index 00000000000..e07fefc5db1
--- /dev/null
+++ b/editors/nvi-m17n/patches/patch-ag
@@ -0,0 +1,18 @@
+$NetBSD: patch-ag,v 1.1 2005/12/01 18:46:53 wiz Exp $
+
+--- ex/ex_cmd.c.orig 1996-10-23 15:31:01.000000000 +0200
++++ ex/ex_cmd.c
+@@ -302,6 +302,13 @@ EXCMDLIST const cmds[] = {
+ "!",
+ "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 --git a/editors/nvi-m17n/patches/patch-ah b/editors/nvi-m17n/patches/patch-ah
new file mode 100644
index 00000000000..1f6710fbbb6
--- /dev/null
+++ b/editors/nvi-m17n/patches/patch-ah
@@ -0,0 +1,184 @@
+$NetBSD: patch-ah,v 1.1 2005/12/01 18:46:53 wiz Exp $
+
+--- ex/ex_tag.c.orig 1996-09-15 22:02:43.000000000 +0200
++++ ex/ex_tag.c
+@@ -46,6 +46,10 @@ static char *binary_search __P((char *,
+ 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 *, size_t, 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,6 +93,25 @@ ex_tag_first(sp, tagarg)
+ 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,6 +161,12 @@ ex_tag_push(sp, cmdp)
+ }
+
+ /* 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);
+
+@@ -969,6 +998,129 @@ notfound: tag_msg(sp, TAG_SEARCH, tag)
+ 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 --git a/editors/nvi-m17n/patches/patch-ai b/editors/nvi-m17n/patches/patch-ai
new file mode 100644
index 00000000000..41510b410c5
--- /dev/null
+++ b/editors/nvi-m17n/patches/patch-ai
@@ -0,0 +1,67 @@
+$NetBSD: patch-ai,v 1.1 2005/12/01 18:46:53 wiz Exp $
+
+--- include/ex_def.h.orig 1996-10-23 15:53:09.000000000 +0200
++++ include/ex_def.h
+@@ -47,32 +47,33 @@
+ #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
++#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 --git a/editors/nvi-m17n/patches/patch-aj b/editors/nvi-m17n/patches/patch-aj
new file mode 100644
index 00000000000..c75e2d9a140
--- /dev/null
+++ b/editors/nvi-m17n/patches/patch-aj
@@ -0,0 +1,12 @@
+$NetBSD: patch-aj,v 1.1 2005/12/01 18:46:53 wiz Exp $
+
+--- include/ex_extern.h.orig 1996-10-23 15:53:10.000000000 +0200
++++ include/ex_extern.h
+@@ -89,6 +89,7 @@ int re_compile __P((SCR *,
+ char *, size_t, char **, size_t *, regex_t *, u_int));
+ void re_error __P((SCR *, int, regex_t *));
+ int ex_tag_first __P((SCR *, char *));
++int ex_rtag_push __P((SCR *, EXCMD *));
+ int ex_tag_push __P((SCR *, EXCMD *));
+ int ex_tag_next __P((SCR *, EXCMD *));
+ int ex_tag_prev __P((SCR *, EXCMD *));
diff --git a/editors/nvi-m17n/patches/patch-ak b/editors/nvi-m17n/patches/patch-ak
new file mode 100644
index 00000000000..8f3e91c94ff
--- /dev/null
+++ b/editors/nvi-m17n/patches/patch-ak
@@ -0,0 +1,135 @@
+$NetBSD: patch-ak,v 1.1 2005/12/01 18:46:53 wiz Exp $
+
+--- include/options_def.h.orig 2005-12-01 19:37:32.000000000 +0100
++++ include/options_def.h
+@@ -24,66 +24,67 @@
+ #define O_FILEC 23
+ #define O_FILEENCODING 24
+ #define O_FLASH 25
+-#define O_HARDTABS 26
+-#define O_ICLOWER 27
+-#define O_IGNORECASE 28
+-#define O_INPUTENCODING 29
+-#define O_KEYTIME 30
+-#define O_LEFTRIGHT 31
+-#define O_LINES 32
+-#define O_LISP 33
+-#define O_LIST 34
+-#define O_LOCKFILES 35
+-#define O_MAGIC 36
+-#define O_MATCHTIME 37
+-#define O_MESG 38
+-#define O_MODELINE 39
+-#define O_MSGCAT 40
+-#define O_NOPRINT 41
+-#define O_NUMBER 42
+-#define O_OCTAL 43
+-#define O_OPEN 44
+-#define O_OPTIMIZE 45
+-#define O_PARAGRAPHS 46
+-#define O_PATH 47
+-#define O_PRINT 48
+-#define O_PROMPT 49
+-#define O_READONLY 50
+-#define O_RECDIR 51
+-#define O_REDRAW 52
+-#define O_REMAP 53
+-#define O_REPORT 54
+-#define O_RULER 55
+-#define O_SCROLL 56
+-#define O_SEARCHINCR 57
+-#define O_SECTIONS 58
+-#define O_SECURE 59
+-#define O_SHELL 60
+-#define O_SHELLMETA 61
+-#define O_SHIFTWIDTH 62
+-#define O_SHOWMATCH 63
+-#define O_SHOWMODE 64
+-#define O_SIDESCROLL 65
+-#define O_SKIPDISPLAY 66
+-#define O_SLOWOPEN 67
+-#define O_SOURCEANY 68
+-#define O_TABSTOP 69
+-#define O_TAGLENGTH 70
+-#define O_TAGS 71
+-#define O_TERM 72
+-#define O_TERSE 73
+-#define O_TILDEOP 74
+-#define O_TIMEOUT 75
+-#define O_TTYWERASE 76
+-#define O_VERBOSE 77
+-#define O_W1200 78
+-#define O_W300 79
+-#define O_W9600 80
+-#define O_WARN 81
+-#define O_WINDOW 82
+-#define O_WINDOWNAME 83
+-#define O_WRAPLEN 84
+-#define O_WRAPMARGIN 85
+-#define O_WRAPSCAN 86
+-#define O_WRITEANY 87
+-#define O_OPTIONCOUNT 88
++#define O_GTAGSMODE 26
++#define O_HARDTABS 27
++#define O_ICLOWER 28
++#define O_IGNORECASE 29
++#define O_INPUTENCODING 30
++#define O_KEYTIME 31
++#define O_LEFTRIGHT 32
++#define O_LINES 33
++#define O_LISP 34
++#define O_LIST 35
++#define O_LOCKFILES 36
++#define O_MAGIC 37
++#define O_MATCHTIME 38
++#define O_MESG 39
++#define O_MODELINE 40
++#define O_MSGCAT 41
++#define O_NOPRINT 42
++#define O_NUMBER 43
++#define O_OCTAL 44
++#define O_OPEN 45
++#define O_OPTIMIZE 46
++#define O_PARAGRAPHS 47
++#define O_PATH 48
++#define O_PRINT 49
++#define O_PROMPT 50
++#define O_READONLY 51
++#define O_RECDIR 52
++#define O_REDRAW 53
++#define O_REMAP 54
++#define O_REPORT 55
++#define O_RULER 56
++#define O_SCROLL 57
++#define O_SEARCHINCR 58
++#define O_SECTIONS 59
++#define O_SECURE 60
++#define O_SHELL 61
++#define O_SHELLMETA 62
++#define O_SHIFTWIDTH 63
++#define O_SHOWMATCH 64
++#define O_SHOWMODE 65
++#define O_SIDESCROLL 66
++#define O_SKIPDISPLAY 67
++#define O_SLOWOPEN 68
++#define O_SOURCEANY 69
++#define O_TABSTOP 70
++#define O_TAGLENGTH 71
++#define O_TAGS 72
++#define O_TERM 73
++#define O_TERSE 74
++#define O_TILDEOP 75
++#define O_TIMEOUT 76
++#define O_TTYWERASE 77
++#define O_VERBOSE 78
++#define O_W1200 79
++#define O_W300 80
++#define O_W9600 81
++#define O_WARN 82
++#define O_WINDOW 83
++#define O_WINDOWNAME 84
++#define O_WRAPLEN 85
++#define O_WRAPMARGIN 86
++#define O_WRAPSCAN 87
++#define O_WRITEANY 88
++#define O_OPTIONCOUNT 89
diff --git a/editors/nvi-m17n/patches/patch-al b/editors/nvi-m17n/patches/patch-al
new file mode 100644
index 00000000000..ebdcfea4375
--- /dev/null
+++ b/editors/nvi-m17n/patches/patch-al
@@ -0,0 +1,16 @@
+$NetBSD: patch-al,v 1.1 2005/12/01 18:46:53 wiz Exp $
+
+--- vi/v_ex.c.orig 2005-12-01 19:37:32.000000000 +0100
++++ vi/v_ex.c
+@@ -226,6 +226,11 @@ v_tagpush(sp, vp)
+ 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));
diff --git a/editors/nvi-m17n/patches/patch-global b/editors/nvi-m17n/patches/patch-global
deleted file mode 100644
index ec31371d4e1..00000000000
--- a/editors/nvi-m17n/patches/patch-global
+++ /dev/null
@@ -1,556 +0,0 @@
-$NetBSD: patch-global,v 1.2 2005/12/01 18:29:58 wiz Exp $
-
-diff -NrU2 ../build/Makefile.in ../../nvi-1.79/build/Makefile.in
---- build/Makefile.in Mon May 8 16:05:17 2000
-+++ build/Makefile.in Mon May 8 16:06:15 2000
-@@ -4,5 +4,5 @@
- CC= @CC@
- OPTFLAG=@OPTFLAG@
--CFLAGS= -c $(OPTFLAG) @CFLAGS@ -I. -I$(srcdir)/include @CPPFLAGS@
-+CFLAGS= -c $(OPTFLAG) @CFLAGS@ -I. -I$(srcdir)/include @CPPFLAGS@ -DGTAGS
- LDFLAGS=@LDFLAGS@
- PERL= @vi_cv_path_perl@
-diff -NrU2 ../common/main.c ../../nvi-1.79/common/main.c
---- common/main.c Sat Oct 12 07:28:28 1996
-+++ ../nvi-1.79/common/main.c Mon May 8 16:06:15 2000
-@@ -65,4 +65,7 @@
- u_int flags;
- int ch, flagchk, lflag, secure, startup, readonly, rval, silent;
-+#ifdef GTAGS
-+ int gtags = 0;
-+#endif
- char *tag_f, *wsizearg, path[256];
-
-@@ -114,4 +117,11 @@
- F_SET(gp, G_SNAPSHOT);
-
-+#ifdef GTAGS
-+#ifdef DEBUG
-+ while ((ch = getopt(argc, argv, "c:D:eFGlRrSsT:t:vw:")) != EOF)
-+#else
-+ while ((ch = getopt(argc, argv, "c:eFGlRrSst:vw:")) != EOF)
-+#endif
-+#else
- #ifdef DEBUG
- while ((ch = getopt(argc, argv, "c:D:eFlRrSsT:t:vw:")) != EOF)
-@@ -119,4 +129,5 @@
- while ((ch = getopt(argc, argv, "c:eFlRrSst:vw:")) != EOF)
- #endif
-+#endif
- switch (ch) {
- case 'c': /* Run the command. */
-@@ -155,4 +166,9 @@
- F_CLR(gp, G_SNAPSHOT);
- break;
-+#ifdef GTAGS
-+ case 'G': /* gtags mode. */
-+ gtags = 1;
-+ break;
-+#endif
- case 'l': /* Set lisp, showmatch options. */
- lflag = 1;
-@@ -253,4 +269,8 @@
- if (readonly)
- *oargp++ = O_READONLY;
-+#ifdef GTAGS
-+ if (gtags)
-+ *oargp++ = O_GTAGSMODE;
-+#endif
- if (secure)
- *oargp++ = O_SECURE;
-diff -NrU2 ../common/options.c ../../nvi-1.79/common/options.c
---- common/options.c Mon May 8 16:05:18 2000
-+++ ../nvi-1.79/common/options.c Mon May 8 16:20:26 2000
-@@ -129,4 +129,8 @@
- /* O_FLASH HPUX */
- {"flash", NULL, OPT_1BOOL, 0},
-+#ifdef GTAGS
-+/* O_GTAGSMODE FreeBSD2.2 */
-+ {"gtagsmode", NULL, OPT_0BOOL, 0},
-+#endif
- /* O_HARDTABS 4BSD */
- {"hardtabs", NULL, OPT_NUM, 0},
-@@ -313,4 +317,7 @@
- #ifdef MULTIBYTE
- {"fe", O_FILEENCODING}, /* MULTIBYTE */
-+#endif
-+#ifdef GTAGS
-+ {"gt", O_GTAGSMODE}, /* GTAGS */
- #endif
- {"ht", O_HARDTABS}, /* 4BSD */
-diff -NrU2 ../docs/USD.doc/vi.man/vi.1 ../../nvi-1.79/docs/USD.doc/vi.man/vi.1
---- docs/USD.doc/vi.man/vi.1 Fri Oct 11 10:34:05 1996
-+++ ../nvi-1.79/docs/USD.doc/vi.man/vi.1 Mon May 8 16:06:15 2000
-@@ -18,5 +18,5 @@
- .B ex
- [\c
--.B -eFRrSsv\c
-+.B -eFGRrSsv\c
- ] [\c
- .BI -c " cmd"\c
-@@ -29,5 +29,5 @@
- .B vi
- [\c
--.B -eFlRrSv\c
-+.B -eFGlRrSv\c
- ] [\c
- .BI -c " cmd"\c
-@@ -40,5 +40,5 @@
- .B view
- [\c
--.B -eFRrSv\c
-+.B -eFGRrSv\c
- ] [\c
- .BI -c " cmd"\c
-@@ -122,4 +122,7 @@
- Start editing with the lisp and showmatch options set.
- .TP
-+.B \-G
-+Start editing in gtags mode, as if the gtagsmode option was set.
-+.TP
- .B \-R
- Start editing in read-only mode, as if the command name was
-@@ -430,4 +433,6 @@
- .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-^>"
-@@ -941,4 +946,7 @@
- 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.
-@@ -1110,4 +1118,7 @@
- .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]"
-diff -NrU2 ../ex/ex.h ../../nvi-1.79/ex/ex.h
---- ex/ex.h Mon May 8 16:05:18 2000
-+++ ../nvi-1.79/ex/ex.h Mon May 8 16:06:15 2000
-@@ -165,4 +165,7 @@
- #define E_USELASTCMD 0x02000000 /* Use the last command. */
- #define E_VISEARCH 0x04000000 /* It's really a vi search command. */
-+#ifdef GTAGS
-+#define E_REFERENCE 0x08000000 /* locate function references */
-+#endif
- u_int32_t flags; /* Current flags. */
- };
-diff -NrU2 ../ex/ex_cmd.c ../../nvi-1.79/ex/ex_cmd.c
---- ex/ex_cmd.c Wed Oct 23 22:31:01 1996
-+++ ../nvi-1.79/ex/ex_cmd.c Mon May 8 16:06:15 2000
-@@ -303,4 +303,11 @@
- "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
- /*
- * !!!
-diff -NrU2 ../ex/ex_tag.c ../../nvi-1.79/ex/ex_tag.c
---- ex/ex_tag.c Mon Sep 16 05:02:43 1996
-+++ ../nvi-1.79/ex/ex_tag.c Mon May 8 16:06:15 2000
-@@ -47,4 +47,8 @@
- static void ctag_file __P((SCR *, TAGF *, char *, char **, size_t *));
- static int ctag_search __P((SCR *, char *, size_t, 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 *));
-@@ -90,4 +94,23 @@
- }
-
-+#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 -- ^]
-@@ -139,4 +162,10 @@
-
- /* 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);
-@@ -970,4 +999,127 @@
- }
-
-+#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 --
-diff -NrU2 ../include/ex_def.h ../../nvi-1.79/include/ex_def.h
---- include/ex_def.h Wed Oct 23 22:53:09 1996
-+++ ../nvi-1.79/include/ex_def.h Mon May 8 16:06:15 2000
-@@ -48,31 +48,32 @@
- #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
-+#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 -NrU2 ../include/ex_extern.h ../../nvi-1.79/include/ex_extern.h
---- include/ex_extern.h Wed Oct 23 22:53:10 1996
-+++ ../nvi-1.79/include/ex_extern.h Mon May 8 16:06:15 2000
-@@ -90,4 +90,5 @@
- void re_error __P((SCR *, int, regex_t *));
- int ex_tag_first __P((SCR *, char *));
-+int ex_rtag_push __P((SCR *, EXCMD *));
- int ex_tag_push __P((SCR *, EXCMD *));
- int ex_tag_next __P((SCR *, EXCMD *));
-diff -NrU2 ../include/options_def.h ../../nvi-1.79/include/options_def.h
---- include/options_def.h Mon May 8 16:05:18 2000
-+++ ../nvi-1.79/include/options_def.h Mon May 8 16:24:38 2000
-@@ -25,65 +25,66 @@
- #define O_FILEENCODING 24
- #define O_FLASH 25
--#define O_HARDTABS 26
--#define O_ICLOWER 27
--#define O_IGNORECASE 28
--#define O_INPUTENCODING 29
--#define O_KEYTIME 30
--#define O_LEFTRIGHT 31
--#define O_LINES 32
--#define O_LISP 33
--#define O_LIST 34
--#define O_LOCKFILES 35
--#define O_MAGIC 36
--#define O_MATCHTIME 37
--#define O_MESG 38
--#define O_MODELINE 39
--#define O_MSGCAT 40
--#define O_NOPRINT 41
--#define O_NUMBER 42
--#define O_OCTAL 43
--#define O_OPEN 44
--#define O_OPTIMIZE 45
--#define O_PARAGRAPHS 46
--#define O_PATH 47
--#define O_PRINT 48
--#define O_PROMPT 49
--#define O_READONLY 50
--#define O_RECDIR 51
--#define O_REDRAW 52
--#define O_REMAP 53
--#define O_REPORT 54
--#define O_RULER 55
--#define O_SCROLL 56
--#define O_SEARCHINCR 57
--#define O_SECTIONS 58
--#define O_SECURE 59
--#define O_SHELL 60
--#define O_SHELLMETA 61
--#define O_SHIFTWIDTH 62
--#define O_SHOWMATCH 63
--#define O_SHOWMODE 64
--#define O_SIDESCROLL 65
--#define O_SKIPDISPLAY 66
--#define O_SLOWOPEN 67
--#define O_SOURCEANY 68
--#define O_TABSTOP 69
--#define O_TAGLENGTH 70
--#define O_TAGS 71
--#define O_TERM 72
--#define O_TERSE 73
--#define O_TILDEOP 74
--#define O_TIMEOUT 75
--#define O_TTYWERASE 76
--#define O_VERBOSE 77
--#define O_W1200 78
--#define O_W300 79
--#define O_W9600 80
--#define O_WARN 81
--#define O_WINDOW 82
--#define O_WINDOWNAME 83
--#define O_WRAPLEN 84
--#define O_WRAPMARGIN 85
--#define O_WRAPSCAN 86
--#define O_WRITEANY 87
--#define O_OPTIONCOUNT 88
-+#define O_GTAGSMODE 26
-+#define O_HARDTABS 27
-+#define O_ICLOWER 28
-+#define O_IGNORECASE 29
-+#define O_INPUTENCODING 30
-+#define O_KEYTIME 31
-+#define O_LEFTRIGHT 32
-+#define O_LINES 33
-+#define O_LISP 34
-+#define O_LIST 35
-+#define O_LOCKFILES 36
-+#define O_MAGIC 37
-+#define O_MATCHTIME 38
-+#define O_MESG 39
-+#define O_MODELINE 40
-+#define O_MSGCAT 41
-+#define O_NOPRINT 42
-+#define O_NUMBER 43
-+#define O_OCTAL 44
-+#define O_OPEN 45
-+#define O_OPTIMIZE 46
-+#define O_PARAGRAPHS 47
-+#define O_PATH 48
-+#define O_PRINT 49
-+#define O_PROMPT 50
-+#define O_READONLY 51
-+#define O_RECDIR 52
-+#define O_REDRAW 53
-+#define O_REMAP 54
-+#define O_REPORT 55
-+#define O_RULER 56
-+#define O_SCROLL 57
-+#define O_SEARCHINCR 58
-+#define O_SECTIONS 59
-+#define O_SECURE 60
-+#define O_SHELL 61
-+#define O_SHELLMETA 62
-+#define O_SHIFTWIDTH 63
-+#define O_SHOWMATCH 64
-+#define O_SHOWMODE 65
-+#define O_SIDESCROLL 66
-+#define O_SKIPDISPLAY 67
-+#define O_SLOWOPEN 68
-+#define O_SOURCEANY 69
-+#define O_TABSTOP 70
-+#define O_TAGLENGTH 71
-+#define O_TAGS 72
-+#define O_TERM 73
-+#define O_TERSE 74
-+#define O_TILDEOP 75
-+#define O_TIMEOUT 76
-+#define O_TTYWERASE 77
-+#define O_VERBOSE 78
-+#define O_W1200 79
-+#define O_W300 80
-+#define O_W9600 81
-+#define O_WARN 82
-+#define O_WINDOW 83
-+#define O_WINDOWNAME 84
-+#define O_WRAPLEN 85
-+#define O_WRAPMARGIN 86
-+#define O_WRAPSCAN 87
-+#define O_WRITEANY 88
-+#define O_OPTIONCOUNT 89
-diff -NrU2 ../vi/v_ex.c ../../nvi-1.79/vi/v_ex.c
---- vi/v_ex.c Mon May 8 16:05:18 2000
-+++ ../nvi-1.79/vi/v_ex.c Mon May 8 16:06:15 2000
-@@ -227,4 +227,9 @@
- 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));