From 57daf35a76506de41dfaf94af78376717943957b Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sun, 14 May 2017 22:58:25 +1200 Subject: Move exm(1df) test into EDITOR selection Merely checking for vim(1) is a poor test; we specifically need to know if the ex(1) implementation is Vim, so test it while making the EDITOR decision. --- bin/exm.sh | 13 +++++-------- sh/profile.d/editor.sh | 17 +++++++++++++---- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/bin/exm.sh b/bin/exm.sh index 25e3006f..378b5baf 100644 --- a/bin/exm.sh +++ b/bin/exm.sh @@ -1,12 +1,9 @@ # Prevent Vim's ex(1) implementation from clearing the screen if [ -t 0 ] ; then - ver=$(ex --version 2>/dev/null | awk 'NR==1{print $1;exit}') - case $ver in - # Lie to Vim; tell it it's a dumb terminal, and that its required "cm" - # feature is invoked with a carriage return. - VIM) - cmd=$(printf 'set t_cm=\r|') - set -- -T dumb --cmd "${cmd%|}" "$@" ;; - esac + + # Lie to Vim; tell it it's a dumb terminal, and that its required "cm" + # feature is invoked with a carriage return. + cmd=$(printf 'set t_cm=\r|') + set -- -T dumb --cmd "${cmd%|}" "$@" fi exec ex "$@" diff --git a/sh/profile.d/editor.sh b/sh/profile.d/editor.sh index 307879fe..debb93b6 100644 --- a/sh/profile.d/editor.sh +++ b/sh/profile.d/editor.sh @@ -3,12 +3,21 @@ if command -v ed >/dev/null 2>&1 ; then EDITOR=ed -# Failing that, if we have both vim(1) and exm(1df) in our $PATH, use the -# latter to work around Vim's ex mode screen-clearing -elif { command -v vim && command -v exm ; } >/dev/null 2>&1 ; then +# Failing that, if the system's implementation of ex(1) looks like Vim and we +# have exm(1df) in our $PATH, use the latter to work around Vim's ex mode +# screen-clearing +elif ( + command -v ex >/dev/null 2>&1 || exit 1 + command -v exm >/dev/null 2>&1 || exit 1 + ver=$(ex --version 2>/dev/null | awk 'NR==1{print $1;exit}') + case $ver in + (VIM) exit 0 ;; + (*) exit 1 ;; + esac +) >/dev/null 2>&1 ; then EDITOR=exm -# Otherwise, just call ex(1) directly +# Otherwise, we can just call ex(1) directly else EDITOR=ex fi -- cgit v1.2.3