Hello,
Here's a diff for editors/elvis:
- add --docdir so that :help works (without that, :help
was looking for its files in /usr/share/elvis/doc, which
is the default value of docdir)
- add --verbose (knowing more about what configure is
doing is probably not a bad idea)
- fix a bug in the ")" command that could cause a segfault
- fix a bug when lauching elvis in a directory containing
a "tags" directory
- make file/syntax detection work for scripts using "env"
- add "return" to the list of shell script keywords
- fix a few things in the man pages (\-, typo, whitespace)
since we were already patching them.
Most of these fixes come from Debian.
Tested OK on loongson.
Index: Makefile
===================================================================
RCS file: /cvs/ports/editors/elvis/Makefile,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 Makefile
--- Makefile 17 Mar 2012 12:40:01 -0000 1.20
+++ Makefile 5 May 2012 12:39:25 -0000
@@ -4,7 +4,7 @@ COMMENT= clone of the ex/vi text editor
DISTNAME= elvis-2.2_0
PKGNAME= ${DISTNAME:S/_/./}
-REVISION= 1
+REVISION= 2
CATEGORIES= editors
HOMEPAGE= http://elvis.the-little-red-haired-girl.org/
@@ -24,7 +24,9 @@ FLAVOR?=
CONFIGURE_STYLE= simple
CONFIGURE_ARGS= --bindir=${PREFIX}/bin \
- --datadir=${PREFIX}/share/elvis
+ --datadir=${PREFIX}/share/elvis \
+ --docdir=${PREFIX}/share/doc/elvis \
+ --verbose
.if ${FLAVOR:Mno_x11}
CONFIGURE_ARGS+= --with-x=no
@@ -39,7 +41,7 @@ WANTLIB+= X11 Xft Xpm pthread-stubs xcb
NO_REGRESS= Yes
do-install:
- @rm -f ${WRKSRC}/doc/ctags.man.orig
+ @rm -f ${WRKSRC}/{doc,data}/*.orig
${INSTALL_DATA_DIR} ${PREFIX}/share/elvis
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/elvis
.for prog in elvfmt elvis ref
Index: patches/patch-data_elvis_arf
===================================================================
RCS file: patches/patch-data_elvis_arf
diff -N patches/patch-data_elvis_arf
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-data_elvis_arf 5 May 2012 12:39:25 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Make file/syntax detection work for scripts that use env
+in their shebang line. From Debian.
+
+--- data/elvis.arf.orig Tue Oct 21 04:32:25 2003
++++ data/elvis.arf Sat May 5 13:40:29 2012
+@@ -10,6 +10,8 @@ then {
+ if os=="unix" && buflines >= 1
+ then {
+ try 1s/\V^#! *[^ ]*\/\([^ ]\+\).*/set! bufdisplay="syntax \1"/x
++ if bufdisplay=="syntax env"
++ then try 1s/\V^#! *[^ ]*\/[^ ]\+ \([^ ]\+\).*/set! bufdisplay="syntax \1"/x
+ if bufdisplay<<11=="syntax perl"
+ then set! bufdisplay="syntax perl"
+ if bufdisplay<<12=="syntax tclsh"
Index: patches/patch-data_elvis_syn
===================================================================
RCS file: patches/patch-data_elvis_syn
diff -N patches/patch-data_elvis_syn
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-data_elvis_syn 5 May 2012 12:39:25 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Add "return" to the list of keywords for shell scripts.
+
+--- data/elvis.syn.orig Tue Oct 21 04:32:25 2003
++++ data/elvis.syn Sat May 5 13:33:21 2012
+@@ -209,8 +209,8 @@ keyword $* $@ $# $? $- $$ $! & | ; [ ] < > ( )
+ keyword alias autoload bg break case cd continue do done echo elif else esac
+ keyword eval exec exit export false fc fg fi for getopts hash history
+ keyword if in integer jobs kill let newgrp nohup print pwd r read readonly
+-keyword select set shift source stop suspend test then time times trap type
+-keyword typeset ulimit umask unalias unset until wait whence while
++keyword return select set shift source stop suspend test then time times trap
++keyword type typeset ulimit umask unalias unset until wait whence while
+ function (
+ comment #
+ startword /?-*!.
Index: patches/patch-doc_ctags_man
===================================================================
RCS file: /cvs/ports/editors/elvis/patches/patch-doc_ctags_man,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 patch-doc_ctags_man
--- patches/patch-doc_ctags_man 11 Dec 2008 13:58:14 -0000 1.1
+++ patches/patch-doc_ctags_man 5 May 2012 12:39:25 -0000
@@ -1,6 +1,6 @@
$OpenBSD: patch-doc_ctags_man,v 1.1 2008/12/11 13:58:14 jasper Exp $
---- doc/ctags.man.orig Tue Dec 9 12:05:48 2008
-+++ doc/ctags.man Tue Dec 9 12:06:12 2008
+--- doc/ctags.man.orig Tue Oct 21 04:32:26 2003
++++ doc/ctags.man Sat May 5 13:48:52 2012
@@ -1,8 +1,8 @@
-.TH CTAGS 1
+.TH ELVCTAGS 1
@@ -13,3 +13,30 @@ $OpenBSD: patch-doc_ctags_man,v 1.1 2008
.RB [ -D
.IR word ]
.RB [ -FBNgitvshlpdxra ]
+@@ -18,7 +18,7 @@ See
+ .B ctags
+ generates the
+ .I tags
+-and
++and
+ .I refs
+ files from a group of C source files.
+ The
+@@ -84,7 +84,7 @@ and regular expressions for anything else.
+ .IP \fB-g\fR
+ For static tags, generate entries that look like global tags.
+ (I.e., never generate an extra "file:" attribute.)
+-This implies -s and -h.
++This implies \-s and \-h.
+ .IP \fB-i\fR
+ Include inline definitions.
+ A tag will be generated for each function which is declared as being
+@@ -151,7 +151,7 @@ the tag is defined, and the text of that line.
+ .IP \fB-r\fP
+ This causes
+ .B ctags
+-to generate both
++to generate both
+ .I tags
+ and
+ .IR refs .
Index: patches/patch-doc_elvis_man
===================================================================
RCS file: patches/patch-doc_elvis_man
diff -N patches/patch-doc_elvis_man
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-doc_elvis_man 5 May 2012 12:39:25 -0000
@@ -0,0 +1,83 @@
+$OpenBSD$
+--- doc/elvis.man.orig Tue Oct 21 04:32:26 2003
++++ doc/elvis.man Sat May 5 13:48:08 2012
+@@ -1,4 +1,4 @@
+-.TH elvis 1
++.TH ELVIS 1
+ .SH NAME
+ elvis \- a clone of the ex/vi text editor
+ .SH SYNOPSIS
+@@ -46,7 +46,7 @@ you can give the command ":q" in each of its windows.
+ If you've modified the buffer in a window, and you want to abandon those
+ changes, then give the command ":q!" instead.
+ .SH "HELP PAGES"
+-For more information please take a look at
++For more information please take a look at
+ .BR Elvis '
+ help pages.
+ These pages should have been installed together with
+@@ -83,7 +83,7 @@ by running...
+ .B Elvis
+ to output more status messages.
+ You can use multiple \fB-V\fP flags to get even more detailed
+-information.
++information.
+ \fB-VVV\fP can be handy when
+ .B Elvis
+ isn't initializing itself quite the way you
+@@ -150,7 +150,7 @@ The \fB-S\fR flag is just used to make
+ permanently paranoid, for the duration of this process.
+ .IP \fB-SS\fR
+ Sets security=restricted.
+-This is more extreme security than "-S".
++This is more extreme security than "\-S".
+ The intent is to protect the system against reading by malicious users.
+ .IP "\fB-f \fIsession\fR"
+ Makes
+@@ -163,13 +163,13 @@ Redirects messages and trace information out to
+ .I logfile
+ instead of going to stdout/stderr as usual.
+ This is useful under Windows95, where stdout/stderr don't show anywhere.
+-If you're having trouble configuring WinElvis, try running "WinElvis -VVV -o
log"
++If you're having trouble configuring WinElvis, try running "WinElvis \-VVV
\-o log"
+ and then you can find the trace and error messages in the file "log".
+ .IP "\fB-G \fIgui\fR"
+ Makes
+ .B Elvis
+ use the named \fIgui\fR user interface instead of the default.
+-To see a list of supported user interfaces, give the command "elvis -?".
++To see a list of supported user interfaces, give the command "elvis \-?".
+ .IP "\fB-c \fIcommand\fR"
+ After loading the first file, interpret \fIcommand\fR as an ex command line.
+ Several ex command lines can be sent in one line, separated by "|".
+@@ -334,9 +334,9 @@ First, the server
+ temporarily sets security=safer while the
+ command is executed, for security reasons.
+ Second, the command is executed by the server's existing window, not the
+-new one, so (for example) "elvis -client -c 20 foo" creates a new window for
the file
+-"foo", and then moves the OLD WINDOW's cursor to line 20 of whatever file
+-it was showing.
++new one, so (for example) "elvis \-client \-c 20 foo" creates a new window for
++the file "foo", and then moves the OLD WINDOW's cursor to line 20 of whatever
++file it was showing.
+ .SS "X11 Mouse"
+ .PP
+ I've tried to reach a balance between the mouse behavior of
+@@ -454,7 +454,7 @@ when looking for a header file such as <stdio.h>.
+ .IP "LC_ALL, LC_MESSAGES, and LANG"
+ If LANG is defined, then
+ .B Elvis
+-will look for for its message translations in
++will look for its message translations in
+ .IR $LANG/elvis.msg ,
+ and only use just plain
+ .I elvis.msg
+@@ -500,7 +500,7 @@ containing a file named
+ .IP TERM
+ For the termcap interface, this is the name of the terminal's termcap/terminfo
+ entry.
+-Also, if its value is "kvt" or ends with "-r" or "-rv", then the background
++Also, if its value is "kvt" or ends with "\-r" or "\-rv", then the background
+ option will be "light" by default; else it will be "dark".
+ .IP TERMCAP
+ For the termcap interface, this can either store the name of a termcap file
Index: patches/patch-doc_ref_man
===================================================================
RCS file: patches/patch-doc_ref_man
diff -N patches/patch-doc_ref_man
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-doc_ref_man 5 May 2012 12:39:25 -0000
@@ -0,0 +1,63 @@
+$OpenBSD$
+--- doc/ref.man.orig Tue Oct 21 04:32:26 2003
++++ doc/ref.man Sat May 5 13:48:30 2012
+@@ -17,7 +17,7 @@ See
+ quickly locates and displays the header of a function.
+ To do this,
+ .B ref
+-looks in the "tags" file for the line that describes the function, and then
++looks in the "tags" file for the line that describes the function, and then
+ scans the source file for the function.
+ When it locates the function, it displays an introductory comment
+ (if there is one), the function's declaration, and the declarations of all
+@@ -28,8 +28,8 @@ Output tag info, instead of the function header.
+ The tag info consists of the three standard fields from each tag.
+ The fields will be separated by tab characters, just like records from the
+ traditional tags file format.
+-Consequently, you can use "ref -t -a >oldtags" to convert a new-style tags
file
+-back to an old-style tags file.
++Consequently, you can use "ref \-t \-a >oldtags" to convert a new-style tags
++file back to an old-style tags file.
+ .IP \fB-v\fR
+ Output verbose tag info, instead of the function header.
+ The verbose tag info shows the names and values of all attributes for each
+@@ -65,7 +65,7 @@ would only output the single most likely tag.)
+ Search all tags files.
+ Without this option,
+ .B ref
+-would stop searching after processing the first tags file which
++would stop searching after processing the first tags file which
+ contained any tags which met the restrictions.
+ .IP "\fB-p\fI tagpath\fR"
+ List of directories or tags files to search through.
+@@ -122,7 +122,7 @@ global tags whose address mentions "Foo" \-
+ probably friends of the Foo class.
+ .TP
+ .IB value [, value ...]
+-Short for
++Short for
+ .BI tagname: value [, value ...]
+ .PP
+ The sorting hints follow a similar form:
+@@ -160,10 +160,10 @@ I needed to generate extern declarations for all the f
+ To find the global function headers, I used the command...
+ .nf
+
+- ref -a kind:f file:dummy
++ ref \-a kind:f file:dummy
+ .fi
+ .PP
+-The "-a" causes
++The "\-a" causes
+ .B ref
+ to output all headers, instead of just the first one that it finds.
+ "kind:f" causes it to exclude any non-functions.
+@@ -184,7 +184,7 @@ For each source file, I also needed to find the static
+ there, so for each "file.c" I used the command...
+ .nf
+
+- ref -a kind:f file:=file.c
++ ref \-a kind:f file:=file.c
+ .fi
+ .PP
+ This is very similar to the earlier command.
Index: patches/patch-move_c
===================================================================
RCS file: patches/patch-move_c
diff -N patches/patch-move_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-move_c 5 May 2012 12:39:25 -0000
@@ -0,0 +1,24 @@
+$OpenBSD$
+
+From Debian:
+ "Fix a bug in the ) vi command that could cause a segmentation
+ fault (patch from elvis-almost-2.2.1)"
+
+--- move.c.orig Tue Oct 21 04:32:25 2003
++++ move.c Sat May 5 13:53:51 2012
+@@ -1620,6 +1620,7 @@ RESULT m_fsentence(win, vinf)
+ long para;
+ long offset;
+ long count;
++ MARKBUF tmp;
+
+ DEFAULT(1);
+
+@@ -1651,6 +1652,7 @@ RESULT m_fsentence(win, vinf)
+ else
+ {
+ para = 0;
++ scanseek(&cp, marktmp(tmp, markbuffer(win->state->cursor), 0L));
+ }
+ marksetoffset(win->state->cursor, offset);
+ if (para == offset)
Index: patches/patch-tagelvis_c
===================================================================
RCS file: patches/patch-tagelvis_c
diff -N patches/patch-tagelvis_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-tagelvis_c 5 May 2012 12:39:25 -0000
@@ -0,0 +1,27 @@
+$OpenBSD$
+
+From Debian:
+ "Elvis 2.2.0 has a bug causing it to exit 1 and not save any
+ files if started in a directory which contains a directory
+ "tags". This is fixed by the following patch."
+
+--- tagelvis.c.orig Tue Oct 21 04:32:25 2003
++++ tagelvis.c Sat May 5 13:17:33 2012
+@@ -672,6 +672,7 @@ void tebuilddef(buf)
+ CHAR *cp; /* for scanning the line */
+ long offset; /* offset of the tag within this buffer */
+ int i;
++ DIRPERM perm;
+
+ /* Destroy the old list, if any */
+ tefreedef(buf);
+@@ -701,7 +702,8 @@ void tebuilddef(buf)
+ * necessary because the ioopen() function displays an error
+ * message when the file it's trying to read doesn't exist.
+ */
+- if (dirperm("tags") == DIR_NEW)
++ perm = dirperm("tags");
++ if (perm == DIR_NEW || perm == DIR_DIRECTORY)
+ return;
+
+ /* open the file */