File: copy-earlier-word

package info (click to toggle)
zsh 5.8-6%2Bdeb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 23,708 kB
  • sloc: ansic: 107,536; sh: 6,871; makefile: 726; perl: 687; awk: 389; sed: 16
file content (26 lines) | stat: -rw-r--r-- 795 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Copy the word before the one you last copied --- call repeatedly
# to cycle through the list of words on the history line.
#
# Words in combination with insert-last-word to use the line reached,
# and start from the word before last.  Otherwise, it will operate on
# the current line.

emulate -L zsh
setopt typesetsilent

typeset -g __copyword
if (( ${NUMERIC:-0} )); then
  # 1 means last word, 2 second last, etc.
  (( __copyword = ${NUMERIC:-0} ))
  zstyle -s :$WIDGET widget __copywidget
elif [[ -n $__copyword && $WIDGET = $LASTWIDGET ]]; then
  (( __copyword-- ))
elif [[ $LASTWIDGET = *insert-last-word ]]; then
  __copyword=-2
  typeset -g __copywidget=$LASTWIDGET
else
  __copyword=-1
  zstyle -s :$WIDGET widget __copywidget
fi

zle ${__copywidget:-.insert-last-word} 0 $__copyword