[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#22983: syntax-ppss returns wrong result.
From: |
Stefan Monnier |
Subject: |
bug#22983: syntax-ppss returns wrong result. |
Date: |
Sun, 13 Mar 2016 21:49:30 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) |
> That's pure sophistry. The semantics needed are quite clear:
For your use case, yes. It's quite clear *in your mind*. There are
other use cases. Worse yet: Elisp doesn't generally know if the
narrowing was setup by the user or by some Elisp caller up the stack.
So even if we were to pretend that the use-case is clear when the
narrowing is set by the user, we'd still have to figure out if that's
the case.
> Lets define them as I said in the previous paragraph. Or can you
> conceive of a use case where one would want narrowing to invert strings
> and non-strings, leaving comments totally random?
There's the case where some Elisp code does
(save-restriction
(narrow-to-region beg end
(with-syntax-table ...)))
to parse a sub-part of your buffer in a different way. Of course this
completely breaks syntax-ppss and friends. I need to do exactly that in
sm-c-mode (when parsing the C code inside CPP directives, since those
directives are marked as comments), for example and had to use
(let ((syntax-propertize-function nil)
(syntax-ppss-cache nil)
(syntax-ppss-last nil))
...)
to deal with it. It would be easy/natural to add a binding of
syntax-ppss-dont-widen in there (and/or literal-cache-dont-widen for
that matter).
> Do you have any views on how the bug should be resolved?
Look up some past discussions of how to number lines in a narrowed
buffer (same basic issue), where we discussed this.
We basically need to add information about which kind of narrowing is
in effect. IIRC one way suggested was to have 2 narrowing states at the
same time: the current one, plus a new one which is a kind of "hard
narrowing" (the current narrowing would have to be "narrower" than the
"hard narrowing"), with corresponding new kind of "widen".
Stefan
- bug#22983: syntax-ppss returns wrong result., Alan Mackenzie, 2016/03/11
- bug#22983: syntax-ppss returns wrong result., Dmitry Gutov, 2016/03/11
- bug#22983: syntax-ppss returns wrong result., Alan Mackenzie, 2016/03/11
- bug#22983: syntax-ppss returns wrong result., Dmitry Gutov, 2016/03/11
- bug#22983: syntax-ppss returns wrong result., Alan Mackenzie, 2016/03/11
- bug#22983: syntax-ppss returns wrong result., Dmitry Gutov, 2016/03/11
- bug#22983: syntax-ppss returns wrong result., Stefan Monnier, 2016/03/13
- bug#22983: syntax-ppss returns wrong result., Alan Mackenzie, 2016/03/13
- bug#22983: syntax-ppss returns wrong result., Dmitry Gutov, 2016/03/13
- bug#22983: syntax-ppss returns wrong result., Drew Adams, 2016/03/13
- bug#22983: syntax-ppss returns wrong result.,
Stefan Monnier <=
- bug#22983: syntax-ppss returns wrong result., Stefan Monnier, 2016/03/13
bug#22983: syntax-ppss returns wrong result., Andreas Röhler, 2016/03/13
bug#22983: syntax-ppss returns wrong result., Dmitry Gutov, 2016/03/17
bug#22983: syntax-ppss returns wrong result., Vitalie Spinu, 2016/03/19
bug#22983: syntax-ppss returns wrong result., Vitalie Spinu, 2016/03/19