development/ex-vi: Added support for large terminals.

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
B. Watson 2015-04-03 12:35:57 +07:00 committed by Willy Sudiarto Raharjo
parent ee59266f8f
commit ab0ffaa245
2 changed files with 51 additions and 2 deletions

View file

@ -9,3 +9,25 @@ After installing, either log out & back in, or "source
/etc/profile.d/ex-vi.sh". To temporarily disable the scripts, remove
their execute bits. Users can always set PATH and MANPATH in their own
dotfiles, of course.
In visual mode (vi or :vi from ex), ex-vi has compiled-in values for
the maximum terminal size, in columns and rows. This build will support
terminals up to 320x200 characters by default. If you get 'Terminal too
wide' errors, make your terminal as large as possible and rebuild ex-vi
from within it, with a command like:
TUBECOLS=$COLUMNS TUBELINES=$LINES ./ex-vi.SlackBuild
Exceeding the maximum line height just means vi will ignore the extra
lines at the bottom of the screen. Note that increasing these values
causes vi to use more memory, but on a fairly modern system it shouldn't
be too much. If you're building for a memory-poor system (embedded, or old
hardware), you could save memory with e.g. TUBECOLS=80 TUBELINES=25 or so.
If you *really* need to run vi without 'Terminal too wide', you can
export e.g. COLUMNS=80 in the environment, and vi will only use part of
the terminal. The COLUMNS variable gets reset whenever an X terminal is
resized (at least for most X terminal emulators).
Thanks to zacts on Freenode IRC ##slackware for pointing out the terminal
size limitation.

View file

@ -6,9 +6,30 @@
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# 20150331 bkw: build 2
# Increase TUBE* constants in config.h to allow for larger terminals.
# vi has hardcoded terminal size limits of 160 columns and 100 lines.
# These days it's not unusual to have a 1920x1080 framenbuffer with 8x16
# console font, for 240x67 characters. Increase limits here. Doing so uses
# TUBESIZE bytes of memory at startup, and another TUBESIZE bytes every
# time you switch from ex mode to visual mode, so let's not get too crazy
# with the cheez whiz. The real problem is TUBECOLS (the width): if the
# terminal exceeds this, you get 'Terminal too wide' and are stuck in ex
# mode. Exceeding TUBELINES just means vi ignores the extra lines at the
# bottom of the terminal.
# Default to 320x200, which would be enough for a 8x16 console font on a
# WQXGA 2560x1600 display, or a 2/3-width full-height X terminal on 4K
# UHDTV (3840x2160). If I don't make this configurable, someone will
# need it to be. So:
TUBECOLS=${TUBECOLS:-320}
TUBELINES=${TUBELINES:-200}
# We now return you to your regularly scheduled programming:
PRGNAM=ex-vi
VERSION=${VERSION:-050325}
BUILD=${BUILD:-1}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
@ -55,10 +76,16 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
# don't install the binary with the sticky bit set. It doesn't do anything
# Don't install the binary with the sticky bit set. It doesn't do anything
# on Linux, and might set off alarm bells.
sed -i 's,-m 1755,-m 755,' Makefile
# Apologies for the fugly sed code here. It works, though.
sed -i -e "/^#define/s,\\(TUBESIZE *\\).*$,\\1 $(( TUBECOLS * TUBELINES ))," \
-e "/^#define/s,\\(TUBECOLS *\\).*$,\\1 $TUBECOLS," \
-e "/^#define/s,\\(TUBELINES *\\).*$,\\1 $TUBELINES," \
config.h
# To avoid conflicts with Slackware's elvis and/or vim, we install to /opt and
# include a login script to set PATH and MANPATH.
make all install \