mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1,002 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1,002 B
		
	
	
	
		
			Text
		
	
	
	
	
	
# Shell function to increment an integer either under the cursor or just
 | 
						|
# to the left of it.  Use
 | 
						|
#   autoload -Uz incarg
 | 
						|
#   zle -N incarg
 | 
						|
#   bindkey "..." incarg
 | 
						|
# to define it.  For example,
 | 
						|
#   echo 41
 | 
						|
#        ^^^ cursor anywhere here
 | 
						|
# with incarg gives
 | 
						|
#   echo 42
 | 
						|
# with the cursor in the same place.
 | 
						|
#
 | 
						|
# A numeric argument gives a number other than 1 to add (may be negative).
 | 
						|
# If you're going to do it a lot with one particular number, you can set
 | 
						|
# the parameter incarg to that number (a numeric argument still takes
 | 
						|
# precedence).
 | 
						|
 | 
						|
emulate -L zsh
 | 
						|
setopt extendedglob
 | 
						|
 | 
						|
local rrest lrest num
 | 
						|
 | 
						|
rrest=${RBUFFER##[0-9]#}
 | 
						|
if [[ $RBUFFER = [0-9]* ]]; then
 | 
						|
  if [[ -z $rrest ]]; then
 | 
						|
    num=$RBUFFER
 | 
						|
  else
 | 
						|
    num=${RBUFFER[1,-$#rrest-1]}
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
lrest=${LBUFFER%%[0-9]#}
 | 
						|
if [[ $LBUFFER = *[0-9] ]]; then
 | 
						|
  if [[ -z $lrest ]]; then
 | 
						|
    num="$LBUFFER$num"
 | 
						|
  else
 | 
						|
    num="${LBUFFER[$#lrest+1,-1]}$num"
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
[[ -n $num ]] && (( num += ${NUMERIC:-${incarg:-1}} ))
 | 
						|
 | 
						|
BUFFER="$lrest$num$rrest"
 |