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

PATCH: $modules (was: Re: Seg fault with zmodload -u)

Oliver Kiddle wrote:

> ...
> On the subject of zmodload completion, how would I prevent the 'module
> alias' description from being displayed when there are no module
> aliases - do I have to put the zmodload -A output in an array first and
> then not call the _requested line if the array is empty - or is there a
> better way?

Eh? The description for the aliases should not be displayed when there 
are no matches added for it (or none of the strings added for it match 
what's on the line). Automatically. And it works for me (using a
simple test completion function).

Anyway. Here is the change to the parameter module to report aliases
correctly in the $modules parameter. They have values of the form
`alias:<name>', where <name> is, of course, the aliased-to-name.

And the manual was still talking about `builtin' being a possible
value, although that went away when zmodload was changed to treat
linked-in modules like loaded ones.

No changes to _zmodload. If Oliver is working on the _arguments
version anyway...


Index: Doc/Zsh/mod_parameter.yo
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/mod_parameter.yo,v
retrieving revision 1.3
diff -u -r1.3 mod_parameter.yo
--- Doc/Zsh/mod_parameter.yo	2000/05/21 18:27:36	1.3
+++ Doc/Zsh/mod_parameter.yo	2000/08/16 09:17:39
@@ -91,9 +91,10 @@
 An associative array giving information about modules. The keys are the names
-of the modules builtin, loaded, or registered to be autoloaded. The
+of the modules loaded, registered to be autoloaded, or aliased. The
 value says which state the named module is in and is one of the
-strings tt(builtin), tt(loaded), or tt(autoloaded).
+strings `tt(loaded)', `tt(autoloaded)', or `tt(alias:)var(name)',
+where var(name) is the name the module is aliased to.
 Setting or unsetting keys in this array is not possible.
Index: Src/Modules/parameter.c
RCS file: /cvsroot/zsh/zsh/Src/Modules/parameter.c,v
retrieving revision 1.16
diff -u -r1.16 parameter.c
--- Src/Modules/parameter.c	2000/08/14 07:30:29	1.16
+++ Src/Modules/parameter.c	2000/08/16 09:17:40
@@ -892,7 +892,8 @@
 	    m = (Module) getdata(node);
 	    if (m->u.handle && !(m->flags & MOD_UNLOAD) &&
 		!strcmp(name, m->nam)) {
-		type = "loaded";
+		type = ((m->flags & MOD_ALIAS) ?
+			dyncat("alias:", m->u.alias) : "loaded");
@@ -935,6 +936,7 @@
     LinkNode node;
     Module m;
     Conddef p;
+    char *loaded = dupstring("loaded");
     pm.flags = PM_SCALAR | PM_READONLY;
     pm.sets.cfn = NULL;
@@ -946,12 +948,12 @@
     pm.old = NULL;
     pm.level = 0;
-    pm.u.str = dupstring("builtin");
-    pm.u.str = dupstring("loaded");
     for (node = firstnode(modules); node; incnode(node)) {
 	m = (Module) getdata(node);
 	if (m->u.handle && !(m->flags & MOD_UNLOAD)) {
 	    pm.nam = m->nam;
+	    pm.u.str = ((m->flags & MOD_ALIAS) ?
+			dyncat("alias:", m->u.alias) : loaded);
 	    addlinknode(done, pm.nam);
 	    func((HashNode) &pm, flags);

Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx

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