stumpwm-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [STUMP] Why does `defcommand' export the command symbol?


From: David Bjergaard
Subject: Re: [STUMP] Why does `defcommand' export the command symbol?
Date: Fri, 07 Nov 2014 18:20:17 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

"Diogo F. S. Ramos" <address@hidden> writes:

>> I think its there because a defcommand exposes commands to the user, and
>> so it makes sense that their exported from the package.  This is more a
>> policy than a requirement. (if the user can call the command, then other
>> parts of StumpWM itself should be able to call the command too.)
>>
>> I'm pretty sure the name is actually stored in the *command-hash* and
>> the call to make-command.  Maybe someone with more knowledge can
>> comment.
>>
>> Notice that the deprecated `DEFINE-STUMPWM-COMMAND' doesn't export
>> anything. It just defun's the name and stores the name (with metadata)
>> in the *command-hash*.
>
> I see.
>
> I am asking because such policy cause me a problem.
>
> By using `defcommand' in a module (separate package), I couldn't
> redefine the package because the symbols defining the commands were
> exported but they were not listed in my new package redefinition.
>
> Even if StumpWM should be able to call commands like the user, it won't
> happen as things are, because exported symbols need to be prefixed by
> the package exporting it.
>
> I wonder if we are better of by not exporting `defcommand' symbols.
Hmm,

This is a good point. If you were willing to do some archaeology, you
could see when the `export` was added.  To make sure I understand your
issue:

If you call (stumpwm:defcommand foo ...) from an external package, you
export foo from your package (ie module:foo), but you never defined
module:foo for your package, so your encountering an error?  

I have some vague memory of this being added in a pull request shortly
after I started maintaining stump...

Cheers,

    Dave

PS. Sorry for top posting



reply via email to

[Prev in Thread] Current Thread [Next in Thread]