From: Stefan Monnier <monnier@iro.umontreal.ca>
To: emacs-devel@gnu.org
Subject: Re: Bug #25608 and the comment-cache branch
Date: Thu, 16 Feb 2017 09:10:44 -0500 [thread overview]
Message-ID: <jwvinoamefp.fsf-monnier+gmane.emacs.devel@gnu.org> (raw)
In-Reply-To: 20170214211423.GA3090@acm
> It was a case of seeing if two distinct syntax tables were "the same"
> from the point of view of literals. In other words, they could parse
> parentheses, whitespace and so on however they liked, but comments and
> strings had to be parsed identically by both tables for them to count
> "the same".
Interesting. Indeed, given that syntax-ppss has to pay attention to
more than comments and strings, equivalence between syntax-tables is
never something I considered.
> This is an instance where syntax-ppss's ambitions count against it - on
> any set-syntax-table syntax-ppss's caches should really be cleared,
> strictly speaking.
As you know, syntax-ppss's caching is fairly naive currently and doesn't
make enough checks to give correct results in some cases. Changes in
the syntax-tables and in point-min being two examples discussed here.
I already suggested to fix the issue w.r.t point-min by replacing
syntax-ppss-cache with a table indexed by the value of point-min.
The same idea could be used for syntax-tables. I.e. make
syntax-ppss-cache indexed by the combination of syntax-table and
point-min.
Another option is to provide a `with-temp-syntactic-context` macro,
which would locally bind syntax-ppss-cache to nil. So code which needs
to temporarily use a different point-min and/or syntax-table for some
parsing&navigation work could use this macro to avoid being affected by
the normal cache as well as polluting the cache.
I use this approach of let-binding syntax-ppss-cache is sm-c-mode, for
example (and yes: it's a dirty hack since sm-c-mode shouldn't mess with
syntax-ppss's internals).
Which approach is best depends on the use: If that same syntax-table
will be reused many times (so caching between uses would be beneficial),
then indexing by syntax-table in syntax-ppss-cache is likely the better
choice, otherwise with-temp-syntactic-context is probably all you need.
Stefan
next prev parent reply other threads:[~2017-02-16 14:10 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-02 20:24 Bug #25608 and the comment-cache branch Alan Mackenzie
2017-02-02 20:47 ` Eli Zaretskii
2017-02-02 21:51 ` Alan Mackenzie
2017-02-02 22:15 ` Dmitry Gutov
2017-02-03 7:41 ` Eli Zaretskii
2017-02-03 17:29 ` Alan Mackenzie
2017-02-03 22:08 ` Dmitry Gutov
2017-02-04 10:24 ` Alan Mackenzie
2017-02-06 2:09 ` Dmitry Gutov
2017-02-06 19:24 ` Alan Mackenzie
2017-02-07 1:42 ` Dmitry Gutov
2017-02-07 19:21 ` Alan Mackenzie
2017-02-14 15:28 ` Dmitry Gutov
2017-02-14 16:38 ` Stefan Monnier
2017-02-22 2:25 ` Dmitry Gutov
2017-02-22 3:53 ` Stefan Monnier
2017-02-23 14:23 ` Dmitry Gutov
2017-02-23 14:48 ` Stefan Monnier
2017-02-24 7:46 ` Tom Tromey
2017-02-14 21:14 ` Alan Mackenzie
2017-02-16 14:10 ` Stefan Monnier [this message]
2017-02-18 10:44 ` Alan Mackenzie
2017-02-18 13:49 ` Stefan Monnier
2017-02-12 2:53 ` John Wiegley
2017-02-12 8:20 ` Elias Mårtenson
2017-02-12 10:47 ` Alan Mackenzie
2017-02-12 11:14 ` martin rudalics
2017-02-12 15:05 ` Andreas Röhler
2017-02-12 15:39 ` Eli Zaretskii
2017-02-05 22:00 ` Alan Mackenzie
2017-02-06 1:12 ` Stefan Monnier
2017-02-06 18:37 ` Alan Mackenzie
2017-02-08 17:20 ` Eli Zaretskii
2017-02-11 23:25 ` Alan Mackenzie
2017-02-12 0:55 ` Stefan Monnier
2017-02-12 12:05 ` Alan Mackenzie
2017-02-12 13:13 ` Juanma Barranquero
2017-02-12 15:57 ` Dmitry Gutov
2017-02-12 17:29 ` Alan Mackenzie
2017-02-12 20:35 ` Dmitry Gutov
2017-02-13 1:47 ` zhanghj
2017-02-13 5:50 ` Stefan Monnier
2017-02-13 6:45 ` zhanghj
2017-02-13 7:24 ` Stefan Monnier
2017-02-13 7:59 ` zhanghj
2017-02-13 9:25 ` Stefan Monnier
2017-02-13 16:14 ` Drew Adams
2017-02-13 7:05 ` zhanghj
2017-02-13 7:16 ` zhanghj
2017-02-13 14:57 ` Dmitry Gutov
2017-02-12 17:49 ` Stefan Monnier
2017-02-13 18:09 ` Alan Mackenzie
2017-02-13 19:34 ` Eli Zaretskii
2017-02-13 21:21 ` Stefan Monnier
2017-02-02 22:14 ` Dmitry Gutov
2017-02-03 16:44 ` Alan Mackenzie
2017-02-03 21:53 ` Dmitry Gutov
2017-02-04 11:02 ` Alan Mackenzie
2017-02-06 1:28 ` Dmitry Gutov
2017-02-06 19:37 ` Alan Mackenzie
2017-02-06 2:08 ` Stefan Monnier
2017-02-06 20:01 ` Alan Mackenzie
2017-02-06 22:33 ` Stefan Monnier
2017-02-07 21:24 ` Alan Mackenzie
2017-02-08 12:54 ` Stefan Monnier
2017-02-07 15:29 ` Eli Zaretskii
2017-02-07 21:09 ` Alan Mackenzie
2017-02-08 17:28 ` Eli Zaretskii
2017-02-02 23:57 ` Stefan Monnier
2017-02-03 16:19 ` Alan Mackenzie
2017-02-04 9:06 ` Andreas Röhler
2017-02-04 18:18 ` Stefan Monnier
2017-02-04 18:28 ` Alan Mackenzie
2017-02-03 7:49 ` Yuri Khan
2017-02-03 18:30 ` Andreas Röhler
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=jwvinoamefp.fsf-monnier+gmane.emacs.devel@gnu.org \
--to=monnier@iro.umontreal.ca \
--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).