diff options
-rw-r--r-- | Completion/X/_xrdb | 9 | ||||
-rw-r--r-- | Functions/Zle/incarg | 43 |
2 files changed, 52 insertions, 0 deletions
diff --git a/Completion/X/_xrdb b/Completion/X/_xrdb new file mode 100644 index 000000000..585e5909f --- /dev/null +++ b/Completion/X/_xrdb @@ -0,0 +1,9 @@ +#compdef xrdb + +_arguments \ + -{help,all,global,screen,screens,n,quiet,nocpp,symbols,query,load,merge,remove,retain} \ + '-display:display:_x_display' \ + '-cpp:preprocessor program:_files -g \*\(\*\)' \ + '-edit:file to insert:_files' \ + '-backup:suffix for backup: ' \ + '*:defaults file:_files' diff --git a/Functions/Zle/incarg b/Functions/Zle/incarg new file mode 100644 index 000000000..c4b05d01f --- /dev/null +++ b/Functions/Zle/incarg @@ -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" |