help-gnu-emacs
[Top][All Lists]
Advanced

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

Re: How to get all commands defined in a specified file (or files)?


From: mbork
Subject: Re: How to get all commands defined in a specified file (or files)?
Date: Mon, 11 Nov 2024 22:58:04 +0100

On 2024-11-11, at 22:18, Eli Zaretskii <eliz@gnu.org> wrote:

>> From: mbork@mbork.pl
>> Date: Mon, 11 Nov 2024 20:36:33 +0100
>> 
>> Hi all,
>> 
>> say that I'd like to define a `execute-extended-command' alternative
>> which would only allow to run commands defined in a specified file.  How
>> can I get all such commands?  I know about `symbol-file', but I don't
>> know how it works (and it's complicated enough that I'm not sure I want
>> to study it ATM;-) - I tried to instrument it for edebug, but a quick
>> run revealed only that it's pretty mysterious).  I also looked at the
>> property plist of a function name and saw that the filename is not kept
>> there.  Any hints?
>
> We have a facility to mark commands as relevant to a major mode or a
> list of major modes.  If your file defines a major mode, you can use
> this for doing what you want.  See the command
> execute-extended-command-for-buffer.  A more general facility is the
> variable read-extended-command-predicate.

I know, it's cool, I even blogged about it!
(https://mbork.pl/2021-03-27_The_interactive_clause_and_modes).

But what I'm asking is something very different.  I explicitly don't
want commands related to a certain mode (major or minor), but commands
defined in a specific file.  I know that every function somehow "knows"
where its source is (because it's shown by `describe-function'), but I
want to be able to get that info (for ex., in a function I'd put in
`read-extended-command-predicate', which I knew about, since it's
mentioned in that blog post, but I forgot, so thanks for that!).

Best,

-- 
Marcin Borkowski
https://mbork.pl
https://crimsonelevendelightpetrichor.net/



reply via email to

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