all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Juri Linkov <juri@linkov.net>
Cc: casouri@gmail.com, 68824@debbugs.gnu.org
Subject: bug#68824: treesitter support for outline-minor-mode
Date: Thu, 08 Feb 2024 10:30:17 +0200	[thread overview]
Message-ID: <86zfwbwe7a.fsf@gnu.org> (raw)
In-Reply-To: <86mssbbdz5.fsf@mail.linkov.net> (message from Juri Linkov on Thu, 08 Feb 2024 09:40:46 +0200)

> From: Juri Linkov <juri@linkov.net>
> Cc: casouri@gmail.com,  68824@debbugs.gnu.org
> Date: Thu, 08 Feb 2024 09:40:46 +0200
> 
> > Here is a new patch with a shorter implementation.
> > And I will send a complete patch with documentation changes later.
> 
> So here is a complete patch with documentation changes:

Thanks, some comments below.

> --- a/doc/emacs/text.texi
> +++ b/doc/emacs/text.texi
> @@ -1097,6 +1097,11 @@ Outline Format
>  chapters.  This works as long as no other command starts with
>  @samp{@@chap}.
>  
> +@vindex outline-search-function
> +  Instead of setting the variable @code{outline-regexp}, you can set
> +the variable @code{outline-search-function} to a function that
> +matches the current heading and searches for the next one.

This should tell which arguments will be passed to the function, and
what it is expected to do and return.

> --- a/doc/lispref/parsing.texi
> +++ b/doc/lispref/parsing.texi
> @@ -1895,6 +1895,10 @@ Tree-sitter Major Modes
>  @item
>  If @code{treesit-simple-imenu-settings} (@pxref{Imenu}) is
>  non-@code{nil}, it sets up Imenu.
> +
> +@item
> +If @code{treesit-outline-predicate} is non-@code{nil}, it sets up
> +Outline Minor Mode (@pxref{Outline Minor Mode,,, emacs, The GNU Emacs Manual}).
>  @end itemize

There should be an index entry somewhere, probably right here, for
treesit-outline-predicate.

> --- a/etc/NEWS
> +++ b/etc/NEWS
> @@ -130,6 +130,12 @@ the signature) the automatically inferred function type as well.
>  This user option controls outline visibility in the output buffer of
>  'describe-bindings' when 'describe-bindings-outline' is non-nil.
>  
> +** Outline Mode
> +
> +*** 'outline-minor-mode' is supported in tree-sitter major modes.
> +It can be used in all tree-sitter major modes that set either the
> +variable 'treesit-simple-imenu-settings' or 'treesit-outline-predicate'.

If we don't need any more documentation, this entry should be marked
with "+++".

> +(defvar-local treesit-outline-predicate nil
> +  "Predicate used to find outline headings in the syntax tree.
> +Intended to be set by a major mode.  When nil, the predicate
> +is constructed from the value of `treesit-simple-imenu-settings'
> +when a major mode sets it.")

The doc string should explain with what arguments will the predicate
be called and when it is expected to return non-nil.

> +(defun treesit-outline-predicate-from-imenu (node)
> +  "Return an outline searching predicate created from Imenu.
> +Return the value suitable to set `treesit-outline-predicate'.
> +Create this predicate from the value `treesit-simple-imenu-settings'
> +that major modes set to find Imenu entries.  The assumption here
> +is that the positions of Imenu entries most of the time coincide
> +with the lines of outline headings.  When this assumption fails,
> +you can directly set a proper value to `treesit-outline-predicate'."

Likewise here: please describe in the doc string the signature and
expectations from the predicate returned by this function (or point to
the doc of some other variable/function where that information is
included).

> +(defun treesit-outline-search (&optional bound move backward looking-at)
> +  "Search for the next outline heading in the syntax tree.
> +See the descriptions of arguments in `outline-search-function'."

What about the return value (if it is important)?





  reply	other threads:[~2024-02-08  8:30 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-30 17:37 bug#68824: treesitter support for outline-minor-mode Juri Linkov
2024-01-30 18:46 ` john muhl via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-31  7:20   ` Juri Linkov
2024-01-30 19:21 ` Eli Zaretskii
2024-01-31  7:32   ` Juri Linkov
2024-02-01 17:12     ` Juri Linkov
2024-02-02  0:34       ` Yuan Fu
2024-02-02  7:05         ` Eli Zaretskii
2024-02-02  7:27           ` Yuan Fu
2024-02-02  7:34             ` Eli Zaretskii
2024-02-02  7:53         ` Juri Linkov
2024-02-04 17:15         ` Juri Linkov
2024-02-05  4:34           ` Yuan Fu
2024-02-05  7:22             ` Juri Linkov
2024-02-06  7:21               ` Yuan Fu
2024-02-08  7:40     ` Juri Linkov
2024-02-08  8:30       ` Eli Zaretskii [this message]
2024-02-08 17:20         ` Juri Linkov
2024-02-08 18:56           ` Eli Zaretskii
2024-02-09  7:07             ` Juri Linkov
2024-02-09 19:25               ` Eli Zaretskii
2024-02-10 17:29                 ` Juri Linkov
2024-02-10 17:57                   ` Eli Zaretskii
2024-02-11 17:34                     ` Juri Linkov
2024-02-11 19:22                       ` Eli Zaretskii
2024-02-12  1:07                         ` Yuan Fu
2024-02-12 12:59                           ` Eli Zaretskii
2024-02-12 18:16                             ` Juri Linkov
2024-02-13 17:02                               ` Juri Linkov

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=86zfwbwe7a.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=68824@debbugs.gnu.org \
    --cc=casouri@gmail.com \
    --cc=juri@linkov.net \
    /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.