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: forward-comment and syntax-ppss
Date: Fri, 09 Dec 2016 13:47:53 -0500	[thread overview]
Message-ID: <jwv7f79yn51.fsf-monnier+Inbox@gnu.org> (raw)
In-Reply-To: <20161209180059.GB2203@acm.fritz.box> (Alan Mackenzie's message of "Fri, 9 Dec 2016 18:00:59 +0000")

>> > Nor should it.  Our primitives `car', `cdr', `list', etc. also don't say
>> > what the intention behind them is; they just work.  Narrowing is what it
>> > is.  Simple and austere.   Complexifying narrowing by introducing a
>> > notion of "intention" would surely make it more difficult to use and
>> > possibly foul things up massively.
>> Yet, you want to use (parse-partial-sexp 1 POS), which only makes sense
>> if you treat narrowing as having a particular intention.
> No.  It makes sense, full stop.  If it doesn't, then the notion of
> narrowing doesn't make sense either.

What is your understanding of "narrowing"?  In my book, what it means is
"make the text outside of the region inaccessible".  So why should
syntax-ppss be granted an exception (note: I don't disagree that it can
make sense to grant an exception for it, but that granting it an
exception only makes sense based on some expected usage context of
narrowing, i.e. based on the intention behind its use).

> There is nothing in the notion of narrowing which suggests that it
> should change the syntactic context of any text - if a certain buffer
> position is inside a string, it is inside the string; it doesn't
> suddenly become outside the string by virtue of where the buffer is
> narrowed.  Were that not the case, the notion "inside a string" would
> become meaningless.

Let's take sm-c-mode as an example: it marks CPP preprocessor elements
as being comments.  Yet, it also wants to know if there are strings
inside that "comment", so it narrows to the "comment" and then
parses the result as a chunk of C code.
[ Whether this approach is good or bad is beside the point: this
  is just an example of narrowing, where the context should not affect
  what is considered "inside a string" or not.  ]

Other examples come from the context of
multiple-major-modes-in-a-buffer.

Yet others come from the use of narrowing in things like Info-mode and
Rmail (where a large buffer contains many "pages" and that's an
implementation detail: the user only cares about the pages and not
whether they're kept in a single buffer/file or not).

>> Of course it can.  Here are two easy options:
>> - flush the cache if point-min is different from last time.
> Likely, the cache would be flushed so much it wouldn't really serve much
> purpose.

Could be.  Then again, maybe not.  After all, you're saying that the
only "meaningful" use is when the scan starts at 1, so the overwhelming
majority of uses should be in a widened buffer (or are errors that need
to be fixed).

Only experimentation could say that.  But FWIW, my gut feeling agrees
with yours.

>> - index the cache with point-min.
> I don't understand what you mean by this.

The cache is currently (conceptually) a function which takes a buffer
position and returns to you an earlier position, along with the state at
that position.

Change this so that the function takes additionally `point-min` as
argument, so it can keep different states for the same positions,
depending on the `point-min` that was used to compute that state.

Or more concretely, replace `syntax-ppss-cache` with (assq (point-min)
syntax-ppss-cache-alist).

>> Currently any code which relies on syntax-ppss returning
>> (parse-partial-sexp (point-min) POS) when narrowed is broken anyway,
>> so we can easily make such a change.
> No, that code is not broken.

Together with the existing implementation of syntax-ppss, it's very
unlikely to work reliably.

> It is syntax-ppss that is broken.  If you replace syntax-ppss with
> a different function (as I have been advocating), that is going to
> break some code which uses syntax-ppss.

I think that any such breakage could be reproduced with the current
implementation of syntax-ppss, which would mean that the problem is not
a new problem introduced by the "different" function.

>> We're talking about changing 3 lines of doc and 2 lines of code.
>> Why would you describe such a trivial change as "retire and replace"?
> Because we're talking about a different function which does a job
> different from what syntax-ppss is specified to do.  That is not a minor
> change, regardless of how few lines of code and documentation need to be
> changed.

I consider the behavior of syntax-ppss when point-min!=1 to be
currently undefined (and indeed, it's unreliable).

So what we're discussing is how to refine/augment/improve the behavior,
rather than introducing a brand new behavior.


        Stefan



  reply	other threads:[~2016-12-09 18:47 UTC|newest]

Thread overview: 299+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-28 19:50 Preview: portable dumper Daniel Colascione
2016-11-28 19:58 ` Burton Samograd
2016-11-28 20:11   ` Daniel Colascione
2016-11-28 20:12 ` Eli Zaretskii
2016-11-28 20:14   ` Daniel Colascione
2016-11-28 20:16     ` Daniel Colascione
2016-11-28 20:29     ` Eli Zaretskii
2016-11-28 20:20   ` John Wiegley
2016-11-28 20:22     ` Daniel Colascione
2016-11-28 20:26       ` John Wiegley
2016-11-28 20:31         ` Daniel Colascione
2016-11-28 20:37           ` Burton Samograd
2016-11-28 20:44             ` Daniel Colascione
2016-11-29 16:02               ` Ted Zlatanov
2016-11-29 17:58                 ` Daniel Colascione
2016-11-29 16:48               ` Richard Stallman
2016-11-29 17:32                 ` Daniel Colascione
2016-11-29 19:55                   ` Philippe Vaucher
2016-11-29 17:43                 ` Eli Zaretskii
2016-11-29 17:49                   ` Daniel Colascione
2016-11-29 18:17                     ` Eli Zaretskii
2016-11-29 18:03                   ` John Wiegley
2016-11-29 18:23                     ` Eli Zaretskii
2016-11-29 18:49                       ` Daniel Colascione
2016-11-29 19:02                         ` Eli Zaretskii
2016-12-01  9:18                         ` Richard Stallman
2016-12-01 18:11                           ` Eli Zaretskii
2016-12-02  4:28                             ` Ken Raeburn
2016-12-02  4:41                               ` Daniel Colascione
2016-12-02  8:08                                 ` Eli Zaretskii
2016-12-02  8:03                               ` Eli Zaretskii
2016-12-02 17:24                                 ` Ken Raeburn
2016-11-28 20:39           ` John Wiegley
2016-11-28 20:34         ` Burton Samograd
2016-11-28 20:31     ` Eli Zaretskii
2016-11-28 20:21   ` Paul Eggert
2016-11-28 20:34     ` Eli Zaretskii
2016-11-28 20:47       ` John Wiegley
2016-11-28 21:14         ` Eli Zaretskii
2016-11-28 21:55           ` Daniel Colascione
2016-11-28 22:18           ` John Wiegley
2016-11-29 18:40             ` Eli Zaretskii
2016-11-29 19:11               ` John Wiegley
2016-11-29 20:07                 ` Eli Zaretskii
2016-11-29 20:29                   ` John Wiegley
2016-11-29 20:36                     ` Daniel Colascione
2016-11-29 21:30                       ` John Wiegley
2016-11-30  8:26                       ` Philippe Vaucher
2016-11-29 19:12               ` Daniel Colascione
2016-11-29 16:55   ` Richard Stallman
2016-11-29 18:39     ` Eli Zaretskii
2016-11-29 19:03       ` Daniel Colascione
2016-11-29 19:59         ` Eli Zaretskii
2016-11-29 20:28           ` John Wiegley
2016-11-29 19:13       ` Paul Eggert
2016-11-29 19:35         ` Eli Zaretskii
2016-11-29 20:54           ` Paul Eggert
2016-11-30 16:38             ` Eli Zaretskii
2016-11-30 18:57               ` John Wiegley
2016-11-30 19:14                 ` Daniel Colascione
2016-11-30 21:03                   ` John Wiegley
2016-11-30 21:06                     ` Paul Eggert
2016-11-30 21:44                       ` John Wiegley
2016-12-01  3:32                       ` Eli Zaretskii
2016-12-01  9:16                         ` Paul Eggert
2016-12-01 17:26                           ` Eli Zaretskii
2016-12-01 17:35                             ` Daniel Colascione
2016-12-01 17:58                             ` Paul Eggert
2016-11-30 21:35                     ` Daniel Colascione
2016-11-30 21:44                       ` John Wiegley
2016-11-30 21:50                         ` Daniel Colascione
2016-11-30 22:20                           ` John Wiegley
2016-12-01  1:37                           ` Paul Eggert
2016-12-01  1:45                             ` Daniel Colascione
2016-12-01  3:47                           ` Eli Zaretskii
2016-12-01  4:10                             ` John Wiegley
2016-12-01  4:12                               ` Daniel Colascione
2016-12-01  4:49                                 ` John Wiegley
2016-12-01  5:12                                   ` Daniel Colascione
2016-12-01  9:03                                     ` Matt Armstrong
2016-12-02  8:10                                       ` John Wiegley
2016-12-01  9:18                                     ` Phillip Lord
2016-12-01  4:10                             ` Daniel Colascione
2016-12-01  3:41                         ` Eli Zaretskii
2016-11-30 19:29                 ` Philippe Vaucher
2016-11-30 19:45                   ` Daniel Colascione
2016-11-30 21:06               ` Paul Eggert
2016-12-01  9:18       ` Richard Stallman
2016-12-01 18:09         ` Eli Zaretskii
2016-12-02  2:18           ` Stefan Monnier
2016-12-02  7:54             ` Eli Zaretskii
2016-12-02  8:08               ` John Wiegley
2016-12-02  8:59                 ` Eli Zaretskii
2016-12-02 19:39                   ` John Wiegley
2016-12-02 20:11                     ` Karl Fogel
2016-12-02 21:22                       ` Daniel Colascione
2016-12-02 22:06                         ` Eli Zaretskii
2016-12-02 23:15                         ` Karl Fogel
2016-12-15 14:28                         ` Philippe Vaucher
2017-10-18 23:36                           ` Kaushal Modi
2017-10-19 10:12                             ` Jeremie Courreges-Anglas
2018-02-12 20:18                               ` Daniel Colascione
2018-02-13 16:37                                 ` Eli Zaretskii
2018-02-14 21:03                                   ` Philipp Stephani
2018-02-15  0:42                                     ` Daniel Colascione
2018-02-15 23:31                                   ` Ken Brown
2018-02-15 23:36                                     ` Daniel Colascione
2018-02-16  1:56                                       ` Ken Brown
2018-02-16  2:36                                         ` Daniel Colascione
2018-02-17 23:38                                           ` Ken Brown
2018-02-17 23:59                                             ` Ken Brown
2018-02-18  0:02                                             ` Daniel Colascione
2018-02-19 13:30                                               ` Ken Brown
2018-02-19 17:03                                                 ` Daniel Colascione
2018-02-19 22:33                                                   ` Ken Brown
2018-02-20 16:32                                                     ` Ken Brown
2018-02-20 17:23                                                       ` Daniel Colascione
2018-02-20  1:16                                                   ` Andy Moreton
2018-02-17  1:01                                   ` Clément Pit-Claudel
2018-02-19 17:06                                     ` Daniel Colascione
2018-02-19 22:00                                       ` Clément Pit-Claudel
2018-02-17 11:53                                   ` Charles A. Roelli
2018-02-17 12:09                                     ` Alan Third
2018-02-17 14:12                                       ` Charles A. Roelli
2018-02-20  0:54                                   ` Andy Moreton
2018-02-15  4:28                                 ` Stefan Monnier
2018-02-15 22:13                                   ` Daniel Colascione
2018-02-15 22:30                                     ` Paul Eggert
2018-02-15 22:35                                       ` Daniel Colascione
2018-02-15 22:56                                         ` Paul Eggert
2018-02-15 22:35                                     ` Paul Eggert
2018-02-15 18:34                                 ` andres.ramirez
2018-02-19 22:01                                 ` Daniele Nicolodi
2018-02-20  0:28                                   ` Daniel Colascione
2016-12-02 22:06                       ` Eli Zaretskii
2016-12-02 22:28                         ` Daniel Colascione
2016-12-03  8:48                           ` Eli Zaretskii
2016-12-03  9:34                             ` Daniel Colascione
2016-12-03 12:47                               ` Eli Zaretskii
2016-12-03 14:36                                 ` Alan Mackenzie
2016-12-03 15:11                                   ` Eli Zaretskii
2016-12-04 12:20                                     ` Alan Mackenzie
2016-12-04 12:48                                       ` Dmitry Gutov
2016-12-04 15:53                                       ` Eli Zaretskii
2016-12-03 17:36                                   ` Daniel Colascione
2016-12-03 17:40                                     ` Dmitry Gutov
2016-12-03 21:09                                       ` Stefan Monnier
2016-12-03 21:31                                         ` Daniel Colascione
2016-12-04  4:25                                           ` Stefan Monnier
2016-12-04 12:34                                         ` Alan Mackenzie
2016-12-04 12:51                                           ` Dmitry Gutov
2016-12-04 14:08                                           ` Stefan Monnier
2016-12-04 15:22                                             ` Alan Mackenzie
2016-12-04 22:24                                             ` forward-comment and syntax-ppss (was: Preview: portable dumper) Stefan Monnier
2016-12-06 19:55                                               ` Alan Mackenzie
2016-12-06 22:56                                                 ` forward-comment and syntax-ppss Stefan Monnier
2016-12-07  6:55                                                   ` Andreas Röhler
2016-12-07 14:01                                                     ` Stefan Monnier
2016-12-07 14:49                                                       ` Andreas Röhler
2016-12-07 14:53                                                         ` Clément Pit--Claudel
2016-12-07 22:04                                                           ` Alan Mackenzie
2016-12-07 22:23                                                             ` Clément Pit--Claudel
2016-12-08 19:31                                                               ` Alan Mackenzie
2016-12-08 19:54                                                                 ` Clément Pit--Claudel
2016-12-09  8:37                                                                   ` Eli Zaretskii
2016-12-08  2:32                                                             ` Stefan Monnier
2016-12-08 20:15                                                               ` Alan Mackenzie
2016-12-08 20:34                                                                 ` Clément Pit--Claudel
2016-12-08 21:25                                                                   ` Dmitry Gutov
2016-12-08 21:35                                                                   ` Stefan Monnier
2016-12-08 21:13                                                                 ` Stefan Monnier
2016-12-09 18:00                                                                   ` Alan Mackenzie
2016-12-09 18:47                                                                     ` Stefan Monnier [this message]
2016-12-09 22:33                                                                       ` Clément Pit--Claudel
2016-12-09 23:09                                                                         ` Alan Mackenzie
2016-12-10  6:56                                                                         ` Eli Zaretskii
2016-12-10 18:39                                                                       ` Andreas Röhler
2016-12-08 21:24                                                                 ` Dmitry Gutov
2016-12-08 21:47                                                                   ` Stefan Monnier
2016-12-09  7:39                                                                     ` Andreas Röhler
2016-12-09 19:07                                                                   ` Alan Mackenzie
2016-12-09 23:30                                                                     ` Dmitry Gutov
2016-12-11  0:24                                                                       ` Stefan Monnier
2016-12-11 10:17                                                                       ` Alan Mackenzie
2016-12-11 10:40                                                                         ` Andreas Röhler
2016-12-16  1:33                                                                         ` Dmitry Gutov
2016-12-16  2:06                                                                           ` Drew Adams
2016-12-16  8:12                                                                             ` Eli Zaretskii
2016-12-16 12:32                                                                             ` Dmitry Gutov
2016-12-16 16:22                                                                               ` Drew Adams
2016-12-16 19:14                                                                                 ` Dmitry Gutov
2016-12-16 23:16                                                                                   ` Drew Adams
2016-12-17  0:08                                                                                     ` Dmitry Gutov
2016-12-16 19:25                                                                               ` Alan Mackenzie
2016-12-16 20:06                                                                                 ` Dmitry Gutov
2016-12-16 23:16                                                                                   ` Drew Adams
2016-12-17  0:42                                                                                     ` Dmitry Gutov
2016-12-17  1:30                                                                                       ` Drew Adams
2016-12-17  1:40                                                                                         ` Stefan Monnier
2016-12-17  2:26                                                                                           ` Drew Adams
2016-12-17 14:37                                                                                             ` Stefan Monnier
2016-12-16 14:24                                                                             ` Clément Pit--Claudel
2016-12-16 16:22                                                                               ` Drew Adams
2016-12-16 19:50                                                                                 ` Clément Pit--Claudel
2016-12-16 23:16                                                                                   ` Drew Adams
2016-12-17  2:39                                                                                     ` Clément Pit--Claudel
2016-12-17  4:50                                                                                       ` Wording of the Elisp manuals (was: forward-comment and syntax-ppss) Marcin Borkowski
2016-12-20  9:22                                                                                         ` Wording of the Elisp manuals Michael Heerdegen
2016-12-20 10:52                                                                                         ` Wording of the Elisp manuals (was: forward-comment and syntax-ppss) Jean-Christophe Helary
2016-12-20 16:01                                                                                           ` Eli Zaretskii
     [not found]                                                                             ` <<83oa0c8f7r.fsf@gnu.org>
2016-12-16 16:22                                                                               ` forward-comment and syntax-ppss Drew Adams
2016-12-16 21:00                                                                                 ` Eli Zaretskii
     [not found]                                                                                 ` <<8337hn8u81.fsf@gnu.org>
2016-12-16 23:16                                                                                   ` Drew Adams
2016-12-16 20:06                                                                           ` Alan Mackenzie
2016-12-16 22:08                                                                             ` Dmitry Gutov
2016-12-16 23:08                                                                               ` Stefan Monnier
2016-12-17  0:18                                                                                 ` Dmitry Gutov
2016-12-17  7:37                                                                                   ` Marcin Borkowski
2016-12-17  7:42                                                                                 ` Eli Zaretskii
2016-12-17 14:41                                                                                   ` Stefan Monnier
2016-12-17 14:49                                                                                     ` Eli Zaretskii
2016-12-17 15:09                                                                                       ` Lars Ingebrigtsen
2016-12-18 20:08                                                                                         ` Dmitry Gutov
2017-02-05 23:33                                                                                         ` Drew Adams
2016-12-17 15:38                                                                                       ` Stefan Monnier
2016-12-19  2:31                                                                                         ` Dmitry Gutov
2016-12-19 13:12                                                                                           ` Stefan Monnier
2016-12-19 13:34                                                                                             ` Dmitry Gutov
2016-12-19 14:17                                                                                               ` Stefan Monnier
2016-12-19 23:16                                                                                                 ` Dmitry Gutov
2016-12-20 13:33                                                                                                   ` Stefan Monnier
2017-11-29 23:48                                                                                                     ` multi-modes and widen (again), was: " Dmitry Gutov
2017-11-30 13:05                                                                                                       ` Stefan Monnier
2017-12-01 23:57                                                                                                         ` Dmitry Gutov
2016-12-16 23:16                                                                               ` Drew Adams
2016-12-09  8:35                                                                 ` Eli Zaretskii
2016-12-09 17:08                                                                   ` Alan Mackenzie
2016-12-09 17:22                                                                     ` Eli Zaretskii
2016-12-09 21:55                                                                       ` Richard Stallman
2016-12-03 21:31                                   ` Preview: portable dumper Richard Stallman
2016-12-04 12:41                                     ` Alan Mackenzie
2016-12-03 17:41                                 ` Paul Eggert
2016-12-03 19:49                                   ` Eli Zaretskii
2016-12-03 21:30                                 ` Richard Stallman
2016-12-04  3:31                                   ` Eli Zaretskii
2016-12-04 23:03                                     ` Richard Stallman
2016-12-03 17:24                               ` Paul Eggert
2016-12-03 15:56                             ` Stefan Monnier
2016-12-03 21:31                               ` Richard Stallman
2016-12-04 23:05                             ` Richard Stallman
2016-12-02 22:29                         ` John Wiegley
2016-12-03 21:28                         ` Richard Stallman
2016-12-04 15:57                           ` Eli Zaretskii
2016-12-04 17:12                             ` Daniel Colascione
2016-12-04 23:07                               ` Richard Stallman
2016-12-05  0:24                                 ` Daniel Colascione
2016-12-06 10:38                               ` Philippe Vaucher
2016-12-02  9:00               ` Philippe Vaucher
2016-12-02 10:56                 ` Eli Zaretskii
2017-05-26 19:48                   ` Thien-Thi Nguyen
2017-05-26 20:26                     ` Kaushal Modi
2017-05-27  7:27                       ` Thien-Thi Nguyen
2016-12-02 13:04               ` Stefan Monnier
2016-12-02 14:45                 ` Eli Zaretskii
2016-12-02 14:51                   ` Stefan Monnier
2016-12-02 22:24                     ` Richard Stallman
2016-12-02 23:32                       ` Stefan Monnier
2016-12-03  8:28                       ` Eli Zaretskii
2016-12-02 23:42                     ` Paul Eggert
2016-12-02 15:38                   ` Daniel Colascione
2016-12-02 17:26                   ` Ken Raeburn
2016-12-02 17:47                     ` Paul Eggert
     [not found]                   ` <<jwvlgvyv10x.fsf-monnier+Inbox@gnu.org>
     [not found]                     ` <<E1cCwGF-0002PT-Kq@fencepost.gnu.org>
2016-12-03  0:07                       ` Drew Adams
2016-12-03  8:25                         ` Eli Zaretskii
2016-12-03 20:40                           ` Joost Kremers
2016-12-03 21:30                         ` Richard Stallman
     [not found]                   ` <<<jwvlgvyv10x.fsf-monnier+Inbox@gnu.org>
     [not found]                     ` <<<E1cCwGF-0002PT-Kq@fencepost.gnu.org>
     [not found]                       ` <<2b63d48d-a678-49c2-a3a9-4f91d8d8bdb4@default>
     [not found]                         ` <<8337i5mnb5.fsf@gnu.org>
2016-12-03 16:14                           ` Drew Adams
2016-12-03 16:42                             ` Eli Zaretskii
2016-12-02 14:27           ` Richard Stallman
2016-11-28 21:14 ` Paul Eggert
2016-11-28 23:01 ` Stefan Monnier
2016-11-28 23:17   ` Daniel Colascione
2016-11-29 13:06     ` Stefan Monnier
2016-11-29 21:19       ` Daniel Colascione
2016-11-29 21:35         ` Paul Eggert
2016-11-29 21:50           ` Daniel Colascione
2016-11-29 22:01             ` Paul Eggert
2016-11-30  0:37               ` Daniel Colascione
2016-11-30  7:35                 ` Paul Eggert
2016-11-30 13:33                   ` Stefan Monnier
2016-11-30 20:07               ` Richard Stallman
2016-11-30 20:18                 ` Daniel Colascione
2016-12-03 21:32                   ` Richard Stallman
2016-12-03 21:37                     ` Daniel Colascione
2016-12-04 23:03                       ` Richard Stallman
2016-12-03 21:54                     ` Paul Eggert
2016-11-29 22:01           ` Stefan Monnier
2016-11-29 22:22           ` Philipp Stephani
2016-11-29 22:34             ` Paul Eggert

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=jwv7f79yn51.fsf-monnier+Inbox@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).