diff options
Diffstat (limited to 'Completion/Commands')
-rw-r--r-- | Completion/Commands/.distfiles | 3 | ||||
-rw-r--r-- | Completion/Commands/_correct_filename | 37 | ||||
-rw-r--r-- | Completion/Commands/_correct_word | 12 | ||||
-rw-r--r-- | Completion/Commands/_most_recent_file | 4 |
4 files changed, 56 insertions, 0 deletions
diff --git a/Completion/Commands/.distfiles b/Completion/Commands/.distfiles new file mode 100644 index 000000000..f79d69704 --- /dev/null +++ b/Completion/Commands/.distfiles @@ -0,0 +1,3 @@ +DISTFILES_SRC=' + .distfiles _correct_filename _most_recent_file +' diff --git a/Completion/Commands/_correct_filename b/Completion/Commands/_correct_filename new file mode 100644 index 000000000..edf1c65c2 --- /dev/null +++ b/Completion/Commands/_correct_filename @@ -0,0 +1,37 @@ +#defkeycomp complete-word \C-xc + +# Function to correct a filename. Can be used as a completion widget, +# or as a function in its own right, in which case it will print the +# corrected filename to standard output. +# +# You can adapt max_approx to the maximum number of mistakes +# which are allowed in total. + +emulate -LR zsh +setopt extendedglob + +local file="$PREFIX$SUFFIX" trylist +integer approx max_approx=6 + +[[ -z $WIDGET ]] && file=$1 + +if [[ -e "$file" ]]; then + if [[ -n $WIDGET ]]; then + compadd "$file" + else + print "$file" + fi + return +fi + +for (( approx = 1; approx <= max_approx; approx++ )); do + trylist=( (#a$approx)"$file"(N) ) + (( $#trylist )) && break +done +(( $#trylist )) || return 1 + +if [[ -n $WIDGET ]]; then + compadd -U "${trylist[@]}" +else + print "${trylist[@]}" +fi diff --git a/Completion/Commands/_correct_word b/Completion/Commands/_correct_word new file mode 100644 index 000000000..db3023860 --- /dev/null +++ b/Completion/Commands/_correct_word @@ -0,0 +1,12 @@ +#compdef -k complete-word \C-xc + +# Simple completion front-end implementing spelling correction. +# The maximum number of errors is set quite high, and +# the numeric prefix can be used to specify a different value. + +local oca="$compconfig[correct_accept]" +compconfig[correct_accept]=6n + +_main_complete _correct + +compconfig[correct_accept]=$oca diff --git a/Completion/Commands/_most_recent_file b/Completion/Commands/_most_recent_file new file mode 100644 index 000000000..ff5645de5 --- /dev/null +++ b/Completion/Commands/_most_recent_file @@ -0,0 +1,4 @@ +#defkeycomp complete-word \C-xm +local file +file=($~PREFIX*$~SUFFIX(om[1]N)) +(( $#file )) && compadd -f $file |