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: Omar Polo
Subject: Re: The convenient method to check/inspect/retrieve the definition/usage of any commands/symbols/operators used in elisp code.
Date: Sat, 19 Jun 2021 17:57:32 +0200
User-agent: mu4e 1.4.15; emacs 28.0.50

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

>>
>> 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.

> 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




reply via email to

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