diff options
Diffstat (limited to 'Completion/Commands')
-rw-r--r-- | Completion/Commands/_correct_filename | 6 | ||||
-rw-r--r-- | Completion/Commands/_most_recent_file | 24 |
2 files changed, 25 insertions, 5 deletions
diff --git a/Completion/Commands/_correct_filename b/Completion/Commands/_correct_filename index edf1c65c2..582555587 100644 --- a/Completion/Commands/_correct_filename +++ b/Completion/Commands/_correct_filename @@ -17,7 +17,8 @@ integer approx max_approx=6 if [[ -e "$file" ]]; then if [[ -n $WIDGET ]]; then - compadd "$file" + compadd -U -i "$IPREFIX" "$file" + [[ -n "$compstate[insert]" ]] && compstate[insert]=menu else print "$file" fi @@ -31,7 +32,8 @@ done (( $#trylist )) || return 1 if [[ -n $WIDGET ]]; then - compadd -U "${trylist[@]}" + compadd -U -i "$IPREFIX" -U "${trylist[@]}" + [[ -n "$compstate[insert]" ]] && compstate[insert]=menu else print "${trylist[@]}" fi diff --git a/Completion/Commands/_most_recent_file b/Completion/Commands/_most_recent_file index ff5645de5..df35ecba7 100644 --- a/Completion/Commands/_most_recent_file +++ b/Completion/Commands/_most_recent_file @@ -1,4 +1,22 @@ #defkeycomp complete-word \C-xm -local file -file=($~PREFIX*$~SUFFIX(om[1]N)) -(( $#file )) && compadd -f $file + +# Complete the most recent file matching the pattern on the line so +# far: globbing is active, i.e. *.txt will be expanded to the most recent +# file ending in .txt +# +# With a prefix argument, select the Nth most recent matching file; +# negative arguments work in the opposite direction, so for example +# `Esc - \C-x m' gets you the oldest file. +# +# (`Most recent' means most recently modified.) + +local file tilde etilde +if [[ $PREFIX = \~*/* ]]; then + tilde=${PREFIX%%/*} + etilde=${~tilde} + file=($~PREFIX*$~SUFFIX(om[$NUMERIC]N)) + file=(${file/#$etilde/$tilde}) +else + file=($~PREFIX*$~SUFFIX(om[$NUMERIC]N)) +fi +(( $#file )) && compadd -U -f -Q $file |