Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: how to customize _all_matches use?
- X-seq: zsh-workers 23567
- From: Peter Stephenson <pws@xxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: Re: how to customize _all_matches use?
- Date: Mon, 18 Jun 2007 19:24:19 +0100
- In-reply-to: <200706161906.l5GJ63Rq014600@xxxxxxxxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- Organization: CSR
- References: <200706161725.l5GHPwPm004038@xxxxxxxxxxxxxxxxx> <200706161906.l5GJ63Rq014600@xxxxxxxxxxxxxxxxxxxxxxxxxx>
On Sat, 16 Jun 2007 21:05:42 +0200
Vadim Zeitlin <vz-zsh@xxxxxxxxxxxx> wrote:
> I wonder if _complete_help can somehow be used to show the
> context for another completer?
Here's an implementation of _complete_help or _complete_debug for the
_generic completer. After you've created a (non-completion) widget you
just need to type the key sequence for that, then the key sequence for the
generic widget, so it's a lot more useful than my first attempt. Even so,
it takes more lines to describe than to implement.
Index: Doc/Zsh/compsys.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v
retrieving revision 1.201
diff -u -r1.201 compsys.yo
--- Doc/Zsh/compsys.yo 16 Jun 2007 17:53:56 -0000 1.201
+++ Doc/Zsh/compsys.yo 18 Jun 2007 18:18:54 -0000
@@ -3179,6 +3179,42 @@
information available from the completion functions called, which in turn
is determined by the user's own styles and other settings.
)
+findex(_complete_help_generic)
+item(tt(_complete_help_generic))(
+Unlike other commands listed here, this must be created as a normal ZLE
+widget rather than a completion widget (i.e. with tt(zle -N)). It
+is used for generating help with a widget bound to the tt(_generic)
+widget that is described above.
+
+If this widget is created using the name of the function, as it is by
+default, then when executed it will read a key sequence. This is expected
+to be bound to a call to a completion function that uses the tt(_generic)
+widget. That widget will be executed, and information provided in
+the same format that the tt(_complete_help) widget displays for
+contextual completion.
+
+If the widget's name contains tt(debug), for example if it is created
+as `tt(zle -N _complete_debug_generic _complete_help_generic)', it
+will read and execute the keystring for a generic widget as before,
+but then generate debugging information as done by tt(_complete_debug)
+for contextual completion.
+
+If the widget's name contains tt(noread), it will not read a keystring
+but instead arrange that the next use of a generic widget run in
+the same shell will have the effect as described above.
+
+The widget works by setting the shell parameter
+tt(ZSH_TRACE_GENERIC_WIDGET) which is read by tt(_generic). Unsetting
+the parameter cancels any pending effect of the tt(noread) form.
+
+For example, after executing the following:
+
+example(zle -N _complete_debug_generic _complete_help_generic
+bindkey '^x:' _complete_debug_generic)
+
+typing `tt(C-x :)' followed by the key sequence for a generic widget
+will cause trace output for that widget to be saved to a file.
+)
findex(_complete_tag (^Xt))
item(tt(_complete_tag (^Xt)))(
This widget completes symbol tags created by the tt(etags) or tt(ctags)
Index: Completion/Base/Utility/_complete_help_generic
===================================================================
RCS file: Completion/Base/Utility/_complete_help_generic
diff -N Completion/Base/Utility/_complete_help_generic
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Completion/Base/Utility/_complete_help_generic 18 Jun 2007 18:18:54 -0000
@@ -0,0 +1,17 @@
+#autoload
+
+# Note this is a normal ZLE widget, not a completion widget.
+# A completion widget can't call another widget, while a normal
+# widget can.
+
+[[ $WIDGET = *noread* ]] || local ZSH_TRACE_GENERIC_WIDGET
+
+if [[ $WIDGET = *debug* ]]; then
+ ZSH_TRACE_GENERIC_WIDGET=_complete_debug
+else
+ ZSH_TRACE_GENERIC_WIDGET=_complete_help
+fi
+
+if [[ $WIDGET != *noread* ]]; then
+ zle read-command && zle $REPLY -w
+fi
Index: Completion/Base/Widget/_complete_debug
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Base/Widget/_complete_debug,v
retrieving revision 1.5
diff -u -r1.5 _complete_debug
--- Completion/Base/Widget/_complete_debug 22 May 2005 15:46:36 -0000 1.5
+++ Completion/Base/Widget/_complete_debug 18 Jun 2007 18:18:54 -0000
@@ -11,7 +11,7 @@
setopt xtrace
: $ZSH_NAME $ZSH_VERSION
-_main_complete
+${1:-_main_complete}
integer ret=$?
unsetopt xtrace
Index: Completion/Base/Widget/_complete_help
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Base/Widget/_complete_help,v
retrieving revision 1.5
diff -u -r1.5 _complete_help
--- Completion/Base/Widget/_complete_help 8 Jul 2002 08:59:40 -0000 1.5
+++ Completion/Base/Widget/_complete_help 18 Jun 2007 18:18:54 -0000
@@ -37,7 +37,7 @@
}
trap 'unfunction compadd zstyle' EXIT INT
- _main_complete
+ ${1:-_main_complete}
unfunction compadd zstyle
trap - EXIT INT
Index: Completion/Base/Widget/_generic
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Base/Widget/_generic,v
retrieving revision 1.3
diff -u -r1.3 _generic
--- Completion/Base/Widget/_generic 24 Apr 2005 18:38:01 -0000 1.3
+++ Completion/Base/Widget/_generic 18 Jun 2007 18:18:54 -0000
@@ -1,5 +1,12 @@
#autoload
+if [[ -n $ZSH_TRACE_GENERIC_WIDGET ]]; then
+ local widget=$ZSH_TRACE_GENERIC_WIDGET
+ unset ZSH_TRACE_GENERIC_WIDGET
+ $widget _generic
+ return
+fi
+
local curcontext="${curcontext:-}"
if [[ -z "$curcontext" ]]; then
--
Peter Stephenson <pws@xxxxxxx> Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK Tel: +44 (0)1223 692070
To access the latest news from CSR copy this link into a web browser: http://www.csr.com/email_sig.php
To get further information regarding CSR, please visit our Investor Relations page at http://ir.csr.com/csr/about/overview
Messages sorted by:
Reverse Date,
Date,
Thread,
Author