[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/