From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2618 invoked from network); 16 Aug 2000 09:24:25 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 16 Aug 2000 09:24:25 -0000 Received: (qmail 15747 invoked by alias); 16 Aug 2000 09:24:00 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 12654 Received: (qmail 15740 invoked from network); 16 Aug 2000 09:23:59 -0000 Date: Wed, 16 Aug 2000 11:23:21 +0200 (MET DST) Message-Id: <200008160923.LAA11449@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: Oliver Kiddle's message of Tue, 15 Aug 2000 16:18:48 +0100 Subject: 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:', where 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... Bye Sven 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 @@ vindex(modules) item(tt(modules))( 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"); break; } } @@ -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@informatik.hu-berlin.de