mirror of
				git://git.code.sf.net/p/cdesktopenv/code
				synced 2025-03-09 15:50:02 +00:00 
			
		
		
		
	added documentation pages from Dave Korn's old web site
This commit is contained in:
		
							parent
							
								
									82a89f64a9
								
							
						
					
					
						commit
						a30e7b7fa9
					
				
					 20 changed files with 2777 additions and 0 deletions
				
			
		
							
								
								
									
										111
									
								
								docs/ksh/functions/dirs.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								docs/ksh/functions/dirs.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,111 @@ | |||
| # | ||||
| # DIRECTORY MANIPULATION FUNCTIONS PUSHD, POPD AND DIRS | ||||
| # | ||||
| # Uses global parameters _push_max _push_top _push_stack | ||||
| integer _push_max=100 _push_top=100 | ||||
| # Display directory stack -- $HOME displayed as ~ | ||||
| function dirs | ||||
| { | ||||
|     typeset dir="${PWD#$HOME/}" | ||||
|     case $dir in | ||||
|     $HOME) | ||||
|         dir=\~ | ||||
|         ;; | ||||
|     /*) ;; | ||||
|     *)  dir=\~/$dir | ||||
|     esac | ||||
|     print -r - "$dir ${_push_stack[@]}" | ||||
| } | ||||
| 
 | ||||
| # Change directory and put directory on front of stack | ||||
| function pushd | ||||
| { | ||||
|     typeset dir= type=0 | ||||
|     integer i | ||||
|     case $1 in | ||||
|     "") # pushd | ||||
|         if    ((_push_top >= _push_max)) | ||||
|         then  print pushd: No other directory. | ||||
|               return 1 | ||||
|         fi | ||||
|         type=1 dir=${_push_stack[_push_top]} | ||||
|         ;; | ||||
|     +[1-9]|+[1-9][0-9]) # pushd +n | ||||
|         integer i=_push_top$1-1 | ||||
|         if    ((i >= _push_max)) | ||||
|         then  print pushd: Directory stack not that deep. | ||||
|               return 1 | ||||
|         fi | ||||
|         type=2 dir=${_push_stack[i]} | ||||
|         ;; | ||||
|     *)  if    ((_push_top <= 0)) | ||||
|         then  print pushd: Directory stack overflow. | ||||
|               return 1 | ||||
|         fi | ||||
|     esac | ||||
|     case $dir in | ||||
|     \~*)   dir=$HOME${dir#\~} | ||||
|     esac | ||||
|     cd "${dir:-$1}" > /dev/null || return 1 | ||||
|     dir=${OLDPWD#$HOME/} | ||||
|     case $dir in | ||||
|     $HOME) | ||||
|         dir=\~ | ||||
|         ;; | ||||
|     /*) ;; | ||||
|     *)  dir=\~/$dir | ||||
|     esac | ||||
|     case $type in | ||||
|     0)  # pushd name | ||||
|         _push_stack[_push_top=_push_top-1]=$dir | ||||
|         ;; | ||||
|     1)  # pushd | ||||
|         _push_stack[_push_top]=$dir | ||||
|         ;; | ||||
|     2)  # push +n | ||||
|         type=${1#+} i=_push_top-1 | ||||
|         set -- "${_push_stack[@]}" "$dir" "${_push_stack[@]}" | ||||
|         shift $type | ||||
|         for dir | ||||
|         do  (((i=i+1) < _push_max)) || break | ||||
|             _push_stack[i]=$dir | ||||
|         done | ||||
|     esac | ||||
|     dirs | ||||
| } | ||||
| 
 | ||||
| # Pops the top directory | ||||
| function popd | ||||
| { | ||||
|     typeset dir | ||||
|     if    ((_push_top >= _push_max)) | ||||
|     then  print popd: Nothing to pop. | ||||
|           return 1 | ||||
|     fi | ||||
|     case $1 in   | ||||
|     "") | ||||
|         dir=${_push_stack[_push_top]} | ||||
|         case $dir in | ||||
|         \~*)   dir=$HOME${dir#\~} | ||||
|         esac | ||||
|         cd "$dir" || return 1 | ||||
|         ;; | ||||
|     +[1-9]|+[1-9][0-9]) | ||||
|         typeset savedir | ||||
|         integer i=_push_top$1-1 | ||||
|         if    ((i >= _push_max)) | ||||
|         then  print pushd: Directory stack not that deep. | ||||
|               return 1 | ||||
|         fi | ||||
|         while ((i > _push_top)) | ||||
|         do _push_stack[i]=${_push_stack[i-1]} | ||||
|               i=i-1 | ||||
|         done | ||||
|         ;; | ||||
|     *)  print pushd: Bad directory. | ||||
|         return 1 | ||||
|     esac | ||||
|     unset '_push_stack[_push_top]' | ||||
|     _push_top=_push_top+1 | ||||
|     dirs | ||||
| } | ||||
							
								
								
									
										12
									
								
								docs/ksh/functions/emacs_keybind.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								docs/ksh/functions/emacs_keybind.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | |||
| typeset -A Keytable | ||||
| trap 'eval "${Keytable[${.sh.edchar}]}"' KEYBD | ||||
| function emacs_keybind | ||||
| { | ||||
| 	keybind $'\E[A' $'\020'	# Up key | ||||
| 	keybind $'\E[B' $'\016'	# Down key | ||||
| 	keybind $'\E[C' $'\06'	# Right key | ||||
| 	keybind $'\E[D' $'\02'	# Left key | ||||
| 	keybind $'\E[H' $'\01'	# Home key | ||||
| 	keybind $'\E[Y' $'\05'	# End key | ||||
| 	keybind $'\t' $'\E\E'	# Tab for command-line completion	 | ||||
| } | ||||
							
								
								
									
										28
									
								
								docs/ksh/functions/getopt.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								docs/ksh/functions/getopt.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| function getopt | ||||
| { | ||||
| 	typeset c optstring=$1 options= sep= | ||||
| 	shift | ||||
| 	while	getopts $optstring c | ||||
| 	do	case $c in | ||||
| 		[:?])	 | ||||
| 			exit 2 | ||||
| 			;; | ||||
| 		*) | ||||
| 			options="$options$sep-$c" | ||||
| 			sep=' ' | ||||
| 			if	[[ $optstring == *$c:* ]] | ||||
| 			then	options=" $options $OPTARG" | ||||
| 			fi | ||||
| 			#then	print -rn -- " -$c" "$OPTARG" | ||||
| 			#else	print -rn -- " -$c" | ||||
| 			;; | ||||
| 		esac | ||||
| 	done | ||||
| 	print -rn -- "$options" | ||||
| 	if	[[ ${@:$OPTIND-1} != -- ]] | ||||
| 	then	print -rn -- " --" | ||||
| 	fi | ||||
| 	if	[[ -n ${@:$OPTIND} ]] | ||||
| 	then	print -r -- " ${@:$OPTIND}" | ||||
| 	fi | ||||
| } | ||||
							
								
								
									
										14
									
								
								docs/ksh/functions/keybind.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								docs/ksh/functions/keybind.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| typeset -A Keytable | ||||
| trap 'eval "${Keytable[${.sh.edchar}]}"' KEYBD | ||||
| function keybind # key action | ||||
| {  | ||||
| 	typeset key=$(print -f "%q" "$2") | ||||
| 	case $# in | ||||
| 	2)	Keytable[$1]='.sh.edchar=${.sh.edmode}'"$key" | ||||
| 		;; | ||||
| 	1)	unset Keytable[$1] | ||||
| 		;; | ||||
| 	*)	print -u2 "Usage: $0 key [action]" | ||||
| 		;; | ||||
| 	esac | ||||
| } | ||||
							
								
								
									
										111
									
								
								docs/ksh/functions/popd.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								docs/ksh/functions/popd.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,111 @@ | |||
| # | ||||
| # DIRECTORY MANIPULATION FUNCTIONS PUSHD, POPD AND DIRS | ||||
| # | ||||
| # Uses global parameters _push_max _push_top _push_stack | ||||
| integer _push_max=100 _push_top=100 | ||||
| # Display directory stack -- $HOME displayed as ~ | ||||
| function dirs | ||||
| { | ||||
|     typeset dir="${PWD#$HOME/}" | ||||
|     case $dir in | ||||
|     $HOME) | ||||
|         dir=\~ | ||||
|         ;; | ||||
|     /*) ;; | ||||
|     *)  dir=\~/$dir | ||||
|     esac | ||||
|     print -r - "$dir ${_push_stack[@]}" | ||||
| } | ||||
| 
 | ||||
| # Change directory and put directory on front of stack | ||||
| function pushd | ||||
| { | ||||
|     typeset dir= type=0 | ||||
|     integer i | ||||
|     case $1 in | ||||
|     "") # pushd | ||||
|         if    ((_push_top >= _push_max)) | ||||
|         then  print pushd: No other directory. | ||||
|               return 1 | ||||
|         fi | ||||
|         type=1 dir=${_push_stack[_push_top]} | ||||
|         ;; | ||||
|     +[1-9]|+[1-9][0-9]) # pushd +n | ||||
|         integer i=_push_top$1-1 | ||||
|         if    ((i >= _push_max)) | ||||
|         then  print pushd: Directory stack not that deep. | ||||
|               return 1 | ||||
|         fi | ||||
|         type=2 dir=${_push_stack[i]} | ||||
|         ;; | ||||
|     *)  if    ((_push_top <= 0)) | ||||
|         then  print pushd: Directory stack overflow. | ||||
|               return 1 | ||||
|         fi | ||||
|     esac | ||||
|     case $dir in | ||||
|     \~*)   dir=$HOME${dir#~} | ||||
|     esac | ||||
|     cd "${dir:-$1}" > /dev/null || return 1 | ||||
|     dir=${OLDPWD#$HOME/} | ||||
|     case $dir in | ||||
|     $HOME) | ||||
|         dir=\~ | ||||
|         ;; | ||||
|     /*) ;; | ||||
|     *)  dir=\~/$dir | ||||
|     esac | ||||
|     case $type in | ||||
|     0)  # pushd name | ||||
|         _push_stack[_push_top=_push_top-1]=$dir | ||||
|         ;; | ||||
|     1)  # pushd | ||||
|         _push_stack[_push_top]=$dir | ||||
|         ;; | ||||
|     2)  # push +n | ||||
|         type=${1#+} i=_push_top-1 | ||||
|         set -- "${_push_stack[@]}" "$dir" "${_push_stack[@]}" | ||||
|         shift $type | ||||
|         for dir | ||||
|         do  (((i=i+1) < _push_max)) || break | ||||
|             _push_stack[i]=$dir | ||||
|         done | ||||
|     esac | ||||
|     dirs | ||||
| } | ||||
| 
 | ||||
| # Pops the top directory | ||||
| function popd | ||||
| { | ||||
|     typeset dir | ||||
|     if    ((_push_top >= _push_max)) | ||||
|     then  print popd: Nothing to pop. | ||||
|           return 1 | ||||
|     fi | ||||
|     case $1 in   | ||||
|     "") | ||||
|         dir=${_push_stack[_push_top]} | ||||
|         case $dir in | ||||
|         \~*)   dir=$HOME${dir#~} | ||||
|         esac | ||||
|         cd "$dir" || return 1 | ||||
|         ;; | ||||
|     +[1-9]|+[1-9][0-9]) | ||||
|         typeset savedir | ||||
|         integer i=_push_top$1-1 | ||||
|         if    ((i >= _push_max)) | ||||
|         then  print pushd: Directory stack not that deep. | ||||
|               return 1 | ||||
|         fi | ||||
|         while ((i > _push_top)) | ||||
|         do _push_stack[i]=${_push_stack[i-1]} | ||||
|               i=i-1 | ||||
|         done | ||||
|         ;; | ||||
|     *)  print pushd: Bad directory. | ||||
|         return 1 | ||||
|     esac | ||||
|     unset '_push_stack[_push_top]' | ||||
|     _push_top=_push_top+1 | ||||
|     dirs | ||||
| } | ||||
							
								
								
									
										111
									
								
								docs/ksh/functions/pushd.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								docs/ksh/functions/pushd.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,111 @@ | |||
| # | ||||
| # DIRECTORY MANIPULATION FUNCTIONS PUSHD, POPD AND DIRS | ||||
| # | ||||
| # Uses global parameters _push_max _push_top _push_stack | ||||
| integer _push_max=100 _push_top=100 | ||||
| # Display directory stack -- $HOME displayed as ~ | ||||
| function dirs | ||||
| { | ||||
|     typeset dir="${PWD#$HOME/}" | ||||
|     case $dir in | ||||
|     $HOME) | ||||
|         dir=\~ | ||||
|         ;; | ||||
|     /*) ;; | ||||
|     *)  dir=\~/$dir | ||||
|     esac | ||||
|     print -r - "$dir ${_push_stack[@]}" | ||||
| } | ||||
| 
 | ||||
| # Change directory and put directory on front of stack | ||||
| function pushd | ||||
| { | ||||
|     typeset dir= type=0 | ||||
|     integer i | ||||
|     case $1 in | ||||
|     "") # pushd | ||||
|         if    ((_push_top >= _push_max)) | ||||
|         then  print pushd: No other directory. | ||||
|               return 1 | ||||
|         fi | ||||
|         type=1 dir=${_push_stack[_push_top]} | ||||
|         ;; | ||||
|     +[1-9]|+[1-9][0-9]) # pushd +n | ||||
|         integer i=_push_top$1-1 | ||||
|         if    ((i >= _push_max)) | ||||
|         then  print pushd: Directory stack not that deep. | ||||
|               return 1 | ||||
|         fi | ||||
|         type=2 dir=${_push_stack[i]} | ||||
|         ;; | ||||
|     *)  if    ((_push_top <= 0)) | ||||
|         then  print pushd: Directory stack overflow. | ||||
|               return 1 | ||||
|         fi | ||||
|     esac | ||||
|     case $dir in | ||||
|     \~*)   dir=$HOME${dir#\~} | ||||
|     esac | ||||
|     cd "${dir:-$1}" > /dev/null || return 1 | ||||
|     dir=${OLDPWD#$HOME/} | ||||
|     case $dir in | ||||
|     $HOME) | ||||
|         dir=\~ | ||||
|         ;; | ||||
|     /*) ;; | ||||
|     *)  dir=\~/$dir | ||||
|     esac | ||||
|     case $type in | ||||
|     0)  # pushd name | ||||
|         _push_stack[_push_top=_push_top-1]=$dir | ||||
|         ;; | ||||
|     1)  # pushd | ||||
|         _push_stack[_push_top]=$dir | ||||
|         ;; | ||||
|     2)  # push +n | ||||
|         type=${1#+} i=_push_top-1 | ||||
|         set -- "${_push_stack[@]}" "$dir" "${_push_stack[@]}" | ||||
|         shift $type | ||||
|         for dir | ||||
|         do  (((i=i+1) < _push_max)) || break | ||||
|             _push_stack[i]=$dir | ||||
|         done | ||||
|     esac | ||||
|     dirs | ||||
| } | ||||
| 
 | ||||
| # Pops the top directory | ||||
| function popd | ||||
| { | ||||
|     typeset dir | ||||
|     if    ((_push_top >= _push_max)) | ||||
|     then  print popd: Nothing to pop. | ||||
|           return 1 | ||||
|     fi | ||||
|     case $1 in   | ||||
|     "") | ||||
|         dir=${_push_stack[_push_top]} | ||||
|         case $dir in | ||||
|         \~*)   dir=$HOME${dir#\~} | ||||
|         esac | ||||
|         cd "$dir" || return 1 | ||||
|         ;; | ||||
|     +[1-9]|+[1-9][0-9]) | ||||
|         typeset savedir | ||||
|         integer i=_push_top$1-1 | ||||
|         if    ((i >= _push_max)) | ||||
|         then  print pushd: Directory stack not that deep. | ||||
|               return 1 | ||||
|         fi | ||||
|         while ((i > _push_top)) | ||||
|         do _push_stack[i]=${_push_stack[i-1]} | ||||
|               i=i-1 | ||||
|         done | ||||
|         ;; | ||||
|     *)  print pushd: Bad directory. | ||||
|         return 1 | ||||
|     esac | ||||
|     unset '_push_stack[_push_top]' | ||||
|     _push_top=_push_top+1 | ||||
|     dirs | ||||
| } | ||||
							
								
								
									
										54
									
								
								docs/ksh/functions/title.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								docs/ksh/functions/title.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,54 @@ | |||
| # add to (+), delete from (-), print (.), or set ([=]) window title | ||||
| # arguments are eval'd before printing | ||||
| # title text string exported in TITLE_TEXT | ||||
| 
 | ||||
| function title # [+ | - | =] title ... | ||||
| { | ||||
| 	typeset	x t="$TITLE_TEXT" | ||||
| 
 | ||||
| 	case $1 in | ||||
| 	+)	shift | ||||
| 		case $# in | ||||
| 		0)	;; | ||||
| 		*)	for x | ||||
| 			do	case " $t " in | ||||
| 				*" $x "*)	;; | ||||
| 				"  ")		t=$x ;; | ||||
| 				*)		t="$t $x" ;; | ||||
| 				esac | ||||
| 			done | ||||
| 			case $t in | ||||
| 			$TITLE_TEXT)	return 1 ;; | ||||
| 			esac | ||||
| 			;; | ||||
| 		esac | ||||
| 		;; | ||||
| 	-)	shift | ||||
| 		case $# in | ||||
| 		0)	;; | ||||
| 		*)	for x | ||||
| 			do	case " $t " in | ||||
| 				*" $x "*)	t="${t%?( )$x*}${t##*$x?( )}" ;; | ||||
| 				esac | ||||
| 			done | ||||
| 			case $t in | ||||
| 			$TITLE_TEXT)	return 1 ;; | ||||
| 			esac | ||||
| 			;; | ||||
| 		esac | ||||
| 		;; | ||||
| 	.)	print -r -- "$TITLE_TEXT" | ||||
| 		return 0 | ||||
| 		;; | ||||
| 	*)	t="$*" | ||||
| 		;; | ||||
| 	esac | ||||
| 	export TITLE_TEXT="$t" | ||||
| 	eval x=\"$t\" | ||||
| 	case $TERM in | ||||
| 	630*)	print -nr -- "[?${#x};0v$x" ;; | ||||
| 	vt100|xterm*)	print -nr -- "]0;$x" ;; | ||||
| 	*)	return 1 ;; | ||||
| 	esac | ||||
| 	return 0 | ||||
| } | ||||
							
								
								
									
										10
									
								
								docs/ksh/functions/vi_keybind.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								docs/ksh/functions/vi_keybind.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| typeset -A Keytable | ||||
| trap 'eval "${Keytable[${.sh.edchar}]}"' KEYBD | ||||
| function vi_keybind | ||||
| { | ||||
| 	keybind $'\E[A' k # Up key | ||||
| 	keybind $'\E[B' j # Down key | ||||
| 	keybind $'\E[C' l # Right key | ||||
| 	keybind $'\E[D' h # Left key | ||||
| 	keybind $'\t' '\' # Tab for command-line completion | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue