unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Theodor Thornhill via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Juri Linkov <juri@linkov.net>
Cc: Eli Zaretskii <eliz@gnu.org>,
	mickey@masteringemacs.org, casouri@gmail.com,
	monnier@iro.umontreal.ca, 73404@debbugs.gnu.org
Subject: bug#73404: 30.0.50; [forward/kill/etc]-sexp commands do not behave as expected in tree-sitter modes
Date: Sun, 05 Jan 2025 20:50:58 +0100	[thread overview]
Message-ID: <87sepxt4yl.fsf@thornhill.no> (raw)
In-Reply-To: <877c79qhcs.fsf@mail.linkov.net>

Juri Linkov <juri@linkov.net> writes:

>>> The command is 'forward-list'.  With 'list' it will do in ts-modes
>>> the same that 'forward-list' already does in non-ts modes.
>>
>> One issue I've had when exploring these things earlier is that I don't
>> know the "spec" for how navigation in programming languages should work
>> in Emacs. I mean, there are lots of examples in the source code, but no
>> true specification. Should we possibly try to define some sane defaults
>> here, so that it will be simpler to deal with idiosyncrasies of the tree
>> sitter parsers? Lisp isn't in my experience the best language to define
>> this, as it is just too simple.
>
> Very simple: I'm striving to provide compatibility between ts-modes
> with their predecessor non-ts modes.  So the de-facto "spec" is the
> existing non-ts modes that provide canonical reference implementation.
> This helps the users to more smoothly switch to ts-modes.
>

Yes, I agree on this goal, absolutely. That was also my initial intent
and attempt when we started doing this. There are still many places
where either the canonical modes are inconsistent but has so much
history that we're so used to it and forget. If we blindly try to copy
everything one to one we might also adopt some stuff that doesn't really
make sense.

However, deciding on what makes sense is hard, which is why I'm
suggesting we try to define a "spec". It needn't really be much more
than reference suggestions for mode implementors at first, then maybe
some intersection of features crystallize across all modes.

>> Also, many of the functions are related to word processing, like
>> sentence, word, paragraph etc, which aren't really useful in
>> programming, imo. What is a sentence in java, lisp, or python, for
>> example? Also, maybe sexp is too lisp/ast-like of a term, so much so
>> that it is hard to reason about what a sexp is or isn't.
>
> Indeed, sentences and paragraphs are even more fuzzy concepts when applied
> to programming languages.  But some modes make sense of these things
> nevertheless.  For example, in both c-mode and c-ts-mode 'M-e'
> moves to the end of statement that usually end with a semicolon;
> so your intuition about these things looks correct.

Yes, but imo more importantly, disregarding any confusing naming we have
a very rich set of operations available to us that I think should be as
distinct as possible:

- C-M-f
- M-f
- M-a
- M-e
- C-f
- C-a
- C-e
- more

If we'll aim to get the absolute most out of the parse tree
possibilities we should strive to make these distinct, at least down the
line. Some of these are simpler to categorize than others, such as a
sentence meaning "some expression that ends that isn't a function or a
class definition".






  reply	other threads:[~2025-01-05 19:50 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-21  5:06 bug#73404: 30.0.50; [forward/kill/etc]-sexp commands do not behave as expected in tree-sitter modes Mickey Petersen
2024-09-26  7:42 ` Yuan Fu
2024-09-26  9:56   ` Mickey Petersen
2024-09-26 10:53     ` Eli Zaretskii
2024-09-26 12:13       ` Mickey Petersen
2024-09-26 13:46         ` Eli Zaretskii
2024-09-26 15:21           ` Mickey Petersen
2024-09-26 15:45             ` Eli Zaretskii
2024-09-27  5:43               ` Yuan Fu
2024-09-29 16:56                 ` Juri Linkov
2024-10-01  3:57                   ` Yuan Fu
2024-10-01 17:49                     ` Juri Linkov
2024-10-02  6:14                       ` Yuan Fu
2024-12-05 18:52                       ` Juri Linkov
2024-12-05 19:53                         ` Juri Linkov
2024-12-10 17:20                           ` Juri Linkov
2024-12-11  6:31                             ` Yuan Fu
2024-12-11 15:12                               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-11 15:29                                 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-11 16:50                                 ` Mickey Petersen
2024-12-11 18:27                                 ` Yuan Fu
2024-12-12  7:17                                   ` Juri Linkov
2024-12-12  7:40                                     ` Eli Zaretskii
2024-12-12  7:58                                       ` Juri Linkov
2024-12-12  8:14                                         ` Juri Linkov
2024-12-12 16:31                                           ` Juri Linkov
2024-12-12 17:49                                             ` Juri Linkov
2024-12-12 19:13                                               ` Eli Zaretskii
2024-12-13  7:06                                                 ` Juri Linkov
2024-12-14 11:02                                                   ` Eli Zaretskii
2024-12-14 18:14                                                     ` Juri Linkov
2024-12-18  7:37                                               ` Juri Linkov
2024-12-19  4:04                                                 ` Yuan Fu
2024-12-19  7:14                                                   ` Juri Linkov
2024-12-19  7:18                                                   ` bug#74963: Ambiguous treesit named and anonymous nodes in ruby-ts-mode Juri Linkov
2024-12-24  3:02                                                     ` Yuan Fu
2024-12-24  7:17                                                       ` Juri Linkov
2024-12-24  7:41                                                         ` Juri Linkov
2025-01-13  7:31                                                           ` Juri Linkov
2025-01-13  7:47                                                             ` Yuan Fu
2025-01-14  7:52                                                               ` Juri Linkov
2025-01-18  7:59                                                                 ` Yuan Fu
2024-12-25  3:25                                                         ` Dmitry Gutov
2024-12-25  7:52                                                           ` Juri Linkov
2024-12-26  1:00                                                             ` Dmitry Gutov
2024-12-27  7:42                                                               ` Juri Linkov
2024-12-24 17:52                                                       ` Juri Linkov
2024-12-24 21:03                                                         ` Yuan Fu
2024-12-25  7:49                                                           ` Juri Linkov
2024-12-25  9:11                                                             ` Yuan Fu
2024-12-25 17:39                                                               ` Juri Linkov
2024-12-19  7:34                               ` bug#73404: 30.0.50; [forward/kill/etc]-sexp commands do not behave as expected in tree-sitter modes Juri Linkov
2024-12-24 19:05                                 ` Juri Linkov
2024-12-24 21:14                                   ` Yuan Fu
2024-12-25  7:44                                     ` Juri Linkov
2024-12-25  8:34                                       ` Yuan Fu
2024-12-25 17:36                                         ` Juri Linkov
2024-12-27  7:59                                           ` Juri Linkov
2024-12-25 17:19                                   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-25 18:01                                     ` Juri Linkov
2024-12-25 19:29                                       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-27  7:54                                         ` Juri Linkov
2024-12-29 17:58                                           ` Juri Linkov
2024-12-30  7:15                                 ` Juri Linkov
2024-12-30  8:00                                   ` Yuan Fu
2025-01-04 17:46                                     ` Juri Linkov
2025-01-04 19:05                                       ` Eli Zaretskii
2025-01-05  7:32                                         ` Juri Linkov
2025-01-05 11:46                                           ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-05 12:18                                             ` Eli Zaretskii
2025-01-05 12:30                                               ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-05 16:59                                                 ` Eli Zaretskii
2025-01-05 18:20                                                   ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-05 21:18                                                   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-05 17:59                                             ` Juri Linkov
2025-01-05 19:50                                               ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2025-01-06  7:54                                                 ` Juri Linkov
2025-01-06 14:14                                                   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-06 17:40                                                     ` Juri Linkov
2025-01-06 18:04                                                       ` Yuan Fu
2025-01-06 20:07                                                       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-07 18:05                                                         ` Juri Linkov
2025-01-07 19:19                                                           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-11 18:19                                                         ` Juri Linkov
2025-01-11 19:14                                                           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-12  7:34                                                             ` Juri Linkov
2025-01-12 15:08                                                               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-05 13:02                                           ` Eli Zaretskii
2025-01-05 18:05                                             ` Juri Linkov
2025-01-05 19:54                                               ` Eli Zaretskii
2025-01-06 18:02                                                 ` Juri Linkov
2025-01-06 18:45                                                   ` Eli Zaretskii
2025-01-06 20:19                                                   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-05  7:37                                       ` Juri Linkov
2025-01-05 14:40                                         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-05 18:10                                           ` Juri Linkov
2025-01-06  8:56                                           ` Yuan Fu
2025-01-07 17:56                                             ` Juri Linkov
2025-01-07 19:25                                               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-01-08  2:27                                                 ` Yuan Fu
2025-01-09  7:42                                                   ` Juri Linkov
2025-01-09 18:39                                                     ` Dmitry Gutov
2025-01-09 18:44                                                       ` Juri Linkov
2025-01-10  3:14                                                     ` Yuan Fu
2025-01-10  7:34                                                       ` Juri Linkov
2024-12-30 13:40                                   ` Eli Zaretskii
2024-12-30 18:54                                     ` Juri Linkov
2024-12-30 19:36                                       ` Eli Zaretskii
2024-12-30 16:30                                   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-30 18:59                                     ` 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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=87sepxt4yl.fsf@thornhill.no \
    --to=bug-gnu-emacs@gnu.org \
    --cc=73404@debbugs.gnu.org \
    --cc=casouri@gmail.com \
    --cc=eliz@gnu.org \
    --cc=juri@linkov.net \
    --cc=mickey@masteringemacs.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=theo@thornhill.no \
    /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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).