Permalink
Browse files

32441: add completer for file extensions

  • Loading branch information...
1 parent f62bd9c commit 7d301a527e729e2a2fda03069e485bdcc2e12823 Oliver Kiddle committed Mar 3, 2014
Showing with 45 additions and 0 deletions.
  1. +3 −0 ChangeLog
  2. +33 −0 Completion/Base/Completer/_extensions
  3. +9 −0 Doc/Zsh/compsys.yo
View
@@ -1,5 +1,8 @@
2014-03-03 Oliver Kiddle <opk@zsh.org>
+ * 32441: Completion/Base/Completer/_extensions, Doc/Zsh/compsys.yo:
+ add completer for file extensions
+
* 32450: Src/Zle/zle_hist.c: make get-line set the history
number that was saved with the line
@@ -0,0 +1,33 @@
+#autoload
+
+# This completer completes filename extensions when completing
+# after *. or ^*. It can be used anywhere in the completer list
+# but if used after _expand, patterns that already match a file
+# will be expanded before it is called.
+
+compset -P '(#b)([~$][^/]#/|)(*/|)(\^|)\*.' || return 1
+
+local -aU files
+local -a expl suf mfiles
+
+files=( ${(e)~match[1]}${match[2]}*.* ) || return 1
+eval set -A files '${(MSI:'{1..${#${(O)files//[^.]/}[1]}}':)files%%.[^/]##}'
+files=( ${files:#.<->(.*|)} )
+
+if zstyle -t ":completion:${curcontext}:extensions" prefix-hidden; then
+ files=( ${files#.} )
+else
+ PREFIX=".$PREFIX"
+ IPREFIX="${IPREFIX%.}"
+fi
+
+zstyle -T ":completion:${curcontext}:extensions" add-space ||
+ suf=( -S '' )
+
+_description extensions expl 'file extension'
+
+# for an exact match, fail so as to give _expand or _match a chance.
+compadd -O mfiles "$expl[@]" -a files
+[[ $#mfiles -gt 1 || ${mfiles[1]} != $PREFIX ]] &&
+ compadd "$expl[@]" "$suf[@]" -a files &&
+ [[ -z $compstate[exact_string] ]]
View
@@ -3047,6 +3047,15 @@ This function is also a bindable command, see
ifzman(the section `Bindable Commands' below)\
ifnzman(noderef(Bindable Commands)).
)
+findex(_extensions)
+item(tt(_extensions))(
+If the cursor follows the string `tt(*.)', filename extensions are
+completed. The extensions are taken from files in current directory or a
+directory specified at the beginning of the current word. For exact matches,
+completion continues to allow other completers such as tt(_expand) to
+expand the pattern. The standard tt(add-space) and tt(prefix-hidden)
+styles are observed.
+)
findex(_history)
item(tt(_history))(
Complete words from the shell's command history. This completer

0 comments on commit 7d301a5

Please sign in to comment.