unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Alan Mackenzie <acm@muc.de>
Cc: emacs-devel@gnu.org
Subject: Re: Unbalanced change hooks (part 2)
Date: Sun, 07 Aug 2016 20:55:37 -0400	[thread overview]
Message-ID: <jwvh9awp36q.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <20160807214813.GB3690@acm.fritz.box> (Alan Mackenzie's message of "Sun, 7 Aug 2016 21:48:13 +0000")

> For some types of information this would be easy (such as putting text
> properties over C++ raw strings), for others it would be difficult (such
> as maintaining the integrity of the c-parse-state cache (yes, _that_
> thing)).

For this one, you don't need to know what changed either.  You just
restart from some point before BEG and compare the resulting state at
some point after END (after potentially adjusting the old state's
positions based on LENGTH).

> I now have an idea (see my recent post to Eli) to _make_ these hook
> calls properly paired.  This should be reliable and easy to implement.

I personally can't see any way you can make them properly paired in 100%
of the cases (including the case where one of the hooks itself makes
a buffer modification, for example).

> You seem to be arguing that using all the information about a change is
> more complicated than ignoring some of it.

Oh, yes.  And my attempt at using syntax-propertize in CC-mode comforts
me in this belief (even tho, I obviously only did the easy part).

> I can't see how that can be the case.  If one is missing part of the
> information, it is surely going to be rather complicated to work
> around that lack.

As Eli pointed out several times already, your code *has* to handle the
case where you have no prior knowledge, because that's what happens when
you open the file (or when you insert a new chunk of text).

So actually trying to use the information about "what was there before"
is extra effort.

> Have you ever tried doing things the "CC Mode way", i.e. using
> information from before-change-functions in an essential fashion?

No, because I know it's based on an invalid assumption.

> If so, please tell me about it, and what it was that brought you to
> giving up on it.

But as mentioned above, I've since had a look at what it takes to go
from "the CC-mode way" to "the usual way", and it mostly involves
removing (somewhat duplicate) code.


        Stefan



  reply	other threads:[~2016-08-08  0:55 UTC|newest]

Thread overview: 189+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-31 12:16 Unbalanced change hooks (part 2) Alan Mackenzie
2016-07-31 13:58 ` Noam Postavsky
2016-07-31 15:21   ` Alan Mackenzie
2016-07-31 15:03 ` Eli Zaretskii
2016-07-31 17:28   ` Alan Mackenzie
2016-07-31 18:11     ` Eli Zaretskii
2016-07-31 18:52       ` Eli Zaretskii
2016-07-31 19:08         ` Eli Zaretskii
2016-07-31 19:20       ` Noam Postavsky
2016-07-31 21:26       ` Alan Mackenzie
2016-08-01 13:01         ` Stefan Monnier
2016-08-01 13:07         ` Eli Zaretskii
2016-08-01 16:53           ` Alan Mackenzie
2016-08-01 17:15             ` Alan Mackenzie
2016-08-01 19:39               ` Eli Zaretskii
2016-08-01 20:52                 ` Alan Mackenzie
2016-08-02 14:44                   ` Eli Zaretskii
2016-08-02 16:09                     ` Alan Mackenzie
2016-08-02 16:42                       ` Eli Zaretskii
2016-08-02 17:24                       ` Stefan Monnier
2016-08-07 14:49                         ` Alan Mackenzie
2016-08-07 15:09                           ` Stefan Monnier
2016-08-07 21:48                             ` Alan Mackenzie
2016-08-08  0:55                               ` Stefan Monnier [this message]
2016-08-02 14:46                   ` Stefan Monnier
2016-08-01 19:37             ` Eli Zaretskii
2016-08-02 14:39             ` Stefan Monnier
2016-07-31 18:55     ` Stefan Monnier
2016-07-31 19:26       ` Eli Zaretskii
2016-07-31 21:59         ` Stefan Monnier
2016-08-01 13:09           ` Eli Zaretskii
2016-08-01 14:36             ` Stefan Monnier
2016-08-01 14:48               ` Eli Zaretskii
2016-08-01 15:28                 ` Stefan Monnier
2016-07-31 19:33       ` Alan Mackenzie
2016-07-31 19:21     ` Eli Zaretskii
2016-08-09 15:01   ` Alan Mackenzie
2016-08-09 15:14     ` Eli Zaretskii
2016-08-19 14:51   ` Phillip Lord
2016-08-30  1:15     ` Stefan Monnier
2016-08-30 14:34       ` Phillip Lord
2016-08-30 15:11         ` Stefan Monnier
2016-08-31 11:00           ` Phillip Lord
2016-08-31 12:24             ` Stefan Monnier
2016-09-01  6:49               ` Phillip Lord
2016-09-01 13:36                 ` Stefan Monnier
2016-09-01  6:40           ` Phillip Lord
2016-09-01 13:33             ` Stefan Monnier
2016-09-02 11:34               ` Phillip Lord
2016-08-30 16:08         ` Eli Zaretskii
2016-08-01 16:38 ` Richard Stallman
2016-08-02 10:15   ` Alan Mackenzie
2016-08-02 10:37     ` Richard Copley
2016-08-02 16:11       ` Alan Mackenzie
2016-08-02 14:57     ` Eli Zaretskii
2016-08-02 16:55       ` Alan Mackenzie
2016-08-02 17:17         ` Eli Zaretskii
2016-08-02 18:30           ` Eli Zaretskii
2016-08-02 19:38             ` Alan Mackenzie
2016-08-03  2:36               ` Eli Zaretskii
2016-08-08 14:36             ` Alan Mackenzie
2016-08-08 15:42               ` Eli Zaretskii
2016-08-08 16:54                 ` Alan Mackenzie
2016-08-08 17:17                   ` Eli Zaretskii
2016-08-08 18:42                     ` Alan Mackenzie
2016-08-08 19:04                       ` Eli Zaretskii
2016-08-08 19:54                         ` Unbalanced change hooks (part 2) [PATCH] Alan Mackenzie
2016-08-09 15:08                           ` Eli Zaretskii
2016-08-09 16:38                             ` Unbalanced change hooks (part 2) [Documentation fix still remaining] Alan Mackenzie
2016-08-09 16:42                               ` Eli Zaretskii
2016-08-09 18:13                                 ` Eli Zaretskii
2016-08-09 18:35                                   ` Alan Mackenzie
2016-08-09 17:14                               ` Stefan Monnier
2016-08-09 18:19                                 ` Eli Zaretskii
2016-08-09 19:09                                   ` Stefan Monnier
2016-08-10 14:21                                     ` Eli Zaretskii
2016-08-10 14:56                                       ` Stefan Monnier
2016-08-10 15:16                                         ` Alan Mackenzie
2016-08-10 15:44                                           ` Stefan Monnier
2016-08-10 16:03                                         ` Eli Zaretskii
2016-08-10 16:11                                           ` Stefan Monnier
2016-08-18 14:26                                             ` Eli Zaretskii
2016-08-18 16:56                                               ` Stefan Monnier
2016-08-19  8:45                                               ` Alan Mackenzie
2016-08-19  9:12                                                 ` Eli Zaretskii
2016-08-19  9:21                                                   ` Stefan Monnier
2016-08-19  9:39                                                     ` Eli Zaretskii
2016-08-19  9:19                                                 ` Stefan Monnier
2016-08-10 16:18                                           ` Alan Mackenzie
2016-08-10 16:54                                             ` Eli Zaretskii
2016-08-10 17:49                                               ` Alan Mackenzie
2016-08-10 18:10                                                 ` Eli Zaretskii
2016-08-10 18:57                                               ` Alan Mackenzie
2016-08-10 19:08                                                 ` Eli Zaretskii
2016-08-10 19:50                                                 ` Stefan Monnier
2016-08-11 11:29                                                   ` Alan Mackenzie
2016-08-11 16:43                                                     ` Stefan Monnier
2016-08-28 11:23                                                       ` Daniel Colascione
2016-08-28 15:01                                                         ` Stefan Monnier
2016-08-28 22:16                                                           ` Daniel Colascione
2016-08-28 22:44                                                             ` Stefan Monnier
2016-08-28 23:11                                                               ` Daniel Colascione
2016-08-29  0:09                                                                 ` Stefan Monnier
2016-08-29  3:18                                                                   ` Daniel Colascione
2016-08-29 13:00                                                                     ` Stefan Monnier
2016-08-29 14:51                                                                       ` Eli Zaretskii
2016-08-29 15:50                                                                         ` Stefan Monnier
2016-08-29 16:22                                                                           ` Eli Zaretskii
2016-08-29 15:14                                                                       ` Daniel Colascione
2016-08-29 15:44                                                                         ` Stefan Monnier
2016-08-30 14:07                                                                           ` Phillip Lord
2016-08-30 15:51                                                                             ` Eli Zaretskii
2016-08-30 16:22                                                                               ` Daniel Colascione
2016-08-30 16:46                                                                                 ` Eli Zaretskii
2016-08-29 14:50                                                                     ` Eli Zaretskii
2016-08-29 15:30                                                                       ` Daniel Colascione
2016-08-29 16:20                                                                         ` Eli Zaretskii
2016-08-29 16:26                                                                           ` Daniel Colascione
2016-08-29 17:01                                                                             ` Eli Zaretskii
2016-08-29 17:48                                                                               ` Daniel Colascione
2016-08-29 18:04                                                                                 ` Eli Zaretskii
2016-08-29 18:16                                                                                   ` Eli Zaretskii
2016-08-30  2:27                                                                                     ` Daniel Colascione
2016-08-30  2:44                                                                                       ` Eli Zaretskii
2016-08-30  0:25                                                                                   ` Stefan Monnier
2016-08-30  2:26                                                                                     ` Daniel Colascione
2016-08-30  2:38                                                                                     ` Eli Zaretskii
2016-08-30  2:54                                                                                       ` Daniel Colascione
2016-08-30 14:20                                                                                         ` Phillip Lord
2016-08-30 15:08                                                                                         ` Eli Zaretskii
2016-08-30 12:56                                                                                       ` Stefan Monnier
2016-08-30 14:12                                                                       ` Phillip Lord
2016-08-30 16:06                                                                         ` Eli Zaretskii
2016-08-31 11:20                                                                           ` Phillip Lord
2016-08-31 14:57                                                                             ` Eli Zaretskii
2016-08-30 17:12                                                                       ` Alan Mackenzie
2016-08-30 17:27                                                                         ` Daniel Colascione
2016-08-30 17:42                                                                           ` Eli Zaretskii
2016-08-30 17:46                                                                             ` Daniel Colascione
2016-08-30 18:00                                                                               ` Eli Zaretskii
2016-08-30 18:04                                                                                 ` Daniel Colascione
2016-08-30 18:46                                                                                   ` Eli Zaretskii
2016-08-30 18:58                                                                                     ` Daniel Colascione
2016-08-30 19:17                                                                                       ` Eli Zaretskii
2016-08-30 21:46                                                                                     ` Stefan Monnier
2016-08-31  2:38                                                                                       ` Eli Zaretskii
2016-08-30 18:27                                                                                 ` Stefan Monnier
2016-09-01 13:46                                                                                   ` Eli Zaretskii
2016-08-30 18:01                                                                               ` Alan Mackenzie
2016-08-30 18:06                                                                                 ` Daniel Colascione
2016-08-30 18:17                                                                                   ` Daniel Colascione
2016-08-30 18:30                                                                                     ` Alan Mackenzie
2016-08-30 18:32                                                                                       ` Daniel Colascione
2016-08-30 18:47                                                                                         ` Alan Mackenzie
2016-08-30 18:55                                                                                           ` Daniel Colascione
2016-08-30 19:14                                                                                             ` Alan Mackenzie
2016-08-30 20:34                                                                                               ` Stefan Monnier
2016-08-30 20:53                                                                                                 ` Alan Mackenzie
2016-08-30 21:37                                                                                                   ` Stefan Monnier
2016-08-30 18:36                                                                                       ` Stefan Monnier
2016-08-30 18:22                                                                             ` Stefan Monnier
2016-08-30 18:00                                                                           ` Stefan Monnier
2016-08-30 17:27                                                                         ` Eli Zaretskii
2016-08-30 17:42                                                                           ` Alan Mackenzie
2016-08-30 17:53                                                                             ` Eli Zaretskii
2016-08-30 18:16                                                                               ` Alan Mackenzie
2016-08-30 18:51                                                                                 ` Eli Zaretskii
2016-08-30 19:00                                                                                   ` Alan Mackenzie
2016-08-30 18:14                                                                             ` Stefan Monnier
2016-09-01 21:25                                                                       ` Davis Herring
2016-09-02  7:26                                                                         ` Eli Zaretskii
2016-08-28 22:36                                                         ` Stefan Monnier
2016-08-30 13:30                                                         ` Phillip Lord
2016-08-30 13:39                                                           ` Stefan Monnier
2016-08-31 11:04                                                             ` Phillip Lord
2016-08-30 15:47                                                           ` Eli Zaretskii
2016-08-30 16:01                                                             ` Stefan Monnier
2016-08-30 16:58                                                               ` Eli Zaretskii
2016-08-30 17:57                                                                 ` Stefan Monnier
2016-08-31 11:17                                                                   ` Phillip Lord
2016-08-31 11:12                                                                 ` Phillip Lord
2016-08-30 16:23                                                             ` Daniel Colascione
2016-08-30 16:53                                                               ` Eli Zaretskii
2016-08-02 19:00           ` Unbalanced change hooks (part 2) Alan Mackenzie
2016-08-02 19:25             ` Eli Zaretskii
2016-08-07 21:16               ` Alan Mackenzie
2016-08-08 15:38                 ` Eli Zaretskii
2016-08-08 19:56                 ` Stefan Monnier
2016-08-08 20:16                   ` Alan Mackenzie

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=jwvh9awp36q.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=acm@muc.de \
    --cc=emacs-devel@gnu.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).