zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: completion helper module
@ 1999-10-12  9:26 Sven Wischnowsky
  1999-10-15  8:06 ` Bart Schaefer
  0 siblings, 1 reply; 3+ messages in thread
From: Sven Wischnowsky @ 1999-10-12  9:26 UTC (permalink / raw)
  To: zsh-workers


The last of the patches I made in the last two weeks... (I didn't have 
much time).

And I don't know if everyone should use this in its current state...


This adds the `computil' module -- new completion's little helper.

It contains support for some of the slower completion functions via
builtins (as suggested by Bart). As I said, I wanted to try to add
generic support for them, something that might also be useful
somewhere else. Unfortunately I completely failed to do so (hence the
comment above) because I couldn't identify anything generic enough
that would still speed things up enough. So, the module just contains
four very specialised builtins: `compdisplay', `compdescribe',
`comparguments', and `compvalues' for the respective completion
functions (`builtin:s/comp/_/'). Since I consider this to be very
experimental, I didn't took the time to write any docs for it and
because the builtins are so specialised it doesn't seem to make
sense to fully describe them anyway.

The patch also changes the functions, of course (except for `_display' 
because this is actually /replaced/ by `compdisplay' -- not used any
more). This is responsible for most of the size of the patch (lotsa
lines beginning with `-' ;-)

If you feel that this is the wrong way to do things, please tell us
what exactly you think, the helper module should do. If this gets
added in its current form some day, I'll probably write a small notice 
for the manual saying only which builtins are provided and giving a
rough overview of what they do.

Also, there may be other things we might want to add support for
(e.g. I didn't look at the helper functions implemented by Tanaka, but 
I guess speeding them up would be a good thing, too). So I'd like to
hear suggestions here, too.

Finally, the patch makes the `computil' module be loaded in
`compinit'. This certainly should be changed some day. We could make
it autoloaded there or we could make `computil' one of the
automatically autoloaded modules (and builtin in static shells). Or we 
could detect in `compinit' if the module is accessible (we still don't 
have a possibility to test if a module would be loaded with
`zmodload'!) and then have two versions of the functions affected, one 
using the helper builtins and one with the pure shell code
implementation. Or, of course, we could do the test in the functions
themselves, as usual. (And all this also for the `parameter' module, too).

Ok, any comments and suggestions are welcome.

Bye
 Sven

begin 600 patch-computil.gz
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
$BVP!``\Q
`
end

--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: PATCH: completion helper module
  1999-10-12  9:26 PATCH: completion helper module Sven Wischnowsky
@ 1999-10-15  8:06 ` Bart Schaefer
  0 siblings, 0 replies; 3+ messages in thread
From: Bart Schaefer @ 1999-10-15  8:06 UTC (permalink / raw)
  To: zsh-workers

On Oct 12, 11:26am, Sven Wischnowsky wrote:
} Subject: PATCH: completion helper module
}
} Finally, the patch makes the `computil' module be loaded in
} `compinit'. This certainly should be changed some day. We could make
} it autoloaded there or we could make `computil' one of the
} automatically autoloaded modules (and builtin in static shells).

I vote for that.  Having two implementations of everything --

} [...] two versions of the functions affected, one 
} using the helper builtins and one with the pure shell code [...]

-- is just asking for a different flavor of the same problems we (you)
are having now keeping compctl and the new system both working.


-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: PATCH: completion helper module
@ 1999-10-15  9:42 Sven Wischnowsky
  0 siblings, 0 replies; 3+ messages in thread
From: Sven Wischnowsky @ 1999-10-15  9:42 UTC (permalink / raw)
  To: zsh-workers


Bart Schaefer wrote:

> X-Seq: 8269
> 
> On Oct 12, 11:26am, Sven Wischnowsky wrote:
> } Subject: PATCH: completion helper module
> }
> } Finally, the patch makes the `computil' module be loaded in
> } `compinit'. This certainly should be changed some day. We could make
> } it autoloaded there or we could make `computil' one of the
> } automatically autoloaded modules (and builtin in static shells).
> 
> I vote for that.  Having two implementations of everything --
> 
> } [...] two versions of the functions affected, one 
> } using the helper builtins and one with the pure shell code [...]
> 
> -- is just asking for a different flavor of the same problems we (you)
> are having now keeping compctl and the new system both working.

Right, that was what I was worried about, too.


Ok, the patch below makes it be automatically autoloaded.

Then I finally woke up and realised that `compdescribe -i' doesn't use
its first argument and thus shouldn't get it. I also found that
`_values' still used `compdisplay' although I thought I changed it
together with `_arguments' -- so that is cleaned up, too. And then I
added a bit of description about `computil' in the doc (don't expect
too much here -- even better, don't expect anything at all).


Bye
 Sven

diff -u -r oldsrc/Zle/computil.c Src/Zle/computil.c
--- oldsrc/Zle/computil.c	Fri Oct 15 10:38:09 1999
+++ Src/Zle/computil.c	Fri Oct 15 11:18:36 1999
@@ -291,9 +291,11 @@
     }
     switch (args[0][1]) {
     case 'i':
+	cd_parsed = 1;
+	return cd_init(nam, "", args + 1, 0);
     case 'I':
 	cd_parsed = 1;
-	return cd_init(nam, args[1], args + 2, (args[0][1] == 'I'));
+	return cd_init(nam, args[1], args + 2, 1);
     case 'g':
 	if (cd_parsed) {
 	    int n = arrlen(args);
diff -u -r oldsrc/Zle/computil.mdd Src/Zle/computil.mdd
--- oldsrc/Zle/computil.mdd	Fri Oct 15 10:41:47 1999
+++ Src/Zle/computil.mdd	Fri Oct 15 10:42:38 1999
@@ -1,3 +1,5 @@
 moddeps="compctl zle"
 
 objects="computil.o"
+
+autobins="compdisplay compdescribe comparguments compvalues"
diff -u -r oldsrc/xmods.conf Src/xmods.conf
--- oldsrc/xmods.conf	Fri Oct 15 10:41:53 1999
+++ Src/xmods.conf	Fri Oct 15 10:42:56 1999
@@ -4,3 +4,4 @@
 compctl
 sched
 complist
+computil
diff -u olddoc/Zsh/mod_complist.yo Doc/Zsh/mod_complist.yo
--- olddoc/Zsh/mod_complist.yo	Thu Oct 14 16:26:33 1999
+++ Doc/Zsh/mod_complist.yo	Fri Oct 15 10:49:20 1999
@@ -1,4 +1,4 @@
-texinode(The complist Module)(The deltochar Module)(The compctl Module)(Zsh Modules)
+texinode(The complist Module)(The computil Module)(The compctl Module)(Zsh Modules)
 sect(The complist Module)
 cindex(completion, listing)
 cindex(completion, coloured listings)
diff -u olddoc/Zsh/mod_computil.yo Doc/Zsh/mod_computil.yo
--- olddoc/Zsh/mod_computil.yo	Fri Oct 15 10:52:49 1999
+++ Doc/Zsh/mod_computil.yo	Fri Oct 15 11:31:57 1999
@@ -0,0 +1,51 @@
+texinode(The computil Module)(The deltochar Module)(The complist Module)(Zsh Modules)
+sect(The computil Module)
+cindex(completion, utility)
+The tt(computil) module adds four builtin commands that are used by
+some of the completion functions in the shell function based
+completions system (see
+ifzman(zmanref(zshcompsys))\
+ifnzman(noderef(Completion System))
+). Except for tt(compdisplay) these builtin commands are very
+specialised and thus not very interesting when writing your own
+completion functions. In short, these builtin commands are:
+
+startitem()
+item(tt(compdisplay) var(name) var(string) var(defs) ...)(
+The var(defs) are strings should be of the form
+`var(str)tt(:)var(descr)' (the intended use is that the var(descr)
+describes the var(str)) and tt(compdisplay) will convert them to
+strings in which the colon is replaced by the var(string) given as the 
+second argument and spaces are inserted before that so that they are
+aligned over all strings. These resultings strings are then assigned
+to an array with the var(name) given as the first argument.
+)
+item(tt(compdescribe))(
+This is used by the tt(_describe) function to build the displays for
+the matches and to get the strings to add as matches with their
+options. The first call has to give the tt(-i) or tt(-I) option as the 
+first argument. In the first case, display strings without the
+descriptions will be generated, inthe second case, the string used to
+separate the matches from their descriptions has to be given as the
+second argument and the descriptions (if any) will be shown. All other 
+arguments are like the definition arguments to tt(_describe) itself.
+
+Once tt(compdescribe) has been called with either the tt(-i) or the
+tt(-I) option, it can be repeatedly called with the tt(-g) option and
+the names of five arrays as its arguments. This will step through the
+different sets of matches and store the options in the first array,
+the strings with descriptions in the second, the matches for these in
+the third, the strings without descriptions in the fourth, and the
+matches for them in the fifth array. These are then directly given to
+tt(compadd) to register the matches with the completion code.
+)
+item(tt(comparguments))(
+This is used by the tt(_arguments) function to do the argument and
+command line parsing. Like tt(compdescribe) it has an option tt(-i) to 
+do the parsing and initialize some internal state and various options
+to access the state information to decide what should be completed.
+)
+item(tt(compvalues))(
+Like tt(comparguments), but for the tt(_values) function.
+)
+enditem()
diff -u olddoc/Zsh/mod_deltochar.yo Doc/Zsh/mod_deltochar.yo
--- olddoc/Zsh/mod_deltochar.yo	Thu Oct 14 16:26:33 1999
+++ Doc/Zsh/mod_deltochar.yo	Fri Oct 15 10:49:08 1999
@@ -1,4 +1,4 @@
-texinode(The deltochar Module)(The example Module)(The complist Module)(Zsh Modules)
+texinode(The deltochar Module)(The example Module)(The computil Module)(Zsh Modules)
 sect(The deltochar Module)
 The tt(deltochar) module makes available two ZLE functions:
 
diff -u olddoc/Zsh/modules.yo Doc/Zsh/modules.yo
--- olddoc/Zsh/modules.yo	Thu Oct 14 16:26:34 1999
+++ Doc/Zsh/modules.yo	Fri Oct 15 10:47:53 1999
@@ -25,6 +25,10 @@
 item(tt(complist))(
 Completion listing extensions.
 )
+item(tt(computil))(
+A module with utility builtins needed for the shell function based
+completion system.
+)
 item(tt(deltochar))(
 A ZLE function duplicating EMACS' tt(zap-to-char).
 )
@@ -62,6 +66,7 @@
 menu(The comp1 Module)
 menu(The compctl Module)
 menu(The complist Module)
+menu(The computil Module)
 menu(The deltochar Module)
 menu(The example Module)
 menu(The files Module)
@@ -78,6 +83,7 @@
 includefile(Zsh/mod_comp1.yo)\x01
 includefile(Zsh/mod_compctl.yo)\x01
 includefile(Zsh/mod_complist.yo)\x01
+includefile(Zsh/mod_computil.yo)\x01
 includefile(Zsh/mod_deltochar.yo)\x01
 includefile(Zsh/mod_example.yo)\x01
 includefile(Zsh/mod_files.yo)\x01
diff -u -r oldcompletion/Base/_describe Completion/Base/_describe
--- oldcompletion/Base/_describe	Fri Oct 15 08:25:18 1999
+++ Completion/Base/_describe	Fri Oct 15 11:18:42 1999
@@ -50,7 +50,7 @@
 if [[ -n "$showd" ]]; then
   compdescribe -I ' -- ' "$@"
 else
-  compdescribe -i ' -- ' "$@"
+  compdescribe -i "$@"
 fi
 
 [[ -n "$isopt" && "$compconfig[option_prefix]" = hide* ]] && hide=yes
diff -u -r oldcompletion/Base/_values Completion/Base/_values
--- oldcompletion/Base/_values	Fri Oct 15 08:25:18 1999
+++ Completion/Base/_values	Fri Oct 15 11:11:17 1999
@@ -82,13 +82,8 @@
 
       eval ws\=\( "${action[3,-3]}" \)
 
-      if [[ -n "$compconfig[describe_values]" &&
-            "$compconfig[describe_values]" != *\!${cmd}* ]] &&
-         compdisplay tmp ' -- ' "$ws[@]"; then
-	compadd "$expl[@]" -M 'r:|[_-]=* r:|=*' -ld tmp - "${(@)ws%%:*}"
-      else
-	compadd "$expl[@]" - "${(@)ws%%:*}"
-      fi
+      _describe "$descr" ws -M 'r:|[_-]=* r:|=*'
+
     elif [[ "$action" = \(*\) ]]; then
 
       # Anything inside `(...)' is added directly.
diff -u -r oldcompletion/Core/compinit Completion/Core/compinit
--- oldcompletion/Core/compinit	Fri Oct 15 08:25:25 1999
+++ Completion/Core/compinit	Fri Oct 15 11:42:11 1999
@@ -78,10 +78,6 @@
   fi
 done
 
-# Load the helper module.
-
-zmodload computil
-
 # The associative array containing the definitions for the commands.
 # Definitions for patterns will be stored in the normal arrays `_patcomps'
 # and `_postpatcomps'.

--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~1999-10-15  9:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-10-12  9:26 PATCH: completion helper module Sven Wischnowsky
1999-10-15  8:06 ` Bart Schaefer
1999-10-15  9:42 Sven Wischnowsky

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).