diff options
-rw-r--r-- | development/ex-vi/README_Slackware.txt | 22 | ||||
-rw-r--r-- | development/ex-vi/ex-vi.SlackBuild | 31 |
2 files changed, 51 insertions, 2 deletions
diff --git a/development/ex-vi/README_Slackware.txt b/development/ex-vi/README_Slackware.txt index 034205d91d..656d52fb3f 100644 --- a/development/ex-vi/README_Slackware.txt +++ b/development/ex-vi/README_Slackware.txt @@ -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. diff --git a/development/ex-vi/ex-vi.SlackBuild b/development/ex-vi/ex-vi.SlackBuild index 9d7d5324fe..48963c40b4 100644 --- a/development/ex-vi/ex-vi.SlackBuild +++ b/development/ex-vi/ex-vi.SlackBuild @@ -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 \ |