unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: Gregory Heytings <gregory@heytings.org>
Cc: emacs-devel@gnu.org
Subject: Re: Major modes using `widen' is a good, even essential, programming practice.
Date: Sun, 7 Aug 2022 14:13:36 +0000	[thread overview]
Message-ID: <Yu/IkMyxWjvROVRn@ACM> (raw)
In-Reply-To: <6ae35c9306ade07b4c45@heytings.org>

Hello, Gregory.

On Sun, Aug 07, 2022 at 13:31:05 +0000, Gregory Heytings wrote:

> > Major modes, like all Emacs Lisp programs, have, by design, access to 
> > the full range of Emacs's facilities.  Should it make your task more 
> > difficult (and I don't see that it does), that's your problem, not the 
> > major modes' maintainers'.

> I fear it is not my problem, no.

> jit-lock-functions is an API, with a contract.  CC Mode decided to break 
> that contract.

Where, exactly are the terms of this supposed contract formulated?  And
which part of this supposed contract has CC Mode broken?

I suspect that this "contract" is something implicit you have in your
understanding of Emacs, shared by some other people, and that you have
assumed that everybody else shares that understanding.  Such conflicts
have occurred before.

> It is wrong that "arbitrary Lisp can be executed through
> fontification-functions", as you said earlier.

It is not wrong.  If you disagree, point out where, say in the Elisp
manual, these restrictions are imposed.

> A function called from fontification-functions isn't supposed to
> download a file, or to send an email, or to change a user option, or
> to remove or create a file, or to remove or insert text in the buffer,
> or to kill Emacs or a frame or a window or the current buffer, or to
> change the window layout, and so on and so forth.

That doesn't deserve a reply, so won't be getting one.

> So far breaching that contract has not posed major problems, except of 
> course for CC Mode users, who had to bear its sluggishness.  We now have a 
> new feature which assumes, and rightly so, that this contract is obeyed. 

This new feature deliberately breaks contracts, in particular the
definitions of widen and narrow-to-region.  That will, sooner or later,
break existing code.  Maybe this is necessary, but having read the bug
threads, I didn't notice much effort being put into preserving these
contracts.

If you find CC Mode too sluggish for you (I don't), then configure it to
be faster and inaccurate by setting font-lock-maximum-decoration.

> This breaks CC Mode.

CC Mode will cope.

> >From where I stand, there are two options here: either CC Mode disables 
> the new feature (which is, on purpose, 100% backward compatible), or CC 
> Mode is fixed to obey the jit-lock-functions contract, and to become 
> compatible with the new feature (which will likely also, by side-effect 
> and as a bonus, fix the aforementioned sluggishness).

-- 
Alan Mackenzie (Nuremberg, Germany).



  reply	other threads:[~2022-08-07 14:13 UTC|newest]

Thread overview: 136+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-06 20:13 Major modes using `widen' is a good, even essential, programming practice Alan Mackenzie
2022-08-06 21:05 ` Stefan Monnier
2022-08-07  6:03 ` Eli Zaretskii
2022-08-07 13:31 ` Gregory Heytings
2022-08-07 14:13   ` Alan Mackenzie [this message]
2022-08-07 14:20     ` Eli Zaretskii
2022-08-07 14:59       ` Alan Mackenzie
2022-08-07 15:13         ` Eli Zaretskii
2022-08-07 17:01           ` Alan Mackenzie
2022-08-07 17:23             ` Eli Zaretskii
2022-08-07 17:53               ` Dmitry Gutov
2022-08-07 18:00                 ` Eli Zaretskii
2022-08-07 18:05                   ` Dmitry Gutov
2022-08-07 18:37                     ` Eli Zaretskii
2022-08-07 23:02                       ` Stefan Monnier
2022-08-07 18:49                   ` Óscar Fuentes
2022-08-07 18:59                     ` Eli Zaretskii
2022-08-07 18:56                   ` Lars Ingebrigtsen
2022-08-07 19:20               ` Alan Mackenzie
2022-08-07 19:26                 ` Dmitry Gutov
2022-08-08  2:36                 ` Eli Zaretskii
2022-08-08  9:58                   ` Alan Mackenzie
2022-08-08 11:39                     ` Eli Zaretskii
2022-08-08 15:05                       ` CC Mode with font-lock-maximum-decoration 2 [Was Major modes using `widen' is a good, even essential, programming practice.] Alan Mackenzie
2022-08-08 15:51                         ` Gregory Heytings
2022-08-08 16:05                           ` CC Mode with font-lock-maximum-decoration 2 Alan Mackenzie
2022-08-08 16:50                             ` Gregory Heytings
2022-08-09 19:49                               ` Gregory Heytings
2022-08-08 17:15                         ` CC Mode with font-lock-maximum-decoration 2 [Was Major modes using `widen' is a good, even essential, programming practice.] Eli Zaretskii
2022-08-08 17:41                           ` Eli Zaretskii
2022-08-08 18:41                             ` CC Mode with font-lock-maximum-decoration 2 Alan Mackenzie
2022-08-08 18:51                               ` Eli Zaretskii
2022-08-08 19:09                                 ` Alan Mackenzie
2022-08-09  2:24                                   ` Eli Zaretskii
2022-08-09  8:00                                     ` Alan Mackenzie
2022-08-09 11:07                                       ` Eli Zaretskii
2022-08-09 11:24                                         ` Alan Mackenzie
2022-08-09 11:57                                           ` Eli Zaretskii
2022-08-09 16:36                                             ` Alan Mackenzie
2022-08-09 16:59                                               ` Eli Zaretskii
2022-08-09 17:43                                                 ` Alan Mackenzie
2022-08-09 17:55                                                   ` Eli Zaretskii
2022-08-10  0:22                                                     ` Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2) Lynn Winebarger
2022-08-10  2:14                                                       ` Po Lu
2022-08-10  2:42                                                         ` Eli Zaretskii
2022-08-10 10:05                                                           ` Lynn Winebarger
2022-08-10 10:49                                                             ` Po Lu
2022-08-10 11:31                                                             ` Eli Zaretskii
2022-08-12 12:37                                                               ` Lynn Winebarger
2022-08-12 12:50                                                                 ` Eli Zaretskii
2022-08-12 21:50                                                                   ` Ideal performance of ELisp (was: Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2)) Stefan Monnier
2022-08-12 23:26                                                                     ` Lynn Winebarger
2022-08-13  2:11                                                                       ` Ideal performance of ELisp Stefan Monnier
2022-08-13 10:51                                                                         ` Lynn Winebarger
2022-08-13 11:13                                                                           ` Lynn Winebarger
2022-08-13 14:07                                                                           ` Stefan Monnier
2022-08-13 14:56                                                                             ` Lynn Winebarger
2022-08-16 16:46                                                                               ` Lynn Winebarger
2022-08-16 17:22                                                                                 ` Stefan Monnier
2022-08-17 12:41                                                                                   ` Lynn Winebarger
2022-08-17 14:04                                                                                     ` Stefan Monnier
2022-08-17 14:19                                                                                       ` Mattias Engdegård
2022-08-17 22:18                                                                                         ` Stefan Monnier
2022-08-17 14:25                                                                                       ` Lynn Winebarger
2022-08-13  4:39                                                                     ` Ideal performance of ELisp (was: Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2)) Ihor Radchenko
2022-08-13  7:45                                                                       ` Ideal performance of ELisp Philip Kaludercic
2022-08-13 11:58                                                                         ` Ihor Radchenko
2022-08-13 14:15                                                                       ` Stefan Monnier
2022-08-14  9:25                                                                         ` Andrea Corallo
2022-08-14  9:34                                                                           ` Ihor Radchenko
2022-08-14 13:01                                                                             ` Eli Zaretskii
2022-08-16 19:23                                                                             ` Andrea Corallo
2022-08-14 13:01                                                                           ` Stefan Monnier
2022-08-16  8:59                                                                             ` Andrea Corallo
2022-08-16  9:50                                                                               ` Ihor Radchenko
2022-08-16 18:21                                                                                 ` Andrea Corallo
2022-08-17  9:48                                                                                   ` Ihor Radchenko
2022-08-17 12:02                                                                                     ` Eli Zaretskii
2022-08-16 15:06                                                                               ` Lynn Winebarger
2022-08-16 18:24                                                                                 ` Andrea Corallo
2022-08-17 13:04                                                                                   ` Lynn Winebarger
2022-08-17 14:18                                                                                     ` Andrea Corallo
2022-08-18 12:17                                                                                       ` Lynn Winebarger
2022-08-12 16:00                                                                 ` Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2) Akib Azmain Turja
2022-08-12 19:06                                                                   ` tomas
2022-08-13  4:41                                                                     ` Akib Azmain Turja
2022-08-13  5:14                                                                       ` tomas
2022-08-13 11:57                                                                   ` Lynn Winebarger
2022-08-13 14:28                                                                     ` Akib Azmain Turja
2022-08-14 19:24                                                         ` Eric Ludlam
2022-08-16 10:42                                                           ` Lynn Winebarger
2022-08-17  1:56                                                             ` Eric Ludlam
2022-08-10 17:03                                                       ` Tassilo Horn
2022-08-13 14:40                                                       ` Jostein Kjønigsen
2022-08-14  1:23                                                         ` Po Lu
2022-08-16  9:06                                                           ` Lynn Winebarger
2022-08-16 11:05                                                             ` Po Lu
2022-08-16 11:41                                                             ` Eli Zaretskii
2022-08-16 16:33                                                               ` Lynn Winebarger
2022-08-16 17:19                                                                 ` Stefan Monnier
2022-08-16 17:40                                                                   ` Lynn Winebarger
2022-08-17  1:41                                                                     ` Eric Ludlam
2022-08-18 12:34                                                                       ` Lynn Winebarger
2022-08-20 13:15                                                                         ` Eric Ludlam
2022-08-08 18:20                           ` CC Mode with font-lock-maximum-decoration 2 Alan Mackenzie
2022-08-07 20:17     ` Major modes using `widen' is a good, even essential, programming practice Gregory Heytings
2022-08-07 20:46       ` Alan Mackenzie
2022-08-07 20:53         ` Gregory Heytings
2022-08-08  2:37         ` Eli Zaretskii
2022-08-08 10:33           ` Alan Mackenzie
2022-08-08 11:41             ` Eli Zaretskii
2022-08-07 23:21     ` Stefan Monnier
2022-08-08  2:29       ` Eli Zaretskii
2022-08-08  9:25         ` Stefan Monnier
2022-08-08 11:16           ` Lynn Winebarger
2022-08-08 11:47             ` Eli Zaretskii
2022-08-08 14:24               ` Lynn Winebarger
2022-08-08 11:30           ` Eli Zaretskii
2022-08-08 12:05             ` Stefan Monnier
2022-08-08 12:40               ` Eli Zaretskii
2022-08-08 17:22                 ` Stefan Monnier
2022-08-08 17:34                   ` Eli Zaretskii
2022-08-08 21:16             ` Dmitry Gutov
2022-08-09 11:30               ` Eli Zaretskii
2022-08-09 14:38                 ` Dmitry Gutov
2022-08-09 16:12                   ` Eli Zaretskii
2022-08-09 16:52                     ` Dmitry Gutov
2022-08-09 17:05                       ` Eli Zaretskii
2022-08-09 18:52                         ` Dmitry Gutov
2022-08-09 19:46                           ` Gregory Heytings
2022-08-08 10:38       ` Alan Mackenzie
2022-08-08 11:49         ` Eli Zaretskii
2022-08-08 10:41       ` Gregory Heytings
2022-08-07 17:57 ` Dmitry Gutov
2022-08-22 11:26   ` Alan Mackenzie
2022-08-22 23:59     ` Dmitry Gutov

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=Yu/IkMyxWjvROVRn@ACM \
    --to=acm@muc.de \
    --cc=emacs-devel@gnu.org \
    --cc=gregory@heytings.org \
    /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).