Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: how to make zsh tab-complete path after colon (instead of just `=`)



On Tue, 2019-01-08 at 11:21 +0000, Peter Stephenson wrote:
> If you really want a brutal answer, however, it's not so hard to add a
> style that will allow you to split all file completions on a given set
> of characters.  The following simple patch allows you to set
> 
> zstyle ':completion:*' file-split-chars :

I'm told this is probably good enough, and it's certainly not a big
change, and it's safe if you don't have the style set, so we might as
well get it in.  Someone may see some useful tweaks, e.g. it's quite
possible I haven't taken account of quoting properly.  Here's a full
patch with documentation.

pws

diff --git a/Completion/Unix/Type/_path_files b/Completion/Unix/Type/_path_files
index 9fa6ae9..1021c34 100644
--- a/Completion/Unix/Type/_path_files
+++ b/Completion/Unix/Type/_path_files
@@ -2,6 +2,11 @@
 
 local -a match mbegin mend
 
+local splitchars
+if zstyle -s ":completion:${curcontext}:" file-split-chars splitchars; then
+  compset -P "*[${(q)splitchars}]"
+fi
+
 # Look for glob qualifiers.  Do this first:  if we're really
 # in a glob qualifier, we don't actually want to expand
 # the earlier part of the path.  We can't expand inside
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index a5a9e5b..3ce1c8c 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -1568,6 +1568,16 @@ contains the string `tt(follow)', timestamps are associated with the
 targets of symbolic links; the default is to use the timestamps
 of the links themselves.
 )
+kindex(file-split-chars, completion style)
+item(tt(file-split-chars))(
+A set of characters that will cause em(all) file completions for
+the given context to be split at the point where any of the characters
+occurs.  A typical use is to set the style to tt(:); then everything
+up to and including the last tt(:) in the string so far is ignored when
+completing files.  As this is quite heavy-handed, it is usually
+preferable to update completion functions for contexts where this
+behaviour is useful.
+)
 kindex(filter, completion style)
 item(tt(filter))(
 The tt(ldap) plugin of email address completion (see tt(_email_addresses)) uses


Messages sorted by: Reverse Date, Date, Thread, Author