From: Dmitry Gutov <dgutov@yandex.ru>
To: Eli Zaretskii <eliz@gnu.org>
Cc: casouri@gmail.com, monnier@iro.umontreal.ca, larsi@gnus.org,
theo@thornhill.no, jostein@secure.kjonigsen.net,
emacs-devel@gnu.org
Subject: Re: Make all tree-sitter modes optional
Date: Mon, 16 Jan 2023 15:06:15 +0200 [thread overview]
Message-ID: <ce0b0c83-3dfc-182f-5333-b10db977ea1e@yandex.ru> (raw)
In-Reply-To: <831qnu64la.fsf@gnu.org>
On 16/01/2023 14:34, Eli Zaretskii wrote:
>> Date: Mon, 16 Jan 2023 01:39:18 +0200
>> Cc: emacs-devel@gnu.org
>> From: Dmitry Gutov <dgutov@yandex.ru>
>>
>> On 15/01/2023 16:01, Eli Zaretskii wrote:
>>> You will
>>> see that where possible, just loading a TS mode modifies
>>> auto-mode-alist if the tree-sitter support for that mode is available,
>>> whereas for other modes auto-mode-alist is modified only when the mode
>>> is actually turned on successfully for the first time. This is
>>> because some of the TS modes have their own *.el files, whereas others
>>> share a .el file with other modes, and so loading that file doesn't
>>> necessarily means the user wants to use the tree-sitter based mode.
>>
>> If we *are* going to do this (make all ts mode strictly optional), I
>> don't think either of this is a good idea: for a given foo-ts-mode, the
>> user might already have an auto-mode-alist entry configured with another
>> mode (third-party or not), and they will likely 'M-x foo-ts-mode' to try
>> how well it works (or doesn't).
>>
>> Having auto-mode-alist modified automatically can come as a surprise
>> either way.
>>
>> Note the this is different to having the auto-mode-alist entries set up
>> from the outset, because the user's alterations override those.
>>
>> We can drop the auto-mode-alist alterations from ts modes altogether, to
>> bring them back when we do decide to enable them by default.
>
> Like I said: this is not ideal. So I'm not surprised that whatever we
> do, there can be usage scenarios where what we do will annoy someone.
>
> That said:
>
> . The proposed patch made many changes of auto-mode-alist
> conditional where they previously were _un_conditional.
It also added some where there were none.
> I submit
> that this is less annoyance in the important use case where the
> tree-sitter or the grammar library is not available. There are
> indications that this situation will be frequent enough when Emacs
> 29.1 hits the street.
Like I said, either making them unconditional, or removing them, would
lead to better, more predictable behavior.
> . I don't buy the assumption that customizations of auto-mode-alist
> are frequent enough to make that an important factor in these
> decisions, let alone suggest that users should always do that if
> they want to try the *-ts-* modes seriously:
Why wouldn't they be frequent? It's the only way for the user to have
file format supported, where we don't support it OOTB.
The customization of auto-mode-alist might also happen for the user
automatically. When the user installs a third-party package, such as
json-mode, from ELPA, that modified auto-mode-alist through package
autoloads.
Having it modified again by 'M-x yaml-ts-mode', but only for the
duration of the current session, would be surprising and odd. If I were
a new user, I would be questioning both why the mode association
changed, and why it didn't persist between sessions.
> - IME, auto-mode-alist is relatively rarely customized for modes
> that are included in Emacs (e.g., I don't customize entries of
> any such modes), for the simple reason that it is very rarely
> needed.
I'm talking about modes which are not included in Emacs.
But having the association for .rb files rewritten when somebody invokes
'M-x ruby-ts-mode' would be weird too. It will make it a pain in the ass
for me to test ruby-ts-mode, for one thing.
Or js-mode -> js-ts-mode, or python-mode -> python-ts-mode. People
should be allowed to experiment without having to figure out how one can
undo an automated change like that.
> - Customizing auto-mode-alist is not the easiest task, it
> requires good knowledge of Emacs regexps and alists. So
> asking anyone who wants to try using the tree-sitter modes to
> do that is not the best idea from the POV of user-friendliness.
They will have to learn how to do that anyway, because the
auto-mode-alist alterations from your patch won't persist between sessions.
To make it easier, we could put examples in the Commentary of each ts
mode. That's something that has been a common practice with third-party
mode, so there are a lot of examples of this code out there anyway.
> - OTOH, I'm quite sure that people who do already customize
> auto-mode-alist for built-in modes are more advanced users and
> will be able to overcome any problems that could be caused by
> modifying auto-mode-alist as side effect of activating the
> mode.
Adding elements to auto-mode-alist is easier than removing them.
> . Last, but not least: I think someone who turns on a tree-sitter
> mode in some buffer is much more likely to want to use that mode
> in more than that single buffer than the other way around. And if
> for some reason they are disappointed soon enough, just restarting
> the Emacs session will get them back the old behavior. Which
> again tells me that if we accept your proposal, we will annoy more
> users (with the need to modify auto-mode-alist) than under my
> proposal.
Someone who turns it on for the first time doesn't know yet whether they
want to use it or not. It hard to gauge the percentage of those who will.
And again, those who will want to, will have to learn how to deal with
auto-mode-alist anyway. For some modes that could be avoided with e.g.
(require 'yaml-ts-mode), but for others (e.g. python-ts-mode) it could
not. Why proliferate special cases?
next prev parent reply other threads:[~2023-01-16 13:06 UTC|newest]
Thread overview: 151+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-04 14:48 bug#60559: 29.0.60; "Cannot activate tree-sitter" spam Eric Gillespie
2023-01-04 18:36 ` Eli Zaretskii
2023-01-04 19:40 ` Daniel Martín via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-04 20:03 ` Eli Zaretskii
2023-01-05 0:43 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-05 6:51 ` Eli Zaretskii
2023-01-05 7:06 ` Ihor Radchenko
2023-01-05 7:44 ` Eli Zaretskii
2023-01-05 8:00 ` Ihor Radchenko
2023-01-05 8:26 ` Eli Zaretskii
2023-01-05 8:40 ` Ihor Radchenko
2023-01-05 8:42 ` Ihor Radchenko
2023-01-05 8:54 ` Eli Zaretskii
2023-01-05 8:52 ` Eli Zaretskii
2023-01-05 9:05 ` Ihor Radchenko
2023-01-05 7:57 ` Jostein Kjønigsen
2023-01-05 8:12 ` Eli Zaretskii
2023-01-05 8:32 ` Jostein Kjønigsen
2023-01-05 8:44 ` Gregory Heytings
2023-01-05 8:48 ` Gregory Heytings
2023-01-05 9:00 ` Eli Zaretskii
2023-01-05 8:56 ` Eli Zaretskii
2023-01-05 13:17 ` Dmitry Gutov
2023-01-05 14:02 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-15 14:01 ` Make all tree-sitter modes optional Eli Zaretskii
2023-01-15 23:39 ` Dmitry Gutov
2023-01-16 7:43 ` Theodor Thornhill
2023-01-16 16:30 ` Dmitry Gutov
2023-01-16 12:34 ` Eli Zaretskii
2023-01-16 13:06 ` Dmitry Gutov [this message]
2023-01-16 14:20 ` Eli Zaretskii
2023-01-16 14:50 ` Dmitry Gutov
2023-01-16 14:59 ` Eli Zaretskii
2023-01-17 12:59 ` Dmitry Gutov
2023-01-17 13:47 ` Eli Zaretskii
2023-01-17 14:32 ` Dmitry Gutov
2023-01-17 14:52 ` Eli Zaretskii
2023-01-17 15:22 ` Dmitry Gutov
2023-01-17 17:02 ` Eli Zaretskii
2023-01-17 17:10 ` Dmitry Gutov
2023-01-17 17:38 ` Eli Zaretskii
2023-01-17 17:59 ` Dmitry Gutov
2023-01-17 18:04 ` Eli Zaretskii
2023-01-17 18:21 ` Dmitry Gutov
2023-01-17 18:40 ` Eli Zaretskii
2023-01-17 18:49 ` Dmitry Gutov
2023-01-17 19:03 ` Eli Zaretskii
2023-01-17 19:21 ` Dmitry Gutov
2023-01-18 1:11 ` Yuan Fu
2023-01-18 1:23 ` Dmitry Gutov
2023-01-18 3:34 ` Eli Zaretskii
2023-01-18 3:52 ` Dmitry Gutov
2023-01-18 12:06 ` Eli Zaretskii
2023-01-18 14:00 ` Dmitry Gutov
2023-01-18 14:51 ` Eli Zaretskii
2023-01-18 12:36 ` Stefan Monnier
2023-01-17 17:34 ` treesit-forward-sexp (was: Make all tree-sitter modes optional) Juri Linkov
2023-01-17 17:40 ` Theodor Thornhill
2023-01-17 18:17 ` treesit-forward-sexp Juri Linkov
2023-01-17 17:50 ` treesit-forward-sexp (was: Make all tree-sitter modes optional) Dmitry Gutov
2023-01-17 17:59 ` Eli Zaretskii
2023-01-16 1:12 ` Make all tree-sitter modes optional Po Lu
2023-01-17 17:30 ` Juri Linkov
2023-01-17 17:58 ` Eli Zaretskii
2023-01-17 18:19 ` Juri Linkov
2023-01-17 18:41 ` Eli Zaretskii
2023-02-14 19:08 ` Alan Mackenzie
2023-02-14 19:29 ` Eli Zaretskii
2023-02-14 21:02 ` Alan Mackenzie
2023-02-15 15:35 ` Eli Zaretskii
2023-02-15 17:57 ` Alan Mackenzie
2023-02-15 18:33 ` Eli Zaretskii
2023-02-15 20:31 ` Alan Mackenzie
2023-02-16 5:41 ` tomas
2023-02-16 7:27 ` Eli Zaretskii
2023-02-16 22:05 ` Yuan Fu
[not found] ` <87v8k2g04m.fsf@dick>
2023-02-15 20:34 ` Eli Zaretskii
[not found] ` <87mt5eegkw.fsf@dick>
2023-02-16 7:53 ` Eli Zaretskii
2023-02-16 8:52 ` Po Lu
2023-02-15 21:40 ` Alan Mackenzie
2023-02-17 13:30 ` Alan Mackenzie
2023-02-17 13:37 ` Po Lu
2023-02-17 13:46 ` Stefan Monnier
2023-02-17 14:16 ` Po Lu
2023-02-17 14:40 ` Eli Zaretskii
2023-02-17 14:56 ` Dmitry Gutov
2023-02-17 15:04 ` Eli Zaretskii
[not found] ` <8735741fic.fsf@dick>
2023-02-17 15:41 ` Alan Mackenzie
2023-02-17 16:04 ` Make all tree-sitter modes optional Stefan Kangas
2023-02-17 17:42 ` Morgan Willcock
2023-02-17 15:15 ` Gregory Heytings
2023-02-17 13:54 ` Alan Mackenzie
[not found] ` <d4c1a7f6-b5bf-f4f3-8d79-1c6b1d07cf70@yandex.ru>
2023-02-17 14:22 ` Po Lu
2023-02-17 14:58 ` Eli Zaretskii
2023-02-17 15:18 ` Alan Mackenzie
2023-02-15 18:34 ` Stefan Monnier
2023-02-15 19:01 ` Dmitry Gutov
2023-02-15 19:26 ` Stefan Monnier
2023-02-15 19:47 ` Eli Zaretskii
2023-02-15 19:53 ` Stefan Monnier
2023-02-15 20:06 ` Eli Zaretskii
2023-02-15 21:04 ` Stefan Monnier
2023-02-16 7:42 ` Eli Zaretskii
2023-02-16 9:49 ` Basil L. Contovounesios
2023-02-16 11:48 ` Eli Zaretskii
2023-02-16 14:41 ` Stefan Monnier
2023-02-16 15:42 ` Eli Zaretskii
2023-02-16 16:45 ` Stefan Monnier
2023-02-16 17:05 ` Eli Zaretskii
2023-02-16 19:14 ` Dmitry Gutov
2023-02-16 20:07 ` Stefan Monnier
2023-02-16 5:45 ` tomas
2023-02-16 8:26 ` Eli Zaretskii
2023-02-16 10:30 ` Alan Mackenzie
2023-02-16 12:38 ` Po Lu
2023-02-16 12:53 ` Dmitry Gutov
2023-02-15 20:24 ` Dmitry Gutov
2023-02-16 7:05 ` Eli Zaretskii
2023-02-16 7:53 ` Theodor Thornhill
2023-02-16 8:34 ` Eli Zaretskii
2023-02-16 8:46 ` Theodor Thornhill
2023-02-16 11:58 ` Dmitry Gutov
2023-02-16 11:56 ` Dmitry Gutov
2023-02-16 14:48 ` Theodor Thornhill via Emacs development discussions.
2023-02-16 14:56 ` Dmitry Gutov
2023-02-16 15:15 ` Theodor Thornhill
2023-02-15 23:48 ` Lynn Winebarger
2023-02-16 2:56 ` Stefan Monnier
2023-02-15 19:07 ` Eli Zaretskii
2023-02-15 19:27 ` Stefan Monnier
2023-02-15 21:06 ` Basil L. Contovounesios
2023-02-16 7:44 ` Eli Zaretskii
2023-02-15 18:25 ` Juri Linkov
2023-01-04 19:59 ` bug#60559: 29.0.60; "Cannot activate tree-sitter" spam Stephen Berman
2023-01-04 20:10 ` Eli Zaretskii
2023-01-04 20:33 ` Stephen Berman
2023-01-05 6:41 ` Eli Zaretskii
2023-01-05 7:46 ` Juri Linkov
2023-01-05 7:58 ` Eli Zaretskii
2023-01-05 14:59 ` Eric Gillespie
2023-01-22 13:24 ` Eli Zaretskii
-- strict thread matches above, loose matches on Subject: below --
2023-01-19 16:53 Re: Make all tree-sitter modes optional Pedro Andres Aranda Gutierrez
2023-01-20 8:30 ` Eli Zaretskii
2023-01-20 16:31 ` Pedro Andres Aranda Gutierrez
2023-01-20 19:13 ` Eli Zaretskii
2023-01-21 11:30 ` Pedro Andres Aranda Gutierrez
2023-01-21 11:48 ` Eli Zaretskii
2023-01-22 6:23 ` Pedro Andres Aranda Gutierrez
2023-01-22 6:38 ` Eli Zaretskii
2023-01-22 10:46 ` Eli Zaretskii
2023-02-18 7:55 Pedro Andres Aranda Gutierrez
2023-03-11 12:45 ` Ongaro
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=ce0b0c83-3dfc-182f-5333-b10db977ea1e@yandex.ru \
--to=dgutov@yandex.ru \
--cc=casouri@gmail.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=jostein@secure.kjonigsen.net \
--cc=larsi@gnus.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 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.