From: Eduardo Ochs <eduardoochs@gmail.com>
To: uzibalqa <uzibalqa@proton.me>
Cc: "help-gnu-emacs@gnu.org" <help-gnu-emacs@gnu.org>
Subject: Re: Simple and fast way to access interactive functions associated with a package
Date: Mon, 15 Aug 2022 21:20:07 -0300 [thread overview]
Message-ID: <CADs++6irTYa=Lb00Q-2b1T-CHZ69RPG5NX6r_-F0+=RYxF9hgA@mail.gmail.com> (raw)
In-Reply-To: <44Ss7Mk4ALBre644NDAEBtjNM13vA-IwdWduG69XwvTqisLfikGRT311QWEpCmxRUpBtNn7omqx0Z7esDjZ29_SegF1L_T6tlGkUktDd2Hg=@proton.me>
On Mon, 15 Aug 2022 at 18:40, uzibalqa via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org> wrote:
>
> I am using M-x protoc to show me the interactive functions provided by the package protoc. Is it possible
>
> to have a shortcut for displaying protoc related functions without having to write protoc TAB after calling M-x?
>
> For instance, the following fails
>
> (global-set-key (kbd "H-x") (kbd "M-x protoc"))
>
> As I understand, there exists no association between functions (or variables) and the packages they were defined in,
>
> nor are packages even first–class objects. There is just the global environment and whatever functions (and variables)
>
> that have been defined therein.
>
> By convention one names the functions and variables defined in a package with a prefix that contains or is at least
>
> similar to the package name. Perhaps one could manage the list of known symbols using mapatoms, searching for
>
> those that are fboundp and have the prefix one are looking for.
>
> But I do not know how an actual implementation could look like. Or whether it is a good plan.
Hi Uzibalqa,
are you looking for hints on how to write these functions yourself?
If yes, then:
1. You can define something like this:
(global-set-key (kbd "H-x")
(lambda () (interactive (insert "protoc-"))))
and then type `M-x H-x' to get the effect of `M-x protoc-';
2. Hyperbole seems to have a way of simulating keypresses that is
much better - for some value of "much better", of course - than
this:
(execute-kbd-macro (read-kbd-macro "M-x protoc-"))
I _guess_ that a Hyperbole button like {M-x protoc-} may do what
you need - so we only need someone who knows how call the innards
of Hyperbole from Lisp, and who can show us how to write an elisp
function that would behave as if the user had typed `M-x protoc-'.
All my attempts to learn how the inner parts of Hyperbole work
have failed VERY miserably, so I'm burnt out and I can't help you
with that, but I would love to see a solution.
3. Try to pretty-print the results of:
(apropos-internal "^protoc-.*$" 'commandp)
(mapcar 'car load-history)
(assoc (symbol-file 'find-file 'defun) load-history)
Eev has some functions to inspect the global obarray that are
based on the three sexps above, but most people consider eev too
weird.
Cheers,
Eduardo Ochs
http://angg.twu.net/#eev
prev parent reply other threads:[~2022-08-16 0:20 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-15 21:39 Simple and fast way to access interactive functions associated with a package uzibalqa via Users list for the GNU Emacs text editor
2022-08-16 0:20 ` Eduardo Ochs [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CADs++6irTYa=Lb00Q-2b1T-CHZ69RPG5NX6r_-F0+=RYxF9hgA@mail.gmail.com' \
--to=eduardoochs@gmail.com \
--cc=help-gnu-emacs@gnu.org \
--cc=uzibalqa@proton.me \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).