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

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

Re: The convenient method to check/inspect/retrieve the definition/usage


From: Hongyi Zhao
Subject: Re: The convenient method to check/inspect/retrieve the definition/usage of any commands/symbols/operators used in elisp code.
Date: Sun, 20 Jun 2021 01:09:41 +0800

On Sat, Jun 19, 2021 at 11:57 PM Omar Polo <op@omarpolo.com> wrote:
>
>
> Hongyi Zhao <hongyi.zhao@gmail.com> writes:
>
> > On Sat, Jun 19, 2021 at 10:48 PM Omar Polo <op@omarpolo.com> wrote:
> >>
> >>
> >> Hongyi Zhao <hongyi.zhao@gmail.com> writes:
> >>
> >> > Dear all,
> >> >
> >> > Are there any built-in method of Emacs which can let me conveniently
> >> > check/inspect/retrieve the definition/usage of any
> >> > commands/symbols/operators used in elisp code at-the-point/in-situ?
> >> > Say, for the following code snippets:
> >> >
> >> > ;;;
> >> >   (defun fk/company-wordfreq-toggle-language (&optional language)
> >> >     (interactive)
> >> >     (setq ispell-local-dictionary (or language
> >> >                                       (if (string=
> >> > ispell-local-dictionary "english")
> >> >                                           "turkish"
> >> >                                         "english")))
> >> > [...]
> >> >   `(progn
> >> >     ,@(mapcar (lambda (p) `(use-package ,p))
> >> >               packages)))
> >> >
> >> > (use-multiple-packages flycheck
> >> >                        dash
> >> >                        )
> >> >
> >> > [...]
> >> > (mapcar #'straight-use-package '(flycheck lsp-mode dash ...))
> >> >
> >> > ;or equivalently
> >> >
> >> > (defvar my-package-list '(flycheck lsp-mode dash ...))
> >> > (mapcar #'straight-use-package my-package-list)
> >> > ;;;
> >> >
> >> > I want to find some convenient methods built in Emacs itself with an
> >> > in-situ manner - by moving the point to the interest position - to
> >> > check any commands/symbols/operators used in them.
> >> >
> >> > Regards
> >>
> >> there is M-. (xref-find-definitions) that will jump to the definition of
> >> the symbol at point (at least in emacs lisp buffers),
> >
> > Thank you very much. But still there are some symbols can't find with
> > this method, say, #'  ,@  ' and so on.
>
> #' ' ` , and ,@ aren't symbols, they are reader macros, i.e. special
> character sequences that the lisp reader expands into some special
> constructs.  For instance, #'foo is the same as (function 'foo) and 'foo
> the same as (quote foo).
>
> If you M-. with the point over quote (in an elisp buffer) it should jump
> to eval.c (assuming you have the C source files available).
>
> >> and M-, (xref-pop-marker-stack) to jump back.
> >
> > I use scratch buffer to test, and it can't jump back there.
>
> M-, is meant to be used after one or more M-.
>
> For instance:
>
> 1. in *scratch* type describe-function
> 2. press M-. -- it'll jump to help-fns.el.gz
> 3. move the point over with-help-window (something like ~10 lines below)
> 4. M-. again -- it'll jump to a different place in the same file
> 5. go back with M-, -- now you're back in the definition of
>    describe-function
> 6. M-, again -- now you're back in the *scratch* buffer

Wonderful explanations. But I still failed to reproduce the M-, , as
for the other steps you told above except the last two, I can
reproduce them exactly the same as you described.

See the attachment for the info I saw on the bottom mini-buffer when
hitting M-, (M- comma).

>
> >>
> >> Or you can C-h f or C-h v (describe-function/variable) and then M-n
> >> (next-history-element) to bring in the symbol at point.
> >
> > I meet the following message: M-n is undefined, as shown in the
> > attached screenshot file.
>
> M-n should be defined in some minibuffer maps; with `emacs -Q' I can
>
>         C-h v C-h k M-n
>
> and it tells me that.

I got the following with your above command sequence:

M-n runs the command next-history-element (found in
minibuffer-local-must-match-map), which is an interactive compiled
Lisp function in ‘simple.el’.

It is bound to <XF86Forward>, <next>, M-n, <menu-bar> <minibuf>
<next>.

(next-history-element N)

Puts next element of the minibuffer history in the minibuffer.
With argument N, it uses the Nth following element.  The position
in the history can go beyond the current position and invoke "future
history."

HY

>
> > M-n runs the command next-history-element (found in
> > minibuffer-local-must-match-map), which is an interactive compiled
> > Lisp function in ‘simple.el’.
>
> Cheers,
>
> > HY
>


-- 
Assoc. Prof. Hongyi Zhao <hongyi.zhao@gmail.com>
Theory and Simulation of Materials
Hebei Vocational University of Technology and Engineering
NO. 552 North Gangtie Road, Xingtai, China

Attachment: 2021-06-20_01-05.png
Description: PNG image


reply via email to

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