|  | @@ -2,80 +2,279 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # Script for using ViM as a PAGER.
 | 
	
		
			
				|  |  |  # Based on Bram's less.sh.
 | 
	
		
			
				|  |  | -# Version 1.4
 | 
	
		
			
				|  |  | +# Version 1.5.7
 | 
	
		
			
				|  |  |  # git://github.com/rkitover/vimpager.git
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -file="$@"
 | 
	
		
			
				|  |  | -if [ -z "$file" ]; then file="-"; fi
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -if uname -s | grep -iq cygwin; then
 | 
	
		
			
				|  |  | -    cygwin=1
 | 
	
		
			
				|  |  | -elif uname -s | grep -iq linux; then
 | 
	
		
			
				|  |  | -    linux=1
 | 
	
		
			
				|  |  | -elif uname -s | grep -iq sunos; then
 | 
	
		
			
				|  |  | -    solaris=1
 | 
	
		
			
				|  |  | -else
 | 
	
		
			
				|  |  | -    bsd=1
 | 
	
		
			
				|  |  | +# Just pass through if not on a tty
 | 
	
		
			
				|  |  | +if [ ! -t 1 ]; then
 | 
	
		
			
				|  |  | +	exec cat "$@"
 | 
	
		
			
				|  |  |  fi
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +case `uname -s` in
 | 
	
		
			
				|  |  | +	Linux) linux=1 ;;
 | 
	
		
			
				|  |  | +	SunOS) solaris=1 ;;
 | 
	
		
			
				|  |  | +        Darwin) osx=1; bsd=1 ;;
 | 
	
		
			
				|  |  | +	CYGWIN*) cygwin=1 ;;
 | 
	
		
			
				|  |  | +	MINGW*) msys=1 ;;
 | 
	
		
			
				|  |  | +	*) bsd=1 ;;
 | 
	
		
			
				|  |  | +esac
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  less_vim() {
 | 
	
		
			
				|  |  | -    vim -R \
 | 
	
		
			
				|  |  | -    -c 'let no_plugin_maps = 1' \
 | 
	
		
			
				|  |  | -    -c 'set scrolloff=999' \
 | 
	
		
			
				|  |  | -    -c 'runtime! macros/less.vim' \
 | 
	
		
			
				|  |  | -    -c 'set foldlevel=999' \
 | 
	
		
			
				|  |  | -    -c 'set mouse=h' \
 | 
	
		
			
				|  |  | -    -c 'set nonu' \
 | 
	
		
			
				|  |  | -    -c 'nmap <ESC>u :nohlsearch<cr>' \
 | 
	
		
			
				|  |  | -    "$@"
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +	if [ -z "$msys" ]; then
 | 
	
		
			
				|  |  | +		(vim --noplugin -X -e -c 'let vimpager_use_gvim' -c q < /dev/tty) \
 | 
	
		
			
				|  |  | +		   | cut -d\# -f2 | head -1 | awk '$1 ~ /^1/ {t=1} END { exit 1-t }' \
 | 
	
		
			
				|  |  | +		   && use_gvim=1
 | 
	
		
			
				|  |  | +	else
 | 
	
		
			
				|  |  | +		# The above doesn't work on msys for some reason, so we use
 | 
	
		
			
				|  |  | +		# grep.
 | 
	
		
			
				|  |  | +		use_gvim=`grep '^[ \t]*\<let[ \t]\+vimpager_use_gvim[ \t]\+=[ \t]\+1' ~/_vimrc 2>/dev/null | head -1`
 | 
	
		
			
				|  |  | +		[ -n "$use_gvim" ] || use_gvim=`grep '^[ \t]*\<let[ \t]\+vimpager_use_gvim[ \t]\+=[ \t]\+1' ~/.vimrc 2>/dev/null | head -1`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		# msys may not be installed with an msys vim, and if we're
 | 
	
		
			
				|  |  | +		# not in a real console the native Windows vim will not
 | 
	
		
			
				|  |  | +		# work, so we have to use gvim.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		if [ "x$TERM" != "xdumb" -a "x$TERM" != "xcygwin" -a "x$TERM" != "x" ]; then
 | 
	
		
			
				|  |  | +			if [ \( ! -x /bin/vim \) -a \( ! -x /usr/bin/vim \) -a \( ! -x /usr/local/bin/vim \) ]; then
 | 
	
		
			
				|  |  | +				use_gvim=1
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +		fi
 | 
	
		
			
				|  |  | +	fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if [ -n "$use_gvim" ]; then
 | 
	
		
			
				|  |  | +                if [ -n "$osx" ]; then
 | 
	
		
			
				|  |  | +			if [ -z "$SSH_CONNECTION" ] && command -v mvim >/dev/null; then
 | 
	
		
			
				|  |  | +				vim_cmd="mvim -R"
 | 
	
		
			
				|  |  | +			else
 | 
	
		
			
				|  |  | +				vim_cmd="vim -X -R"
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +		elif [ -n "$cygwin" ]; then
 | 
	
		
			
				|  |  | +			if command -v gvim >/dev/null; then
 | 
	
		
			
				|  |  | +				# The Cygwin gvim uses X
 | 
	
		
			
				|  |  | +				if ldd `command -v gvim` 2>/dev/null \
 | 
	
		
			
				|  |  | +				   | awk '$1 ~ /cygwin/ {t=1} END { exit 1-t }'; then
 | 
	
		
			
				|  |  | +					if [ -z "$DISPLAY" ]; then
 | 
	
		
			
				|  |  | +						vim_cmd="vim -X -R"
 | 
	
		
			
				|  |  | +					else
 | 
	
		
			
				|  |  | +						vim_cmd='gvim -R'
 | 
	
		
			
				|  |  | +					fi
 | 
	
		
			
				|  |  | +				elif [ -z "$SSH_CONNECTION" ]; then
 | 
	
		
			
				|  |  | +					vim_cmd='gvim -R'
 | 
	
		
			
				|  |  | +				else
 | 
	
		
			
				|  |  | +					vim_cmd="vim -X -R"
 | 
	
		
			
				|  |  | +				fi
 | 
	
		
			
				|  |  | +			else
 | 
	
		
			
				|  |  | +				vim_cmd="vim -X -R"
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +		elif [ -n "$msys" ]; then
 | 
	
		
			
				|  |  | +			if [ -z "$SSH_CONNECTION" ] && command -v gvim >/dev/null; then
 | 
	
		
			
				|  |  | +				vim_cmd='gvim -R'
 | 
	
		
			
				|  |  | +			else
 | 
	
		
			
				|  |  | +				vim_cmd="vim -X -R"
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +		elif [ -z "$DISPLAY" ]; then
 | 
	
		
			
				|  |  | +			vim_cmd='vim -X -R'
 | 
	
		
			
				|  |  | +		else
 | 
	
		
			
				|  |  | +			if command -v gvim >/dev/null; then
 | 
	
		
			
				|  |  | +				vim_cmd='gvim -R'
 | 
	
		
			
				|  |  | +			else
 | 
	
		
			
				|  |  | +				vim_cmd="vim -X -R"
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +		fi
 | 
	
		
			
				|  |  | +	else
 | 
	
		
			
				|  |  | +	        vim_cmd='vim -X -R'
 | 
	
		
			
				|  |  | +	fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	rm -f gvim.exe.stackdump # for cygwin gvim, which can be part of vim
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	vimrc=""
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if [ -n "$VIMPAGER_RC" ]; then
 | 
	
		
			
				|  |  | +		vimrc=$VIMPAGER_RC
 | 
	
		
			
				|  |  | +	elif [ -f ~/.vimpagerrc ]; then
 | 
	
		
			
				|  |  | +		vimrc=~/.vimpagerrc
 | 
	
		
			
				|  |  | +	elif [ -f ~/_vimpagerrc ]; then
 | 
	
		
			
				|  |  | +		vimrc=~/_vimpagerrc
 | 
	
		
			
				|  |  | +	fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	case $vim_cmd in
 | 
	
		
			
				|  |  | +		vim*)
 | 
	
		
			
				|  |  | +			if [ -n "$vimrc" ]; then
 | 
	
		
			
				|  |  | +				$vim_cmd \
 | 
	
		
			
				|  |  | +				--cmd 'let vimpager=1' \
 | 
	
		
			
				|  |  | +				-u $vimrc \
 | 
	
		
			
				|  |  | +				-c 'set scrolloff=5 | runtime! macros/less.vim | set foldlevel=999 | set nonu' \
 | 
	
		
			
				|  |  | +				-c 'nmap <ESC>u :nohlsearch<cr>' \
 | 
	
		
			
				|  |  | +				"${@:--}"
 | 
	
		
			
				|  |  | +			else
 | 
	
		
			
				|  |  | +				$vim_cmd \
 | 
	
		
			
				|  |  | +				--cmd 'let vimpager=1' \
 | 
	
		
			
				|  |  | +				-c 'set scrolloff=5 | runtime! macros/less.vim | set foldlevel=999 | set nonu' \
 | 
	
		
			
				|  |  | +				-c 'nmap <ESC>u :nohlsearch<cr>' \
 | 
	
		
			
				|  |  | +				"${@:--}"
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +			;;
 | 
	
		
			
				|  |  | +		*) # gvim or mvim GUI
 | 
	
		
			
				|  |  | +			if [ -f ~/.gvimrc ]; then
 | 
	
		
			
				|  |  | +				gvimrc=~/.gvimrc
 | 
	
		
			
				|  |  | +			elif [ -f ~/_gvimrc ]; then
 | 
	
		
			
				|  |  | +				gvimrc=~/_gvimrc
 | 
	
		
			
				|  |  | +			elif [ -n "$cygwin" ]; then
 | 
	
		
			
				|  |  | +# this from Corinna at http://cygwin.com/ml/cygwin/2010-08/msg00246.html
 | 
	
		
			
				|  |  | +				_sid=$(grep "^$USER:" /etc/passwd | sed -e 's/[^:]*:[^:]*:[^:]*:[^:]*:[^:]*,\(S-1-5-[^:]*\):.*/\1/')
 | 
	
		
			
				|  |  | +				_prof=$(cat /proc/registry/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows\ NT/CurrentVersion/ProfileList/${_sid}/ProfileImagePath)
 | 
	
		
			
				|  |  | +				
 | 
	
		
			
				|  |  | +				if [ -f "${_prof}/_gvimrc" ]; then
 | 
	
		
			
				|  |  | +					gvimrc="${_prof}/_gvimrc"
 | 
	
		
			
				|  |  | +				elif [ -f "${_prof}/.gvimrc" ]; then
 | 
	
		
			
				|  |  | +					gvimrc="${_prof}/.gvimrc"
 | 
	
		
			
				|  |  | +				fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				unset _sid
 | 
	
		
			
				|  |  | +				unset _prof
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			[ -n "$gvimrc" ] && colors=`grep guifg $gvimrc 2>/dev/null | head -1`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			# Check if the user maximized the window in ~/_gvimrc on Win32, if
 | 
	
		
			
				|  |  | +			# so restore on startup.
 | 
	
		
			
				|  |  | +			if [ -n "$gvimrc" -a \( -n "$cygwin" -o -n "$msys" \) ]; then
 | 
	
		
			
				|  |  | +				simalt=`grep simalt $gvimrc 2>/dev/null | head -1`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				if [ -n "$simalt" ]; then
 | 
	
		
			
				|  |  | +					restore="simalt ~r"
 | 
	
		
			
				|  |  | +				fi
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			if command -v tput > /dev/null; then
 | 
	
		
			
				|  |  | +				# this is the only way it works on Cygwin
 | 
	
		
			
				|  |  | +				tput cols  > /tmp/vimpager_cols_$$
 | 
	
		
			
				|  |  | +				tput lines > /tmp/vimpager_lines_$$
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				cols=`cat /tmp/vimpager_cols_$$`
 | 
	
		
			
				|  |  | +				lines=`cat /tmp/vimpager_lines_$$`
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -do_ps() {
 | 
	
		
			
				|  |  | -    if [ $solaris ]; then
 | 
	
		
			
				|  |  | -        ps -u `id -u` -o pid,comm=
 | 
	
		
			
				|  |  | -    elif [ $bsd ]; then
 | 
	
		
			
				|  |  | -        ps -U `id -u` -o pid,comm=
 | 
	
		
			
				|  |  | -    else
 | 
	
		
			
				|  |  | -        ps fuxw
 | 
	
		
			
				|  |  | -    fi
 | 
	
		
			
				|  |  | +				rm -f /tmp/vimpager_cols_$$ /tmp/vimpager_lines_$$
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			# msys has no tput, this doesn't work on Cygwin by the way
 | 
	
		
			
				|  |  | +			if [ -z "$cols" ] && command -v bash >/dev/null; then
 | 
	
		
			
				|  |  | +				cols=`bash -i -c 'echo $COLUMNS'`
 | 
	
		
			
				|  |  | +				lines=`bash -i -c 'echo $LINES'`
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			# If we are unable to detect lines/columns, maximize
 | 
	
		
			
				|  |  | +			# the window.
 | 
	
		
			
				|  |  | +			if [ -z "$cols" ]; then
 | 
	
		
			
				|  |  | +				cols=999
 | 
	
		
			
				|  |  | +				lines=999
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			if [ -n "$vimrc" ]; then
 | 
	
		
			
				|  |  | +				$vim_cmd \
 | 
	
		
			
				|  |  | +				--cmd 'let vimpager=1' \
 | 
	
		
			
				|  |  | +				-u $vimrc \
 | 
	
		
			
				|  |  | +				-c 'set scrolloff=5 | runtime! macros/less.vim | set foldlevel=999 | set nonu' \
 | 
	
		
			
				|  |  | +				-c 'nmap <ESC>u :nohlsearch<cr>' \
 | 
	
		
			
				|  |  | +				-c "${colors:-echo}" \
 | 
	
		
			
				|  |  | +				-c "${restore:-echo}" \
 | 
	
		
			
				|  |  | +				-c "set lines=$lines | set columns=$cols" \
 | 
	
		
			
				|  |  | +				"${@:--}" &
 | 
	
		
			
				|  |  | +			else
 | 
	
		
			
				|  |  | +				$vim_cmd \
 | 
	
		
			
				|  |  | +				--cmd 'let vimpager=1' \
 | 
	
		
			
				|  |  | +				-c 'set scrolloff=5 | runtime! macros/less.vim | set foldlevel=999 | set nonu' \
 | 
	
		
			
				|  |  | +				-c 'nmap <ESC>u :nohlsearch<cr>' \
 | 
	
		
			
				|  |  | +				-c "${colors:-echo}" \
 | 
	
		
			
				|  |  | +				-c "${restore:-echo}" \
 | 
	
		
			
				|  |  | +				-c "set lines=$lines | set columns=$cols" \
 | 
	
		
			
				|  |  | +				"${@:--}" &
 | 
	
		
			
				|  |  | +			fi
 | 
	
		
			
				|  |  | +			;;
 | 
	
		
			
				|  |  | +	esac
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	rm -f gvim.exe.stackdump # for cygwin gvim, which can be part of vim
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -pproc() {
 | 
	
		
			
				|  |  | -    if [ $linux ]; then
 | 
	
		
			
				|  |  | -        ps -p $1 -o comm=
 | 
	
		
			
				|  |  | -    elif [ $cygwin ]; then
 | 
	
		
			
				|  |  | -        ps -p $1 | sed -e 's/^I/ /' | grep -v PID
 | 
	
		
			
				|  |  | -    else
 | 
	
		
			
				|  |  | -        ps -p $1 -o comm= | grep -v PID
 | 
	
		
			
				|  |  | -    fi
 | 
	
		
			
				|  |  | +awk_pstree() {
 | 
	
		
			
				|  |  | +	awk -v mypid=$1 '{
 | 
	
		
			
				|  |  | +		cmd[$1]=$3
 | 
	
		
			
				|  |  | +		ppid[$1]=$2
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	END {
 | 
	
		
			
				|  |  | +		while (mypid != 1 && cmd[mypid]) {
 | 
	
		
			
				|  |  | +			ptree=mypid " " cmd[mypid] "\n" ptree
 | 
	
		
			
				|  |  | +			mypid=ppid[mypid]
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		print ptree
 | 
	
		
			
				|  |  | +	}'
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -ppid() {
 | 
	
		
			
				|  |  | -    if [ $linux ]; then
 | 
	
		
			
				|  |  | -        ps -p $1 -o ppid=
 | 
	
		
			
				|  |  | -    elif [ $cygwin ]; then
 | 
	
		
			
				|  |  | -        ps -p $1 | sed -e 's/^I/ /' | grep -v PID | awk '{print $2}'
 | 
	
		
			
				|  |  | -    else
 | 
	
		
			
				|  |  | -        ps -p $1 -o ppid= | grep -v PID
 | 
	
		
			
				|  |  | -    fi
 | 
	
		
			
				|  |  | +do_ptree() {
 | 
	
		
			
				|  |  | +	if [ -n "$solaris" ]; then
 | 
	
		
			
				|  |  | +		# Tested on Solaris 8 and 10
 | 
	
		
			
				|  |  | +		ptree $$
 | 
	
		
			
				|  |  | +	elif [ -n "$cygwin" -o -n "$msys" ]; then
 | 
	
		
			
				|  |  | +		ps | awk '{ print $1 "\t" $2 "\t" $NF }' | awk_pstree $$
 | 
	
		
			
				|  |  | +	else
 | 
	
		
			
				|  |  | +		# Tested on Linux and OS X
 | 
	
		
			
				|  |  | +		ps awo pid=,ppid=,comm= | awk_pstree $$
 | 
	
		
			
				|  |  | +	fi
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # Check if called from man, perldoc or pydoc
 | 
	
		
			
				|  |  | -if do_ps | grep -q '\(py\(thon\|doc\|doc2\)\|man\|perl\(doc\)\?\([0-9.]*\)\?\)\>'; then
 | 
	
		
			
				|  |  | -    proc=$$
 | 
	
		
			
				|  |  | -    while next_parent=`ppid $proc` && [ $next_parent != 1 ]; do
 | 
	
		
			
				|  |  | -        if pproc $next_parent | grep -q 'man\>'; then
 | 
	
		
			
				|  |  | -            cat $file | sed -e 's/\[[^m]*m//g' | sed -e 's/.//g' | less_vim -c 'set ft=man' -; exit
 | 
	
		
			
				|  |  | -        elif pproc $next_parent | grep -q 'py\(thon\|doc\|doc2\)\>'; then
 | 
	
		
			
				|  |  | -            cat $file | sed -e 's/\[[^m]*m//g' | sed -e 's/.//g' | less_vim -c 'set ft=man' -; exit
 | 
	
		
			
				|  |  | -        elif pproc $next_parent | grep -q 'perl\(doc\)\?\([0-9.]*\)\?\>'; then
 | 
	
		
			
				|  |  | -            cat $file | sed -e 's/.//g' | less_vim -c 'set ft=man' -; exit
 | 
	
		
			
				|  |  | -        fi
 | 
	
		
			
				|  |  | -        proc=$next_parent
 | 
	
		
			
				|  |  | -    done
 | 
	
		
			
				|  |  | +if do_ptree | awk '$2 ~ /(^|\/)(man|perl(doc)?([0-9.]*)?|py(thon|doc|doc2))/ {t=1} END { exit 1-t }'; then
 | 
	
		
			
				|  |  | +	extra_cmd="set ft=man"
 | 
	
		
			
				|  |  |  fi
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -less_vim "$file"
 | 
	
		
			
				|  |  | +trap "rm -rf /tmp/vimpager_$$" HUP INT QUIT ILL TRAP KILL BUS TERM
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +mkdir /tmp/vimpager_$$
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +filename=${@:-stdin}
 | 
	
		
			
				|  |  | +filename=`echo "$filename" | tr '/' '_'`
 | 
	
		
			
				|  |  | +filename="/tmp/vimpager_${$}/$filename"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +case "$@" in
 | 
	
		
			
				|  |  | +	*.gz) gunzip -c "$@" | sed -e 's/\[[^m]*m//g' -e 's/.//g' > "$filename" ;;
 | 
	
		
			
				|  |  | +	*.Z) uncompress -c "$@" | sed -e 's/\[[^m]*m//g' -e 's/.//g' > "$filename" ;;
 | 
	
		
			
				|  |  | +	*) sed -e 's/\[[^m]*m//g' -e 's/.//g' "$@" > "$filename" ;;
 | 
	
		
			
				|  |  | +esac
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# if file is zero length, exit immediately
 | 
	
		
			
				|  |  | +if [ ! -s "$filename" ]; then
 | 
	
		
			
				|  |  | +	exit
 | 
	
		
			
				|  |  | +fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# On cygwin it might be the win32 gvim, but windows paths work for cygwin
 | 
	
		
			
				|  |  | +# vim just fine as well.
 | 
	
		
			
				|  |  | +if [ -n "$cygwin" ]; then
 | 
	
		
			
				|  |  | +	filename=`cygpath -w "$filename"`
 | 
	
		
			
				|  |  | +fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +less_vim -c "${extra_cmd:-echo}" "$filename" </dev/tty
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# terminal vim on OSX can screw up the terminal
 | 
	
		
			
				|  |  | +# (but doesn't anymore for some reason...)
 | 
	
		
			
				|  |  | +#if [ -n "$osx" ]; then
 | 
	
		
			
				|  |  | +#	case $vim_cmd in
 | 
	
		
			
				|  |  | +#		vim*)
 | 
	
		
			
				|  |  | +#			reset
 | 
	
		
			
				|  |  | +#			clear
 | 
	
		
			
				|  |  | +#			;;
 | 
	
		
			
				|  |  | +#	esac
 | 
	
		
			
				|  |  | +#fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Give gvim/mvim time to open the file.
 | 
	
		
			
				|  |  | +# On Cygwin we must also wait for the process to exit before the file can
 | 
	
		
			
				|  |  | +# be deleted.
 | 
	
		
			
				|  |  | +(
 | 
	
		
			
				|  |  | +	while [ -d /tmp/vimpager_$$ ]; do
 | 
	
		
			
				|  |  | +		sleep 3
 | 
	
		
			
				|  |  | +		rm -rf /tmp/vimpager_$$ 2>/dev/null
 | 
	
		
			
				|  |  | +		rm -f gvim.exe.stackdump 2>/dev/null
 | 
	
		
			
				|  |  | +	done
 | 
	
		
			
				|  |  | +) &
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # CONTRIBUTORS:
 | 
	
		
			
				|  |  |  #
 | 
	
	
		
			
				|  | @@ -85,3 +284,8 @@ less_vim "$file"
 | 
	
		
			
				|  |  |  # Perry Hargrave
 | 
	
		
			
				|  |  |  # Koen Smits
 | 
	
		
			
				|  |  |  # Ivan S. Freitas <ivansichfreitas@gmail.com>
 | 
	
		
			
				|  |  | +# Wout Mertens (Solaris compatibility, less processes)
 | 
	
		
			
				|  |  | +# Jacobo de Vera (add -X option for faster startup)
 | 
	
		
			
				|  |  | +# Damien Pollet <damien.pollet@gmail.com>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# vim:noet ts=8 sts=8 sw=8:
 |