Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: Re: Getting "parse error" from _path_files
- X-seq: zsh-workers 11873
- From: Sven Wischnowsky <wischnow@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: PATCH: Re: Getting "parse error" from _path_files
- Date: Tue, 13 Jun 2000 13:43:08 +0200 (MET DST)
- In-reply-to: "Bart Schaefer"'s message of Mon, 5 Jun 2000 04:48:00 +0000
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
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