[Top][All Lists]

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

Re: Simple and fast way to access interactive functions associated with

From: Eduardo Ochs
Subject: Re: Simple and fast way to access interactive functions associated with a package
Date: Mon, 15 Aug 2022 21:20:07 -0300

On Mon, 15 Aug 2022 at 18:40, uzibalqa via Users list for the GNU
Emacs text editor <> 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

       (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

    Eduardo Ochs

reply via email to

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