git: c3c4c8f5c497 - main - editors/vim-classic: New port: Fork of Vim 8.x for long-term maintenance

Bruce M Simpson <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.ports
Message-ID <[email protected]>
The branch main has been updated by bms:

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

commit c3c4c8f5c4972007ac124dcc455c354cabeca344
Author:     Bruce M Simpson <[email protected]>
AuthorDate: 2026-08-13 07:15:48 +0000
Commit:     Bruce M Simpson <[email protected]>
CommitDate: 2026-08-13 20:31:13 +0000

    editors/vim-classic: New port: Fork of Vim 8.x for long-term maintenance
    
    Some people prefer a more streamlined Vim. I am one of them.
    
    Approved by:    fuz
    PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=295817
---
 editors/Makefile                                   |   1 +
 editors/vim-classic/Makefile                       | 241 +++++++++++++++++
 editors/vim-classic/distinfo                       |   3 +
 editors/vim-classic/files/defaults_freebsd.vim     |  10 +
 .../vim-classic/files/patch-runtime_defaults.vim   |  24 ++
 editors/vim-classic/files/patch-src-auto-configure |  48 ++++
 editors/vim-classic/files/patch-src-installml.sh   |  36 +++
 editors/vim-classic/files/patch-src_feature.h      |  21 ++
 editors/vim-classic/files/vietnamese_viscii.vim    | 285 +++++++++++++++++++++
 editors/vim-classic/pkg-descr                      |  17 ++
 editors/vim-classic/pkg-plist                      | 137 ++++++++++
 editors/vim-classic/pkg-plist-tiny                 |   2 +
 12 files changed, 825 insertions(+)

diff --git a/editors/Makefile b/editors/Makefile
index 9f8c0bbcb3fc..693257c84fe1 100644
--- a/editors/Makefile
+++ b/editors/Makefile
@@ -293,6 +293,7 @@
     SUBDIR += vigor
     SUBDIR += vile
     SUBDIR += vim
+    SUBDIR += vim-classic
     SUBDIR += vim-colorschemes-legacy
     SUBDIR += vim-lsp
     SUBDIR += vis
diff --git a/editors/vim-classic/Makefile b/editors/vim-classic/Makefile
new file mode 100644
index 000000000000..8d656bb2f352
--- /dev/null
+++ b/editors/vim-classic/Makefile
@@ -0,0 +1,241 @@
+PORTNAME=	vim-classic
+PORTVERSION=	8.3.0
+DISTVERSIONPREFIX=	v
+CATEGORIES=	editors
+MASTER_SITES=	https://git.sr.ht/~sircmpwn/vim-classic/archive/ \
+		https://mirror.sonologic.net/vim-classic/
+DISTNAME=	${DISTVERSIONPREFIX}${PORTVERSION}
+DIST_SUBDIR=	${PORTNAME}
+
+MAINTAINER=	[email protected]
+COMMENT=	Fork of Vim 8.x for long-term maintenance
+WWW=		https://vim-classic.org/ \
+		https://sr.ht/~sircmpwn/vim-classic/
+
+LICENSE=	VIM
+LICENSE_NAME=	VIM License
+LICENSE_FILE=	${WRKSRC}/runtime/doc/uganda.txt
+LICENSE_PERMS=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+# Flavors {{{1
+# FLAVORS are used to build various Vim GUIs. The default flavor (`vim') is
+# console-only.
+FLAVORS=		console gtk2 gtk3 motif x11 tiny
+FLAVOR?=		${FLAVORS:[1]}
+# Register conflicts with all other flavors
+CONFLICTS_INSTALL=	${FLAVORS:N${FLAVOR}:S/^/vim-/}
+
+USES=		cpe desktop-file-utils iconv ncurses pkgconfig shebangfix
+
+WRKSRC=		${WRKDIR}/${PORTNAME}-${DISTNAME}
+DATADIR=	${PREFIX}/share/vim
+
+# Vim will try to link against libcanberra if it's installed
+CONFIGURE_ARGS=	--disable-canberra \
+		--enable-cscope \
+		--enable-gui=${GUI} \
+		--enable-multibyte \
+		--with-tlib=ncursesw
+MAKE_ARGS=	STRIP="${STRIP_CMD}" \
+		VIMRCLOC=${ETCDIR} \
+		VIMRUNTIMEDIR=${PREFIX}/share/vim/${VIM_VER}
+
+CPE_VERSION=	${PORTVERSION:R}
+GNU_CONFIGURE=	yes
+GNU_CONFIGURE_MANPREFIX=	${PREFIX}/share
+PLIST_SUB=	VIM_VER=${VIM_VER}
+PORTDATA=	${VIM_VER}
+PORTSCOUT=	ignore:1
+SHEBANG_FILES=	runtime/tools/demoserver.py runtime/tools/efm_perl.pl
+VIM_VER=	${PORTNAME:R:S|-classic||g}${PORTVERSION:R:S|.||g}
+
+.for f in ${FLAVORS:Nconsole}
+${f}_PKGNAMESUFFIX=	-${f}
+.endfor
+
+# GUI flavors
+.if ${FLAVOR:U} == console
+GUI=			no
+CONFIGURE_ARGS+=	--without-x
+PLIST_SUB+=		DESKTOP="@comment " \
+			GUI="@comment "
+
+.elif ${FLAVOR:U} == tiny
+GUI=			no
+CONFIGURE_ARGS+=	--without-x
+PLIST=			${.CURDIR}/pkg-plist-tiny
+
+.elif ${FLAVOR:U} == gtk2
+GUI=			gtk2
+CONFIGURE_ARGS+=	--enable-fontset \
+			--enable-xim
+PLIST_SUB+=		DESKTOP="" \
+			GUI=""
+USES+=			desktop-file-utils gnome xorg
+USE_GNOME=		gdkpixbufextra gtk20
+USE_XORG=		ice sm x11 xpm xt
+
+.elif ${FLAVOR:U} == gtk3
+GUI=			gtk3
+CONFIGURE_ARGS+=	--enable-fontset \
+			--enable-xim \
+			--with-wayland
+LIB_DEPENDS+=		libwayland-client.so:graphics/wayland
+PLIST_SUB+=		DESKTOP="" \
+			GUI=""
+USES+=			desktop-file-utils gnome xorg
+USE_GNOME=		cairo gdkpixbufextra gtk30
+USE_XORG=		ice sm x11 xpm xt
+
+.elif ${FLAVOR:U} == motif
+GUI=			motif
+CONFIGURE_ARGS+=	--enable-fontset \
+			--enable-xim \
+			--with-motif=lib="${MOTIFLIB}"
+CONFIGURE_ENV+=		MOTIFHOME=${LOCALBASE}
+PLIST_SUB+=		DESKTOP="@comment " \
+			GUI=""
+USES+=			motif xorg
+USE_XORG=		ice sm x11 xmu xt
+
+.elif ${FLAVOR:U} == x11
+GUI=			x11
+CONFIGURE_ARGS+=	--with-x
+PLIST_SUB+=		DESKTOP="@comment " \
+			GUI="@comment "
+USES+=			xorg
+USE_XORG=		ice sm x11 xmu xpm xt
+.endif
+
+.if ${FLAVOR:U} != tiny
+USES+=			python:build
+CONFIGURE_ARGS+=	--enable-python3interp=dynamic \
+			--with-python3-command=${PYTHON_CMD}
+.  if !empty(WITH_DEBUG)
+CFLAGS+=		-DPy_DEBUG -DPy_DEBUG_NO_PYMALLOC
+.  endif
+.endif
+
+# Options {{{1
+# The bulk of the OPTIONS are for normal (non-tiny) vim
+### Make sure any new options are excluded below in CONSOLE/TINY
+OPTIONS_DEFAULT=	CTAGS_BASE XXD
+OPTIONS_DEFINE=		MAKE_JOBS NLS XTERM_SAVE XXD
+OPTIONS_SINGLE=		CTAGS
+OPTIONS_SINGLE_CTAGS=	CTAGS_BASE CTAGS_EXUBERANT CTAGS_UNIVERSAL
+OPTIONS_GROUP=		LANGBIND
+OPTIONS_GROUP_LANGBIND=	LUA PERL RUBY SCHEME TCL
+OPTIONS_SUB=		yes
+
+# vim-tiny excludes everything except CONSOLE, MAKE_JOBS
+.if ${FLAVOR:U} == tiny
+OPTIONS_EXCLUDE:=	${OPTIONS_DEFINE:NMAKE_JOBS} ${OPTIONS_GROUP_LANGBIND} \
+			${OPTIONS_SINGLE_CTAGS} ${OPTIONS_SINGLE_UI:NCONSOLE}
+.endif
+
+MAKE_JOBS_DESC=		Enable parallel build
+XTERM_SAVE_DESC=	Restore xterm screen after exit
+XXD_DESC=		Install xxd hexdumper
+
+CTAGS_BASE_DESC=	Use system ctags
+CTAGS_EXUBERANT_DESC=	Use exctags instead of ctags
+CTAGS_UNIVERSAL_DESC=	Use uctags instead of ctags
+
+# GENERAL OPTIONS
+CTAGS_EXUBERANT_RUN_DEPENDS=	exctags:devel/ctags
+CTAGS_UNIVERSAL_RUN_DEPENDS=	uctags:devel/universal-ctags
+
+MAKE_JOBS_VARS_OFF=	MAKE_JOBS_UNSAFE=yes
+
+NLS_CONFIGURE_ENABLE=	nls
+NLS_USES=		gettext
+
+XXD_RUN_DEPENDS=	xxd:sysutils/xxd
+
+# LANGUAGE BINDINGS
+LANGBIND_DESC=	Optional language bindings
+
+LUA_CONFIGURE_ENABLE=	luainterp
+LUA_CONFIGURE_WITH=	lua-prefix=${LOCALBASE}
+LUA_USES=		lua
+
+PERL_CONFIGURE_ENABLE=	perlinterp
+PERL_USES=		perl5
+
+RUBY_CONFIGURE_ENABLE=	rubyinterp
+RUBY_USES=		ruby
+
+SCHEME_DESC=			MzScheme (Racket) bindings
+SCHEME_CONFIGURE_ENABLE=	mzschemeinterp
+SCHEME_BUILD_DEPENDS=		mzscheme:lang/racket
+SCHEME_RUN_DEPENDS=		${SCHEME_BUILD_DEPENDS}
+
+TCL_CONFIGURE_ENABLE=	tclinterp
+TCL_CONFIGURE_WITH=	tclsh=tclsh${TCL_VER}
+TCL_USES=		tcl
+
+# Targets {{{1
+.include <bsd.port.pre.mk>
+
+post-extract:
+	${INSTALL_DATA} ${FILESDIR}/vietnamese_viscii.vim ${WRKSRC}/runtime/keymap
+
+post-patch:
+	${REINPLACE_CMD} -e 's|%%ETCDIR%%|${ETCDIR}|' ${WRKSRC}/src/feature.h
+	${REINPLACE_CMD} -e 's|-liconv|${ICONV_LIB}|g; s|/usr/local|${LOCALBASE}|g' \
+		${WRKSRC}/src/auto/configure
+
+post-configure:
+# Needed when devel/libsysinfo is installed:
+	${REINPLACE_CMD} -e '/^#define HAVE_SYSINFO/ d' ${WRKSRC}/src/auto/config.h
+
+do-test:
+	${MAKE_CMD} -C ${WRKSRC} test
+
+.if ${FLAVOR:U} == tiny
+do-install:
+	${MKDIR} ${STAGEDIR}${DATADIR}/${VIM_VER}
+	${INSTALL_PROGRAM} ${WRKSRC}/src/vim ${STAGEDIR}${PREFIX}/bin
+	${INSTALL_DATA} ${WRKSRC}/runtime/defaults.vim ${STAGEDIR}${DATADIR}/${VIM_VER}
+	${INSTALL_DATA} ${FILESDIR}/defaults_freebsd.vim ${STAGEDIR}${DATADIR}/${VIM_VER}
+	${INSTALL_MAN} ${WRKSRC}/runtime/doc/vim.1 ${STAGEDIR}${PREFIX}/share/man/man1
+
+.else  # flavor != tiny
+post-install:
+	${INSTALL_DATA} ${FILESDIR}/defaults_freebsd.vim ${STAGEDIR}${DATADIR}/${VIM_VER}
+	${RM} ${STAGEDIR}${PREFIX}/bin/ex
+	${RM} ${STAGEDIR}${PREFIX}/bin/view
+	${RM} ${STAGEDIR}${PREFIX}/bin/xxd
+	${FIND} ${STAGEDIR}${PREFIX} -name xxd.1 -delete
+.  for F in eview evim gview gvim gvimdiff rgview rgvim rview rvim vimdiff
+	${LN} -sf vim ${STAGEDIR}${PREFIX}/bin/$F
+.  endfor
+
+# OPTIONS
+post-patch-CTAGS_BASE-on:
+	${FIND} ${WRKSRC}/runtime -name 'menu*.vim' | ${XARGS} ${GREP} -l 'ctags -R' | \
+		${XARGS} ${REINPLACE_CMD} -Ee 's!ctags -R ?\.!${FIND} . -type f \\| ${XARGS} ctags!g'
+
+post-patch-CTAGS_EXUBERANT-on:
+	${FIND} ${WRKSRC}/runtime -name 'menu*.vim' | ${XARGS} ${GREP} -l 'ctags -R' | \
+		${XARGS} ${REINPLACE_CMD} -e 's|ctags -R|exctags -R|g'
+
+post-patch-CTAGS_UNIVERSAL-on:
+	${FIND} ${WRKSRC}/runtime -name 'menu*.vim' | ${XARGS} ${GREP} -l 'ctags -R' | \
+		${XARGS} ${REINPLACE_CMD} -e 's|ctags -R|uctags -R|g'
+
+post-patch-LUA-on:
+	${REINPLACE_CMD} -e 's|set dummy lua;|set dummy ${LUA_CMD};|g' ${WRKSRC}/src/auto/configure
+	${REINPLACE_CMD} -e '/$$LUA_LIBS/ s|^|LUA_LIBS="-L${LUA_LIBDIR} -llua-${LUA_VER}";|' ${WRKSRC}/src/auto/configure
+	${REINPLACE_CMD} -e '/LUA_CFLAGS=/s|".*"|"-I${LUA_INCDIR}"|' ${WRKSRC}/src/auto/configure
+
+post-patch-XTERM_SAVE-on:
+	${REINPLACE_CMD} -e '/FEAT_XTERM_SAVE/ s|.*|#define FEAT_XTERM_SAVE|' ${WRKSRC}/src/feature.h
+
+post-install-NLS-off:
+	${MKDIR} ${STAGEDIR}${DATADIR}/${VIM_VER}/lang
+	${MKDIR} ${STAGEDIR}${DATADIR}/${VIM_VER}/keymap
+	${INSTALL_DATA} ${WRKSRC}/runtime/keymap/* ${STAGEDIR}${DATADIR}/${VIM_VER}/keymap
+.endif #!defined(TINY)
+
+.include <bsd.port.post.mk>
diff --git a/editors/vim-classic/distinfo b/editors/vim-classic/distinfo
new file mode 100644
index 000000000000..22c064be9618
--- /dev/null
+++ b/editors/vim-classic/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1786639367
+SHA256 (vim-classic/v8.3.0.tar.gz) = 6e1c97c8269e9354bbc474f0efa7e1e0b23fcdb6075067474d731a9bfac6e8ef
+SIZE (vim-classic/v8.3.0.tar.gz) = 14767832
diff --git a/editors/vim-classic/files/defaults_freebsd.vim b/editors/vim-classic/files/defaults_freebsd.vim
new file mode 100644
index 000000000000..7af379c40118
--- /dev/null
+++ b/editors/vim-classic/files/defaults_freebsd.vim
@@ -0,0 +1,10 @@
+let g:is_posix = 1   " Our /bin/sh is POSIX, not bash
+
+" Load a port template when creating a Makefile under the ports tree
+augroup FreeBSD
+    autocmd!
+    autocmd BufNewFile /usr/ports/*/*/Makefile 0r /usr/ports/Templates/Makefile
+    if !empty($PORTSDIR)
+        autocmd BufNewFile $PORTSDIR/*/*/Makefile 0r $PORTSDIR/Templates/Makefile
+    endif
+augroup END
diff --git a/editors/vim-classic/files/patch-runtime_defaults.vim b/editors/vim-classic/files/patch-runtime_defaults.vim
new file mode 100644
index 000000000000..0523e79e1ee2
--- /dev/null
+++ b/editors/vim-classic/files/patch-runtime_defaults.vim
@@ -0,0 +1,24 @@
+We wrap `syntax on` in a try block so that it won't produce errors for
+vim-tiny, which doens't include the runtime library.
+
+We also source our own FreeBSD-specific defaults file.
+
+--- runtime/defaults.vim.orig	2022-09-04 15:43:53 UTC
++++ runtime/defaults.vim
+@@ -130,7 +130,9 @@ endif
+ " GUI (which always has colors).
+ if &t_Co > 2 || has("gui_running")
+   " Revert with ":syntax off".
+-  syntax on
++  try
++    syntax on
++  catch | endtry
+ 
+   " I like highlighting strings inside C comments.
+   " Revert with ":unlet c_comment_strings".
+@@ -152,3 +154,5 @@ if has('langmap') && exists('+langremap')
+   " compatible).
+   set nolangremap
+ endif
++
++source $VIMRUNTIME/defaults_freebsd.vim
diff --git a/editors/vim-classic/files/patch-src-auto-configure b/editors/vim-classic/files/patch-src-auto-configure
new file mode 100644
index 000000000000..49b764d16d1b
--- /dev/null
+++ b/editors/vim-classic/files/patch-src-auto-configure
@@ -0,0 +1,48 @@
+--- src/auto/configure.orig	2025-05-10 17:54:52 UTC
++++ src/auto/configure
+@@ -936,7 +936,7 @@ localedir='${datarootdir}/locale'
+ psdir='${docdir}'
+ libdir='${exec_prefix}/lib'
+ localedir='${datarootdir}/locale'
+-mandir='${datarootdir}/man'
++mandir='${prefix}/man'
+ 
+ ac_prev=
+ ac_dashdash=
+@@ -5955,7 +5955,7 @@ else case e in #(
+ then :
+   printf %s "(cached) " >&6
+ else case e in #(
+-  e)  vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'`  ;;
++  e)  vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //' | tr -d '/'`  ;;
+ esac
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_lua_luajit" >&5
+@@ -6017,7 +6017,7 @@ else case e in #(
+ then :
+   printf %s "(cached) " >&6
+ else case e in #(
+-  e)  vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'`  ;;
++  e)  vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //' | tr -d '.'`  ;;
+ esac
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_plain_lua" >&5
+@@ -6138,7 +6138,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.b
+       LIBS=$libs_save
+     fi
+     if test "x$lua_ok" = "xyes"; then
+-      LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
++      LUA_CFLAGS="-I${LUA_INCDIR}"
+       LUA_SRC="if_lua.c"
+       LUA_OBJ="objects/if_lua.o"
+       LUA_PRO="if_lua.pro"
+@@ -6195,7 +6195,8 @@ printf "%s\n" "yes" >&6; }
+       printf "%s\n" "#define DYNAMIC_LUA 1" >>confdefs.h
+ 
+       LUA_LIBS=""
+-      LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
++      vi_cv_version_lua=${LUA_VER}
++      LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua-${vi_cv_dll_name_lua}.so\\\" $LUA_CFLAGS"
+     fi
+     if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
+        test "x$MACOS_X" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
diff --git a/editors/vim-classic/files/patch-src-installml.sh b/editors/vim-classic/files/patch-src-installml.sh
new file mode 100644
index 000000000000..c802d91f3545
--- /dev/null
+++ b/editors/vim-classic/files/patch-src-installml.sh
@@ -0,0 +1,36 @@
+--- src/installml.sh.orig	2019-08-03 17:29:51 UTC
++++ src/installml.sh
+@@ -52,18 +52,6 @@ if test $what = "install" -a \( -f $destdir/$vimname.1
+       /bin/sh install-sh -c -d $destdir
+    fi
+ 
+-   # ex
+-   if test ! -f $destdir/$exname.1 -a -f $destdir/$vimname.1; then
+-      echo creating link $destdir/$exname.1
+-      cd $destdir; ln -s $vimname.1 $exname.1
+-   fi
+-
+-   # view
+-   if test ! -f $destdir/$viewname.1 -a -f $destdir/$vimname.1; then
+-      echo creating link $destdir/$viewname.1
+-      cd $destdir; ln -s $vimname.1 $viewname.1
+-   fi
+-
+    # rvim
+    if test ! -f $destdir/$rvimname.1 -a -f $destdir/$vimname.1; then
+       echo creating link $destdir/$rvimname.1
+@@ -119,14 +107,6 @@ fi
+ if test $what = "uninstall"; then
+    echo Checking for Vim manual page links in $destdir...
+ 
+-   if test -L $destdir/$exname.1; then
+-      echo deleting $destdir/$exname.1
+-      rm -f $destdir/$exname.1
+-   fi
+-   if test -L $destdir/$viewname.1; then
+-      echo deleting $destdir/$viewname.1
+-      rm -f $destdir/$viewname.1
+-   fi
+    if test -L $destdir/$rvimname.1; then
+       echo deleting $destdir/$rvimname.1
+       rm -f $destdir/$rvimname.1
diff --git a/editors/vim-classic/files/patch-src_feature.h b/editors/vim-classic/files/patch-src_feature.h
new file mode 100644
index 000000000000..88691a17bba4
--- /dev/null
+++ b/editors/vim-classic/files/patch-src_feature.h
@@ -0,0 +1,21 @@
+This allows /usr/local/etc/vim/vimrc to be loaded as a system
+vimrc. Note that creating that file will prevent loading
+defaults.vim from Vim's runtime.
+
+--- src/feature.h.orig	2022-09-04 15:48:55 UTC
++++ src/feature.h
+@@ -710,12 +710,12 @@
+ /*
+  * SYS_VIMRC_FILE	Name of the system-wide .vimrc file.
+  */
+-// #define SYS_VIMRC_FILE	"/etc/vimrc"
++#define SYS_VIMRC_FILE	"%%ETCDIR%%/vimrc"
+ 
+ /*
+  * SYS_GVIMRC_FILE	Name of the system-wide .gvimrc file.
+  */
+-// #define SYS_GVIMRC_FILE	"/etc/gvimrc"
++#define SYS_GVIMRC_FILE	"%%ETCDIR%%/gvimrc"
+ 
+ /*
+  * DFLT_HELPFILE	Name of the help file.
diff --git a/editors/vim-classic/files/vietnamese_viscii.vim b/editors/vim-classic/files/vietnamese_viscii.vim
new file mode 100644
index 000000000000..b9cb6ea38fdf
--- /dev/null
+++ b/editors/vim-classic/files/vietnamese_viscii.vim
@@ -0,0 +1,285 @@
+" vim:ts=8
+"
+"   VIQR input
+"
+"	RFC 1456 Vietnamese Standardization Working Group,
+"	Conventions for Encoding the Vietnamese Language
+"	VISCII: VIetnamese Standard Code for Information Interchange
+"	VIQR: VIetnamese Quoted-Readable Specification Revision 1.1",
+"	May 1993.
+"
+set isprint=@,002,005-006,020,025,128-255
+"
+"letter Á
+imap	A'	193
+"letter À
+imap	A`	192
+"letter Ä
+imap	A?	196
+"letter Ã
+imap	A~	195
+"letter €
+imap	A.	128
+"letter Å
+imap	A(	197
+"letter 
+imap	197'	129
+"letter ‚
+imap	197`	130
+"letter 
+imap	197?	002
+"letter 
+imap	197~	005
+"letter ƒ
+imap	197.	131
+"letter Â
+imap	A^	194
+"letter „
+imap	194'	132
+"letter …
+imap	194`	133
+"letter †
+imap	194?	134
+"letter 
+imap	194~	006
+"letter ‡
+imap	194.	135
+"letter Ð
+imap	DD	208
+imap	Dd	208
+"letter É
+imap	E'	201
+"letter È
+imap	E`	200
+"letter Ë
+imap	E?	203
+"letter ˆ
+imap	E~	136
+"letter ‰
+imap	E.	137
+"letter Ê
+imap	E^	202
+"letter Š
+imap	202'	138
+"letter ‹
+imap	202`	139
+"letter Œ
+imap	202?	140
+"letter 
+imap	202~	141
+"letter Ž
+imap	202.	142
+"letter Í
+imap	I'	205
+"letter Ì
+imap	I`	204
+"letter ›
+imap	I?	155
+"letter Î
+imap	I~	206
+"letter ˜
+imap	I.	152
+"letter Ó
+imap	O'	211
+"letter Ò
+imap	O`	210
+"letter ™
+imap	O?	153
+"letter  
+"imap	O~	213  -- bug in encoding  213 --> a.
+imap	O~	160
+"letter š
+imap	O.	154
+"letter Ô
+imap	O^	212
+"letter 
+imap	212'	143
+"letter 
+imap	212`	144
+"letter ‘
+imap	212?	145
+"letter ’
+imap	212~	146
+"letter “
+imap	212.	147
+"letter ´
+imap	O+	180
+"letter •
+imap	180'	149
+"letter –
+imap	180`	150
+"letter —
+imap	180?	151
+"letter ³
+imap	180~	179
+"letter ”
+imap	180.	148
+"letter Ú
+imap	U'	218
+"letter Ù
+imap	U`	217
+"letter œ
+imap	U?	156
+"letter 
+imap	U~	157
+"letter ž
+imap	U.	158
+"letter ¿
+imap	U+	191
+"letter º
+imap	191'	186
+"letter »
+imap	191`	187
+"letter ¼
+imap	191?	188
+"letter ÿ
+imap	191~	255
+"letter ¹
+imap	191.	185
+"letter Ý
+imap	Y'	221
+"letter Ÿ
+imap	Y`	159
+"letter 
+imap	Y?	020
+"letter 
+imap	Y~	025
+"letter 
+imap	Y.	030
+"letter á
+imap	a'	225
+"letter à
+imap	a`	224
+"letter ä
+imap	a?	228
+"letter ã
+imap	a~	227
+"letter Õ
+"imap	a.	160  bug in encoding -- 160 --> O~
+imap	a.	213
+"letter å
+imap	a(	229
+"letter ¡
+imap	229'	161
+"letter ¢
+imap	229`	162
+"letter Æ
+imap	229?	198
+"letter Ç
+imap	229~	199
+"letter £
+imap	229.	163
+"letter â
+imap	a^	226
+"letter ¤
+imap	226'	164
+"letter ¥
+imap	226`	165
+"letter ¦
+imap	226?	166
+"letter ç
+imap	226~	231
+"letter §
+imap	226.	167
+"letter ð
+imap	dd	240
+"letter é
+imap	e'	233
+"letter è
+imap	e`	232
+"letter ë
+imap	e?	235
+"letter ¨
+imap	e~	168
+"letter ©
+imap	e.	169
+"letter ê
+imap	e^	234
+"letter ª
+imap	234'	170
+"letter «
+imap	234`	171
+"letter ¬
+imap	234?	172
+"letter ­
+imap	234~	173
+"letter ®
+imap	234.	174
+"letter í
+imap	i'	237
+"letter ì
+imap	i`	236
+"letter ï
+imap	i?	239
+"letter î
+imap	i~	238
+"letter ¸
+imap	i.	184
+"letter ó
+imap	o'	243
+"letter ò
+imap	o`	242
+"letter ö
+imap	o?	246
+"letter õ
+imap	o~	245
+"letter ÷
+imap	o.	247
+"letter ô
+imap	o^	244
+"letter ¯
+imap	244'	175
+"letter °
+imap	244`	176
+"letter ±
+imap	244?	177
+"letter ²
+imap	244~	178
+"letter µ
+imap	244.	181
+"letter ½
+imap	o+	189
+"letter ¾
+imap	189'	190
+"letter ¶
+imap	189`	182
+"letter ·
+imap	189?	183
+"letter Þ
+imap	189~	222
+"letter þ
+imap	189.	254
+"letter ú
+imap	u'	250
+"letter ù
+imap	u`	249
+"letter ü
+imap	u?	252
+"letter û
+imap	u~	251
+"letter ø
+imap	u.	248
+"letter ß
+imap	u+	223
+"letter Ñ
+imap	223'	209
+"letter ×
+imap	223`	215
+"letter Ø
+imap	223?	216
+"letter æ
+imap	223~	230
+"letter ñ
+imap	223.	241
+"letter ý
+imap	y'	253
+"letter Ï
+imap	y`	207
+"letter Ö
+imap	y?	214
+"letter Û
+imap	y~	219
+"letter Ü
+imap	y.	220
+	"
+	"	END OF VIQR input support
diff --git a/editors/vim-classic/pkg-descr b/editors/vim-classic/pkg-descr
new file mode 100644
index 000000000000..7592e30a8c4b
--- /dev/null
+++ b/editors/vim-classic/pkg-descr
@@ -0,0 +1,17 @@
+Vim Classic is a fork of Vim 8.x for long-term maintenance, providing a stable,
+dependable editor ? maintained entirely by humans.
+
+Vim is a highly configurable text editor built to enable efficient text editing.
+It is an improved version of the vi editor distributed with most UNIX systems.
+
+Vim is often called a "programmer's editor," and so useful for programming that
+many consider it an entire IDE. It's not just for programmers, though. Vim is
+perfect for all kinds of text editing, from composing email to editing
+configuration files.
+
+FreeBSD has the following Vim Classic packages:
+* vim-classic: Console-only Vim (vim binary) with all runtime files
+* vim-classic-gtk3, -gtk2, -motif: Console Vim plus a GUI (gvim binary)
+* vim-classic-x11:  Console Vim only, with xclipboard support
+* vim-classic-tiny: Vim binary only, with no runtime files. Not useful for most
+  people; intended for minimal (ex. jail) installations
diff --git a/editors/vim-classic/pkg-plist b/editors/vim-classic/pkg-plist
new file mode 100644
index 000000000000..71a532a6e54d
--- /dev/null
+++ b/editors/vim-classic/pkg-plist
@@ -0,0 +1,137 @@
+%%GUI%%bin/eview
+bin/evim
+%%GUI%%bin/gview
+%%GUI%%bin/gvim
+%%GUI%%bin/gvimdiff
+%%GUI%%bin/rgview
+%%GUI%%bin/rgvim
+bin/rview
+bin/rvim
+bin/vim
+bin/vimdiff
+bin/vimtutor
+%%DESKTOP%%share/applications/gvim.desktop
+%%DESKTOP%%share/applications/vim.desktop
+%%DESKTOP%%share/icons/hicolor/48x48/apps/gvim.png
+%%DESKTOP%%share/icons/locolor/16x16/apps/gvim.png
+%%DESKTOP%%share/icons/locolor/32x32/apps/gvim.png
+%%NLS%%share/man/da.ISO8859-1/man1/rview.1.gz
+%%NLS%%share/man/da.ISO8859-1/man1/rvim.1.gz
+%%NLS%%share/man/da.ISO8859-1/man1/vim.1.gz
+%%NLS%%share/man/da.ISO8859-1/man1/vimdiff.1.gz
+%%NLS%%share/man/da.ISO8859-1/man1/vimtutor.1.gz
+%%NLS%%share/man/da.UTF-8/man1/rview.1.gz
+%%NLS%%share/man/da.UTF-8/man1/rvim.1.gz
+%%NLS%%share/man/da.UTF-8/man1/vim.1.gz
+%%NLS%%share/man/da.UTF-8/man1/vimdiff.1.gz
+%%NLS%%share/man/da.UTF-8/man1/vimtutor.1.gz
+%%NLS%%share/man/da/man1/rview.1.gz
+%%NLS%%share/man/da/man1/rvim.1.gz
+%%NLS%%share/man/da/man1/vim.1.gz
+%%NLS%%share/man/da/man1/vimdiff.1.gz
+%%NLS%%share/man/da/man1/vimtutor.1.gz
+%%NLS%%share/man/de.ISO8859-1/man1/rview.1.gz
+%%NLS%%share/man/de.ISO8859-1/man1/rvim.1.gz
+%%NLS%%share/man/de.ISO8859-1/man1/vim.1.gz
+%%NLS%%share/man/de.UTF-8/man1/rview.1.gz
+%%NLS%%share/man/de.UTF-8/man1/rvim.1.gz
+%%NLS%%share/man/de.UTF-8/man1/vim.1.gz
+%%NLS%%share/man/de/man1/rview.1.gz
+%%NLS%%share/man/de/man1/rvim.1.gz
+%%NLS%%share/man/de/man1/vim.1.gz
+%%NLS%%share/man/fr.ISO8859-1/man1/evim.1.gz
+%%NLS%%share/man/fr.ISO8859-1/man1/rview.1.gz
+%%NLS%%share/man/fr.ISO8859-1/man1/rvim.1.gz
+%%NLS%%share/man/fr.ISO8859-1/man1/vim.1.gz
+%%NLS%%share/man/fr.ISO8859-1/man1/vimdiff.1.gz
+%%NLS%%share/man/fr.ISO8859-1/man1/vimtutor.1.gz
+%%NLS%%share/man/fr.UTF-8/man1/evim.1.gz
+%%NLS%%share/man/fr.UTF-8/man1/rview.1.gz
+%%NLS%%share/man/fr.UTF-8/man1/rvim.1.gz
+%%NLS%%share/man/fr.UTF-8/man1/vim.1.gz
+%%NLS%%share/man/fr.UTF-8/man1/vimdiff.1.gz
+%%NLS%%share/man/fr.UTF-8/man1/vimtutor.1.gz
+%%NLS%%share/man/fr/man1/evim.1.gz
+%%NLS%%share/man/fr/man1/rview.1.gz
+%%NLS%%share/man/fr/man1/rvim.1.gz
+%%NLS%%share/man/fr/man1/vim.1.gz
+%%NLS%%share/man/fr/man1/vimdiff.1.gz
+%%NLS%%share/man/fr/man1/vimtutor.1.gz
+%%NLS%%share/man/it.ISO8859-1/man1/evim.1.gz
+%%NLS%%share/man/it.ISO8859-1/man1/rview.1.gz
+%%NLS%%share/man/it.ISO8859-1/man1/rvim.1.gz
+%%NLS%%share/man/it.ISO8859-1/man1/vim.1.gz
+%%NLS%%share/man/it.ISO8859-1/man1/vimdiff.1.gz
+%%NLS%%share/man/it.ISO8859-1/man1/vimtutor.1.gz
+%%NLS%%share/man/it.UTF-8/man1/evim.1.gz
+%%NLS%%share/man/it.UTF-8/man1/rview.1.gz
+%%NLS%%share/man/it.UTF-8/man1/rvim.1.gz
+%%NLS%%share/man/it.UTF-8/man1/vim.1.gz
+%%NLS%%share/man/it.UTF-8/man1/vimdiff.1.gz
+%%NLS%%share/man/it.UTF-8/man1/vimtutor.1.gz
+%%NLS%%share/man/it/man1/evim.1.gz
+%%NLS%%share/man/it/man1/rview.1.gz
+%%NLS%%share/man/it/man1/rvim.1.gz
+%%NLS%%share/man/it/man1/vim.1.gz
+%%NLS%%share/man/it/man1/vimdiff.1.gz
+%%NLS%%share/man/it/man1/vimtutor.1.gz
+%%NLS%%share/man/ja/man1/evim.1.gz
+%%NLS%%share/man/ja/man1/rview.1.gz
+%%NLS%%share/man/ja/man1/rvim.1.gz
+%%NLS%%share/man/ja/man1/vim.1.gz
+%%NLS%%share/man/ja/man1/vimdiff.1.gz
+%%NLS%%share/man/ja/man1/vimtutor.1.gz
+share/man/man1/evim.1.gz
+share/man/man1/rview.1.gz
+share/man/man1/rvim.1.gz
+share/man/man1/vim.1.gz
+share/man/man1/vimdiff.1.gz
+share/man/man1/vimtutor.1.gz
+%%NLS%%share/man/pl.ISO8859-2/man1/evim.1.gz
+%%NLS%%share/man/pl.ISO8859-2/man1/rview.1.gz
+%%NLS%%share/man/pl.ISO8859-2/man1/rvim.1.gz
+%%NLS%%share/man/pl.ISO8859-2/man1/vim.1.gz
+%%NLS%%share/man/pl.ISO8859-2/man1/vimdiff.1.gz
+%%NLS%%share/man/pl.ISO8859-2/man1/vimtutor.1.gz
+%%NLS%%share/man/pl.UTF-8/man1/evim.1.gz
+%%NLS%%share/man/pl.UTF-8/man1/rview.1.gz
+%%NLS%%share/man/pl.UTF-8/man1/rvim.1.gz
+%%NLS%%share/man/pl.UTF-8/man1/vim.1.gz
+%%NLS%%share/man/pl.UTF-8/man1/vimdiff.1.gz
+%%NLS%%share/man/pl.UTF-8/man1/vimtutor.1.gz
+%%NLS%%share/man/pl/man1/evim.1.gz
+%%NLS%%share/man/pl/man1/rview.1.gz
+%%NLS%%share/man/pl/man1/rvim.1.gz
+%%NLS%%share/man/pl/man1/vim.1.gz
+%%NLS%%share/man/pl/man1/vimdiff.1.gz
+%%NLS%%share/man/pl/man1/vimtutor.1.gz
+%%NLS%%share/man/ru.KOI8-R/man1/evim.1.gz
+%%NLS%%share/man/ru.KOI8-R/man1/rview.1.gz
+%%NLS%%share/man/ru.KOI8-R/man1/rvim.1.gz
+%%NLS%%share/man/ru.KOI8-R/man1/vim.1.gz
+%%NLS%%share/man/ru.KOI8-R/man1/vimdiff.1.gz
+%%NLS%%share/man/ru.KOI8-R/man1/vimtutor.1.gz
+%%NLS%%share/man/ru.UTF-8/man1/evim.1.gz
+%%NLS%%share/man/ru.UTF-8/man1/rview.1.gz
+%%NLS%%share/man/ru.UTF-8/man1/rvim.1.gz
+%%NLS%%share/man/ru.UTF-8/man1/vim.1.gz
+%%NLS%%share/man/ru.UTF-8/man1/vimdiff.1.gz
+%%NLS%%share/man/ru.UTF-8/man1/vimtutor.1.gz
+%%NLS%%share/man/tr.ISO8859-9/man1/evim.1.gz
+%%NLS%%share/man/tr.ISO8859-9/man1/rview.1.gz
+%%NLS%%share/man/tr.ISO8859-9/man1/rvim.1.gz
+%%NLS%%share/man/tr.ISO8859-9/man1/vim.1.gz
+%%NLS%%share/man/tr.ISO8859-9/man1/vimdiff.1.gz
+%%NLS%%share/man/tr.ISO8859-9/man1/vimtutor.1.gz
+%%NLS%%share/man/tr.UTF-8/man1/evim.1.gz
+%%NLS%%share/man/tr.UTF-8/man1/rview.1.gz
+%%NLS%%share/man/tr.UTF-8/man1/rvim.1.gz
+%%NLS%%share/man/tr.UTF-8/man1/vim.1.gz
+%%NLS%%share/man/tr.UTF-8/man1/vimdiff.1.gz
+%%NLS%%share/man/tr.UTF-8/man1/vimtutor.1.gz
+%%NLS%%share/man/tr/man1/evim.1.gz
+%%NLS%%share/man/tr/man1/rview.1.gz
+%%NLS%%share/man/tr/man1/rvim.1.gz
+%%NLS%%share/man/tr/man1/vim.1.gz
+%%NLS%%share/man/tr/man1/vimdiff.1.gz
+%%NLS%%share/man/tr/man1/vimtutor.1.gz
diff --git a/editors/vim-classic/pkg-plist-tiny b/editors/vim-classic/pkg-plist-tiny
new file mode 100644
index 000000000000..70f168b6c2bb
--- /dev/null
+++ b/editors/vim-classic/pkg-plist-tiny
@@ -0,0 +1,2 @@
+bin/vim
+share/man/man1/vim.1.gz
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.