git: 01820ee3d085 - main - editors/vis: New port: Vi-like editor based on Plan 9's structural regular expressions

From: Koichiro Iwao <meta_at_FreeBSD.org>
Date: Tue, 14 Mar 2023 01:09:41 UTC
The branch main has been updated by meta:

URL: https://cgit.FreeBSD.org/ports/commit/?id=01820ee3d085596d83efa14d8dc0efaa5856a9cd

commit 01820ee3d085596d83efa14d8dc0efaa5856a9cd
Author:     Jesús Daniel Colmenares Oviedo <DtxdF@disroot.org>
AuthorDate: 2023-03-09 11:09:07 +0000
Commit:     Koichiro Iwao <meta@FreeBSD.org>
CommitDate: 2023-03-14 01:07:55 +0000

    editors/vis: New port: Vi-like editor based on Plan 9's structural regular expressions
    
    Vis aims to be a modern, legacy-free, simple yet efficient editor,
    combining the strengths of both vi(m) and sam.
    
    It extends vi's modal editing with built-in support for multiple
    cursors/selections and combines it with sam's structural regular
    expression based command language.
    
    Efficient syntax highlighting is provided using Parsing Expression
    Grammars, which can be conveniently expressed using Lua in the form
    of LPeg.
    
    The editor core is written in a reasonable amount of clean, modern
    and legacy-free C code, enabling it to run in resource-constrained
    environments. There is also a Lua API for in-process extensions.
    
    Vis strives to be simple and focuses on its core task: efficient
    text management. Clipboard and digraph handling as well as a fuzzy
    file open dialog are all provided by independent utilities.
    
    WWW: https://www.brain-dump.org/projects/vis/
    
    PR:     270063
---
 editors/Makefile                  |   1 +
 editors/vis/Makefile              |  61 +++++++++++++
 editors/vis/distinfo              |   5 ++
 editors/vis/files/patch-configure |  19 +++++
 editors/vis/files/patch-man_vis.1 |  11 +++
 editors/vis/pkg-descr             |  18 ++++
 editors/vis/pkg-message           |   7 ++
 editors/vis/pkg-plist             | 174 ++++++++++++++++++++++++++++++++++++++
 8 files changed, 296 insertions(+)

diff --git a/editors/Makefile b/editors/Makefile
index 3dffef28cbaa..9a101dcfafe9 100644
--- a/editors/Makefile
+++ b/editors/Makefile
@@ -277,6 +277,7 @@
     SUBDIR += vile
     SUBDIR += vim
     SUBDIR += vim-colorschemes-legacy
+    SUBDIR += vis
     SUBDIR += vscode
     SUBDIR += web-mode
     SUBDIR += with-editor
diff --git a/editors/vis/Makefile b/editors/vis/Makefile
new file mode 100644
index 000000000000..72eb8c5c7690
--- /dev/null
+++ b/editors/vis/Makefile
@@ -0,0 +1,61 @@
+PORTNAME=	vis
+DISTVERSION=	0.8
+CATEGORIES=	editors
+MASTER_SITES=	https://github.com/martanne/${PORTNAME}/releases/download/v${VIS_VER}/:source \
+		https://github.com/martanne/${PORTNAME}-test/releases/download/v${VIS_TEST_VER}/:test
+DISTFILES=	${PORTNAME}-${VIS_VER}${EXTRACT_SUFX}:source \
+		${VIS_TEST_NAME}-${VIS_TEST_VER}${EXTRACT_SUFX}:test
+
+MAINTAINER=	DtxdF@disroot.org
+COMMENT=	Vi-like editor based on Plan 9's structural regular expressions
+WWW=		https://www.brain-dump.org/projects/vis/
+
+LICENSE=	CC0-1.0 ISCL MIT
+LICENSE_COMB=	multi
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS+=	libtermkey.so:devel/libtermkey
+TEST_DEPENDS=	vim>0:editors/vim
+
+USES+=		gmake lua pkgconfig
+
+HAS_CONFIGURE=	yes
+CONFIGURE_ARGS=	--prefix=${PREFIX}
+
+INSTALL_TARGET=	install-strip
+TEST_TARGET=	test
+
+OPTIONS_DEFINE=			LPEG NLS TRE
+OPTIONS_DEFAULT=		LPEG TRE
+OPTIONS_RADIO=			CLIPBOARD
+OPTIONS_RADIO_CLIPBOARD=	WL_COPY XCLIP XSEL
+OPTIONS_SUB=			yes
+
+LPEG_DESC=	Syntax highlighting
+TRE_DESC=	More memory efficient regex search
+WL_COPY_DESC=	Use wl-copy
+XCLIP_DESC=	Use xclip
+XSEL_DESC=	Use xsel-conrad
+
+LPEG_RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}lpeg>=0.8.1:devel/lua-lpeg@${LUA_FLAVOR}
+NLS_USES=		gettext-runtime
+TRE_IMPLIES=		NLS
+TRE_LIB_DEPENDS=	libtre.so:textproc/libtre
+WL_COPY_RUN_DEPENDS=	wl-clipboard>0:x11/wl-clipboard
+XCLIP_RUN_DEPENDS=	xclip>0:x11/xclip
+XSEL_RUN_DEPENDS=	xsel-conrad>0:x11/xsel-conrad
+
+# To be consistent with VIS_TEST_VERSION.
+VIS_VER=	${DISTVERSION}
+VIS_TEST_VER=	0.5
+VIS_TEST_NAME=	${PORTNAME}-test
+
+post-extract:
+	${RMDIR} ${WRKSRC}/test
+	${MV} ${WRKDIR}/${VIS_TEST_NAME}-${VIS_TEST_VER}/ ${WRKSRC}/test
+
+post-install:
+	@(cd ${STAGEDIR}${PREFIX}/bin; ${MV} vis vise)
+	@(cd ${STAGEDIR}${PREFIX}/share/man/man1; ${MV} vis.1 vise.1)
+
+.include <bsd.port.mk>
diff --git a/editors/vis/distinfo b/editors/vis/distinfo
new file mode 100644
index 000000000000..a9e5ef1236f7
--- /dev/null
+++ b/editors/vis/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1677331839
+SHA256 (vis-0.8.tar.gz) = 61b10d40f15c4db2ce16e9acf291dbb762da4cbccf0cf2a80b28d9ac998a39bd
+SIZE (vis-0.8.tar.gz) = 404496
+SHA256 (vis-test-0.5.tar.gz) = 0098ad933ec1f87bba4b2da9fa84e00cab5612ec3623622c1e5003a245aec7d1
+SIZE (vis-test-0.5.tar.gz) = 99314
diff --git a/editors/vis/files/patch-configure b/editors/vis/files/patch-configure
new file mode 100644
index 000000000000..e5068c93cec1
--- /dev/null
+++ b/editors/vis/files/patch-configure
@@ -0,0 +1,19 @@
+--- configure.orig	2023-02-25 11:16:23 UTC
++++ configure
+@@ -236,7 +236,6 @@ esac
+ tryflag CFLAGS -pipe
+ 
+ # Try flags to optimize binary size
+-tryflag CFLAGS -O2
+ tryflag CFLAGS -ffunction-sections
+ tryflag CFLAGS -fdata-sections
+ tryldflag LDFLAGS_AUTO -Wl,--gc-sections
+@@ -443,7 +442,7 @@ int main(int argc, char *argv[]) {
+ }
+ EOF
+ 
+-	for liblua in lua lua5.4 lua5.3 lua5.2 lua-5.3 lua-5.2 lua54 lua53 lua52; do
++	for liblua in lua lua5.4 lua5.3 lua5.2 lua-5.4 lua-5.3 lua-5.2 lua54 lua53 lua52; do
+ 		printf " checking for %s... " "$liblua"
+ 
+ 		if test "$have_pkgconfig" = "yes" ; then
diff --git a/editors/vis/files/patch-man_vis.1 b/editors/vis/files/patch-man_vis.1
new file mode 100644
index 000000000000..93195eefb294
--- /dev/null
+++ b/editors/vis/files/patch-man_vis.1
@@ -0,0 +1,11 @@
+--- man/vis.1.orig	2023-02-24 18:24:37 UTC
++++ man/vis.1
+@@ -260,7 +260,7 @@ currently defers regular expression matching to the un
+ It uses what POSIX refers to as
+ .Dq Extended Regular Expressions
+ as described in
+-.Xr regex 7 .
++.Xr re_format 7 .
+ The anchors
+ .Ic ^
+ and
diff --git a/editors/vis/pkg-descr b/editors/vis/pkg-descr
new file mode 100644
index 000000000000..2d87ea204362
--- /dev/null
+++ b/editors/vis/pkg-descr
@@ -0,0 +1,18 @@
+Vis aims to be a modern, legacy-free, simple yet efficient editor,
+combining the strengths of both vi(m) and sam.
+
+It extends vi's modal editing with built-in support for multiple
+cursors/selections and combines it with sam's structural regular
+expression based command language.
+
+Efficient syntax highlighting is provided using Parsing Expression
+Grammars, which can be conveniently expressed using Lua in the form
+of LPeg.
+
+The editor core is written in a reasonable amount of clean, modern
+and legacy-free C code, enabling it to run in resource-constrained
+environments. There is also a Lua API for in-process extensions.
+
+Vis strives to be simple and focuses on its core task: efficient
+text management. Clipboard and digraph handling as well as a fuzzy
+file open dialog are all provided by independent utilities.
diff --git a/editors/vis/pkg-message b/editors/vis/pkg-message
new file mode 100644
index 000000000000..ce6da775401b
--- /dev/null
+++ b/editors/vis/pkg-message
@@ -0,0 +1,7 @@
+[
+{ type: install
+  message: <<EOM
+vis is installed as vise(1) to avoid conflicts with vis(1).
+EOM
+}
+]
diff --git a/editors/vis/pkg-plist b/editors/vis/pkg-plist
new file mode 100644
index 000000000000..935db2dbb310
--- /dev/null
+++ b/editors/vis/pkg-plist
@@ -0,0 +1,174 @@
+bin/vise
+bin/vis-clipboard
+bin/vis-complete
+bin/vis-digraph
+bin/vis-menu
+bin/vis-open
+share/man/man1/vis-clipboard.1.gz
+share/man/man1/vis-complete.1.gz
+share/man/man1/vis-digraph.1.gz
+share/man/man1/vis-menu.1.gz
+share/man/man1/vis-open.1.gz
+share/man/man1/vise.1.gz
+%%TRE%%%%DATADIR%%/lexer.lua
+%%TRE%%%%DATADIR%%/lexers/LICENSE
+%%TRE%%%%DATADIR%%/lexers/README.md
+%%TRE%%%%DATADIR%%/lexers/actionscript.lua
+%%TRE%%%%DATADIR%%/lexers/ada.lua
+%%TRE%%%%DATADIR%%/lexers/ansi_c.lua
+%%TRE%%%%DATADIR%%/lexers/antlr.lua
+%%TRE%%%%DATADIR%%/lexers/apdl.lua
+%%TRE%%%%DATADIR%%/lexers/apl.lua
+%%TRE%%%%DATADIR%%/lexers/applescript.lua
+%%TRE%%%%DATADIR%%/lexers/asm.lua
+%%TRE%%%%DATADIR%%/lexers/asp.lua
+%%TRE%%%%DATADIR%%/lexers/autoit.lua
+%%TRE%%%%DATADIR%%/lexers/awk.lua
+%%TRE%%%%DATADIR%%/lexers/bash.lua
+%%TRE%%%%DATADIR%%/lexers/batch.lua
+%%TRE%%%%DATADIR%%/lexers/bibtex.lua
+%%TRE%%%%DATADIR%%/lexers/boo.lua
+%%TRE%%%%DATADIR%%/lexers/caml.lua
+%%TRE%%%%DATADIR%%/lexers/chuck.lua
+%%TRE%%%%DATADIR%%/lexers/clojure.lua
+%%TRE%%%%DATADIR%%/lexers/cmake.lua
+%%TRE%%%%DATADIR%%/lexers/coffeescript.lua
+%%TRE%%%%DATADIR%%/lexers/container.lua
+%%TRE%%%%DATADIR%%/lexers/context.lua
+%%TRE%%%%DATADIR%%/lexers/cpp.lua
+%%TRE%%%%DATADIR%%/lexers/crystal.lua
+%%TRE%%%%DATADIR%%/lexers/csharp.lua
+%%TRE%%%%DATADIR%%/lexers/css.lua
+%%TRE%%%%DATADIR%%/lexers/cuda.lua
+%%TRE%%%%DATADIR%%/lexers/dart.lua
+%%TRE%%%%DATADIR%%/lexers/desktop.lua
+%%TRE%%%%DATADIR%%/lexers/diff.lua
+%%TRE%%%%DATADIR%%/lexers/django.lua
+%%TRE%%%%DATADIR%%/lexers/dmd.lua
+%%TRE%%%%DATADIR%%/lexers/dockerfile.lua
+%%TRE%%%%DATADIR%%/lexers/dot.lua
+%%TRE%%%%DATADIR%%/lexers/dsv.lua
+%%TRE%%%%DATADIR%%/lexers/eiffel.lua
+%%TRE%%%%DATADIR%%/lexers/elixir.lua
+%%TRE%%%%DATADIR%%/lexers/elm.lua
+%%TRE%%%%DATADIR%%/lexers/erlang.lua
+%%TRE%%%%DATADIR%%/lexers/fantom.lua
+%%TRE%%%%DATADIR%%/lexers/faust.lua
+%%TRE%%%%DATADIR%%/lexers/fennel.lua
+%%TRE%%%%DATADIR%%/lexers/fish.lua
+%%TRE%%%%DATADIR%%/lexers/forth.lua
+%%TRE%%%%DATADIR%%/lexers/fortran.lua
+%%TRE%%%%DATADIR%%/lexers/fsharp.lua
+%%TRE%%%%DATADIR%%/lexers/fstab.lua
+%%TRE%%%%DATADIR%%/lexers/gap.lua
+%%TRE%%%%DATADIR%%/lexers/gemini.lua
+%%TRE%%%%DATADIR%%/lexers/gettext.lua
+%%TRE%%%%DATADIR%%/lexers/gherkin.lua
+%%TRE%%%%DATADIR%%/lexers/git-rebase.lua
+%%TRE%%%%DATADIR%%/lexers/glsl.lua
+%%TRE%%%%DATADIR%%/lexers/gnuplot.lua
+%%TRE%%%%DATADIR%%/lexers/go.lua
+%%TRE%%%%DATADIR%%/lexers/groovy.lua
+%%TRE%%%%DATADIR%%/lexers/gtkrc.lua
+%%TRE%%%%DATADIR%%/lexers/haskell.lua
+%%TRE%%%%DATADIR%%/lexers/html.lua
+%%TRE%%%%DATADIR%%/lexers/icon.lua
+%%TRE%%%%DATADIR%%/lexers/idl.lua
+%%TRE%%%%DATADIR%%/lexers/inform.lua
+%%TRE%%%%DATADIR%%/lexers/ini.lua
+%%TRE%%%%DATADIR%%/lexers/io_lang.lua
+%%TRE%%%%DATADIR%%/lexers/java.lua
+%%TRE%%%%DATADIR%%/lexers/javascript.lua
+%%TRE%%%%DATADIR%%/lexers/json.lua
+%%TRE%%%%DATADIR%%/lexers/jsp.lua
+%%TRE%%%%DATADIR%%/lexers/julia.lua
+%%TRE%%%%DATADIR%%/lexers/latex.lua
+%%TRE%%%%DATADIR%%/lexers/ledger.lua
+%%TRE%%%%DATADIR%%/lexers/less.lua
+%%TRE%%%%DATADIR%%/lexers/lexer.lua
+%%TRE%%%%DATADIR%%/lexers/lilypond.lua
+%%TRE%%%%DATADIR%%/lexers/lisp.lua
+%%TRE%%%%DATADIR%%/lexers/litcoffee.lua
+%%TRE%%%%DATADIR%%/lexers/logtalk.lua
+%%TRE%%%%DATADIR%%/lexers/lua.lua
+%%TRE%%%%DATADIR%%/lexers/makefile.lua
+%%TRE%%%%DATADIR%%/lexers/man.lua
+%%TRE%%%%DATADIR%%/lexers/markdown.lua
+%%TRE%%%%DATADIR%%/lexers/matlab.lua
+%%TRE%%%%DATADIR%%/lexers/meson.lua
+%%TRE%%%%DATADIR%%/lexers/moonscript.lua
+%%TRE%%%%DATADIR%%/lexers/myrddin.lua
+%%TRE%%%%DATADIR%%/lexers/nemerle.lua
+%%TRE%%%%DATADIR%%/lexers/networkd.lua
+%%TRE%%%%DATADIR%%/lexers/nim.lua
+%%TRE%%%%DATADIR%%/lexers/nsis.lua
+%%TRE%%%%DATADIR%%/lexers/null.lua
+%%TRE%%%%DATADIR%%/lexers/objective_c.lua
+%%TRE%%%%DATADIR%%/lexers/pascal.lua
+%%TRE%%%%DATADIR%%/lexers/perl.lua
+%%TRE%%%%DATADIR%%/lexers/php.lua
+%%TRE%%%%DATADIR%%/lexers/pico8.lua
+%%TRE%%%%DATADIR%%/lexers/pike.lua
+%%TRE%%%%DATADIR%%/lexers/pkgbuild.lua
+%%TRE%%%%DATADIR%%/lexers/pony.lua
+%%TRE%%%%DATADIR%%/lexers/powershell.lua
+%%TRE%%%%DATADIR%%/lexers/prolog.lua
+%%TRE%%%%DATADIR%%/lexers/props.lua
+%%TRE%%%%DATADIR%%/lexers/protobuf.lua
+%%TRE%%%%DATADIR%%/lexers/ps.lua
+%%TRE%%%%DATADIR%%/lexers/pure.lua
+%%TRE%%%%DATADIR%%/lexers/python.lua
+%%TRE%%%%DATADIR%%/lexers/rails.lua
+%%TRE%%%%DATADIR%%/lexers/rc.lua
+%%TRE%%%%DATADIR%%/lexers/reason.lua
+%%TRE%%%%DATADIR%%/lexers/rebol.lua
+%%TRE%%%%DATADIR%%/lexers/rest.lua
+%%TRE%%%%DATADIR%%/lexers/rexx.lua
+%%TRE%%%%DATADIR%%/lexers/rhtml.lua
+%%TRE%%%%DATADIR%%/lexers/routeros.lua
+%%TRE%%%%DATADIR%%/lexers/rstats.lua
+%%TRE%%%%DATADIR%%/lexers/ruby.lua
+%%TRE%%%%DATADIR%%/lexers/rust.lua
+%%TRE%%%%DATADIR%%/lexers/sass.lua
+%%TRE%%%%DATADIR%%/lexers/scala.lua
+%%TRE%%%%DATADIR%%/lexers/scheme.lua
+%%TRE%%%%DATADIR%%/lexers/smalltalk.lua
+%%TRE%%%%DATADIR%%/lexers/sml.lua
+%%TRE%%%%DATADIR%%/lexers/snobol4.lua
+%%TRE%%%%DATADIR%%/lexers/spin.lua
+%%TRE%%%%DATADIR%%/lexers/sql.lua
+%%TRE%%%%DATADIR%%/lexers/strace.lua
+%%TRE%%%%DATADIR%%/lexers/systemd.lua
+%%TRE%%%%DATADIR%%/lexers/taskpaper.lua
+%%TRE%%%%DATADIR%%/lexers/tcl.lua
+%%TRE%%%%DATADIR%%/lexers/tex.lua
+%%TRE%%%%DATADIR%%/lexers/texinfo.lua
+%%TRE%%%%DATADIR%%/lexers/text.lua
+%%TRE%%%%DATADIR%%/lexers/toml.lua
+%%TRE%%%%DATADIR%%/lexers/vala.lua
+%%TRE%%%%DATADIR%%/lexers/vb.lua
+%%TRE%%%%DATADIR%%/lexers/vbscript.lua
+%%TRE%%%%DATADIR%%/lexers/vcard.lua
+%%TRE%%%%DATADIR%%/lexers/verilog.lua
+%%TRE%%%%DATADIR%%/lexers/vhdl.lua
+%%TRE%%%%DATADIR%%/lexers/wsf.lua
+%%TRE%%%%DATADIR%%/lexers/xml.lua
+%%TRE%%%%DATADIR%%/lexers/xs.lua
+%%TRE%%%%DATADIR%%/lexers/xtend.lua
+%%TRE%%%%DATADIR%%/lexers/yaml.lua
+%%TRE%%%%DATADIR%%/lexers/zig.lua
+%%TRE%%%%DATADIR%%/plugins/complete-filename.lua
+%%TRE%%%%DATADIR%%/plugins/complete-word.lua
+%%TRE%%%%DATADIR%%/plugins/digraph.lua
+%%TRE%%%%DATADIR%%/plugins/filetype.lua
+%%TRE%%%%DATADIR%%/plugins/number-inc-dec.lua
+%%TRE%%%%DATADIR%%/plugins/textobject-lexer.lua
+%%TRE%%%%DATADIR%%/themes/dark-16.lua
+%%TRE%%%%DATADIR%%/themes/default-16.lua
+%%TRE%%%%DATADIR%%/themes/default-256.lua
+%%TRE%%%%DATADIR%%/themes/light-16.lua
+%%TRE%%%%DATADIR%%/themes/solarized.lua
+%%TRE%%%%DATADIR%%/themes/zenburn.lua
+%%TRE%%%%DATADIR%%/vis-std.lua
+%%TRE%%%%DATADIR%%/vis.lua
+%%TRE%%%%DATADIR%%/visrc.lua