mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-01 17:24:50 +01:00
zsh-users/2598
This commit is contained in:
parent
b6b5232655
commit
483cb415f1
1 changed files with 43 additions and 0 deletions
43
Functions/Zle/incarg
Normal file
43
Functions/Zle/incarg
Normal file
|
@ -0,0 +1,43 @@
|
|||
# Shell function to increment an integer either under the cursor or just
|
||||
# to the left of it. Use
|
||||
# autoload -U 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"
|
Loading…
Reference in a new issue