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

PATCH: Re: Getting "parse error" from _path_files



Bart Schaefer wrote:

> ...
> 
> There are actually two things at issue here.  The second is that I'd rather
> that completion didn't happen when I'm doing cut'n'paste.  I tried putting:
> 
>     (( PENDING )) && compstate[insert]=tab
> 
> near the top of _main_complete, right after curcontext is set up, and that
> seems to help a bit, but I'm rather leery of that solution.  It does need
> to use PENDING somehow, though.

How about this. Allow `insert-tab' to contain the string
`pending[=num]' which makes completion insert a TAB (or, actually,
whatever character was typed to start completion) if it is given. If
there is a `=num', it will insert it only if there are at least that
many unread characters.

Bye
 Sven

Index: Completion/Core/_main_complete
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Core/_main_complete,v
retrieving revision 1.27
diff -u -r1.27 _main_complete
--- Completion/Core/_main_complete	2000/05/31 09:56:12	1.27
+++ Completion/Core/_main_complete	2000/06/13 11:41:35
@@ -23,7 +23,7 @@
 # Failed returns from this code are not real errors
 setopt localtraps noerrexit ; trap - ZERR
 
-local func funcs ret=1 tmp _compskip format nm call \
+local func funcs ret=1 tmp _compskip format nm call match \
       _completers _completer _completer_num curtag _comp_force_list \
       _matchers _matcher _matcher_num _comp_tags _comp_mesg \
       context state line opt_args val_args curcontext="$curcontext" \
@@ -38,8 +38,18 @@
 
 [[ -z "$curcontext" ]] && curcontext=:::
 
-if [[ "$compstate[insert]" = tab* && "$WIDGET" != *list* ]]; then
-  { zstyle -T ":completion:${curcontext}:" insert-tab &&
+zstyle -s ":completion:${curcontext}:" insert-tab tmp || tmp=no
+
+if [[ "$tmp" = *pending(|[[:blank:]]*) ||
+      ( "$tmp" = *pending=(#b)([0-9]##)(|[[:blank:]]*) && 
+        PENDING -ge $match[1] ) ]]; then
+  compstate[insert]=tab
+
+  return 0
+fi
+
+if [[ "$compstate[insert]" = tab* ]]; then
+  { "$tmp" = (|[[:blank:]]*)(yes|true|on|1)(|[[:blank:]]*) &&
     { [[ "$curcontext" != :* || -z "$compstate[vared]" ]] ||
         zstyle -t ":completion:vared${curcontext}:" insert-tab } } && return 0
 
Index: Doc/Zsh/compsys.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v
retrieving revision 1.61
diff -u -r1.61 compsys.yo
--- Doc/Zsh/compsys.yo	2000/06/13 11:26:08	1.61
+++ Doc/Zsh/compsys.yo	2000/06/13 11:41:37
@@ -1278,6 +1278,16 @@
 of performing completion when there is no non-blank character to the left
 of the cursor.  If set to `false', completion will be done even there.
 
+The value may also contain the substrings `tt(pending)' or
+`tt(pending=)var(val)' to make the character typed to start completion 
+be inserted instead of completion being tried when there is input
+pending which has not yet been processed by the shell. If a var(val)
+is given, completion will not be done if there are at least that many
+characters of unprocessed input. This is often useful to have set when 
+pasting characters into a terminal. Note however, that it relies on
+the tt($PENDING) special parameter from the tt(zle) module being set
+properly which is not guaranteed on all platforms.
+
 The default value of this style is `true' unless when completing
 inside the tt(vared) builtin command, where it defaults to `false'.
 )

--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



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