all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Hongyi Zhao <hongyi.zhao@gmail.com>
To: Omar Polo <op@omarpolo.com>
Cc: help-gnu-emacs <help-gnu-emacs@gnu.org>
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	[thread overview]
Message-ID: <CAGP6POJFb10S4uM=sh+72-tpqDvjc1943JWRJgaDFWioQwYBbw@mail.gmail.com> (raw)
In-Reply-To: <87pmwhg843.fsf@omarpolo.com>

[-- Attachment #1: Type: text/plain, Size: 4537 bytes --]

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 #2: 2021-06-20_01-05.png --]
[-- Type: image/png, Size: 228007 bytes --]

  reply	other threads:[~2021-06-19 17:09 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-19 13:57 The convenient method to check/inspect/retrieve the definition/usage of any commands/symbols/operators used in elisp code Hongyi Zhao
2021-06-19 14:48 ` Omar Polo
2021-06-19 15:40   ` Hongyi Zhao
2021-06-19 15:57     ` Omar Polo
2021-06-19 17:09       ` Hongyi Zhao [this message]
2021-06-23  7:48         ` Omar Polo
2021-06-23  8:56           ` Hongyi Zhao
2021-06-23  9:17             ` Hongyi Zhao
2021-06-23  9:31               ` Screenshots, frame shots straight from Emacs Jean Louis
2021-06-25 22:04                 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-06-25 22:34                   ` Jean Louis
2021-06-25 23:55                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-06-28  6:47                       ` Jean Louis
2021-07-01 21:01                         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-02 12:50                           ` Jean Louis
2021-07-02 15:34                             ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-20 11:36                   ` Tomas Hlavaty
2021-07-20 17:42                     ` Leo Butler
2021-07-20 19:44                       ` Tomas Hlavaty
2021-07-20 20:21                         ` Leo Butler
2021-07-20 20:50                           ` Tomas Hlavaty
2021-07-31 23:25                             ` Tomas Hlavaty
2021-08-01  2:16                               ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-08-01  6:40                                 ` Tomas Hlavaty
2021-08-01  7:16                                   ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-08-01  7:42                                     ` Tomas Hlavaty
2021-08-02 13:57                                       ` Hongyi Zhao
2021-08-02 19:57                                         ` Tomas Hlavaty
2021-08-03  0:56                                           ` Hongyi Zhao
2021-08-01  2:59                               ` Eduardo Ochs
2021-07-20 21:51                           ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-07-20 21:48                         ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-07-21 19:17                           ` Leo Butler
2021-07-21 20:05                             ` Stefan Monnier
2021-07-21 21:44                               ` cl-lib questions (was: Re: Screenshots, frame shots straight from Emacs) Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 21:59                                 ` cl-lib questions Stefan Monnier via Users list for the GNU Emacs text editor
2021-07-21 22:09                                   ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-22  8:37                           ` Screenshots, frame shots straight from Emacs Tomas Hlavaty
2021-07-22 13:21                             ` Stefan Monnier
2021-07-22 18:19                               ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-23 11:38                                 ` Jean Louis
2021-08-01  1:38                                   ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-31 23:32                               ` Tomas Hlavaty
2021-07-23  1:30                             ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-31 23:31                           ` Tomas Hlavaty
2021-08-01 14:19                             ` Stefan Monnier
2021-07-21  3:34                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 17:21                       ` Leo Butler
2021-07-21 17:52                         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-22  8:26                         ` Tomas Hlavaty
2021-07-22  8:16                       ` Tomas Hlavaty
2021-07-23  0:52                 ` Hongyi Zhao
2021-07-23  1:35                   ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-23  1:55                     ` Hongyi Zhao
2021-07-23  5:51                   ` Jean Louis
2021-07-23  8:56                     ` Hongyi Zhao
2021-07-23 10:28                       ` Hongyi Zhao
2021-07-23 10:32                         ` Hongyi Zhao
2021-07-23 11:04                       ` Jean Louis
2021-07-23 11:41                         ` Hongyi Zhao
2021-07-24 15:22                           ` Hongyi Zhao
2021-07-23  9:16                     ` Hongyi Zhao

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAGP6POJFb10S4uM=sh+72-tpqDvjc1943JWRJgaDFWioQwYBbw@mail.gmail.com' \
    --to=hongyi.zhao@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    --cc=op@omarpolo.com \
    /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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.