mirror of
				https://github.com/dcarrillo/prezto.git
				synced 2025-11-04 07:29:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
		
			924 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			924 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
#
 | 
						|
# Provides for trapping UNIX signals and calling callback functions when a trap
 | 
						|
# is triggered.
 | 
						|
#
 | 
						|
# Authors:
 | 
						|
#   Sorin Ionescu <sorin.ionescu@gmail.com>
 | 
						|
#
 | 
						|
 | 
						|
# Adds a function name to a list to be called when a trap is triggered.
 | 
						|
function add-zsh-trap {
 | 
						|
  if (( $# < 2 )); then
 | 
						|
    print "usage: $0 type function" >&2
 | 
						|
    return 1
 | 
						|
  fi
 | 
						|
 | 
						|
  if [[ -z "$signals[(r)$1]" ]]; then
 | 
						|
    print "$0: unknown signal: $1" >&2
 | 
						|
    return 1
 | 
						|
  fi
 | 
						|
 | 
						|
  local trap_functions="TRAP${1}_FUNCTIONS"
 | 
						|
  if (( ! ${(P)+trap_functions} )); then
 | 
						|
    typeset -gaU "$trap_functions"
 | 
						|
  fi
 | 
						|
  eval "$trap_functions+="$2""
 | 
						|
 | 
						|
  if (( ! $+functions[TRAP${1}] )); then
 | 
						|
    eval "
 | 
						|
      function TRAP${1} {
 | 
						|
        for trap_function in \"\$TRAP${1}_FUNCTIONS[@]\"; do
 | 
						|
          if (( \$+functions[\$trap_function] )); then
 | 
						|
            \"\$trap_function\" \"\$1\"
 | 
						|
          fi
 | 
						|
        done
 | 
						|
        return \$(( 128 + \$1 ))
 | 
						|
      }
 | 
						|
    "
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
add-zsh-trap "$@"
 | 
						|
 |