|
From: | Dmitry Gutov |
Subject: | bug#22983: syntax-ppss returns wrong result. |
Date: | Fri, 11 Mar 2016 22:31:50 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.0 |
On 03/11/2016 05:15 PM, Alan Mackenzie wrote:
At this point, `ppss-1' and `parse' should match (apart from elements 2 and 6). What we actually have is: ppss-1: (2 39992 nil nil nil nil 2 nil nil (39975 39992)) parse: (0 nil 15674 34 nil nil 0 nil 15675 nil)
I think you mean that ppss-0 and ppss-1 must match independent of narrowing, and also match (parse-partial-sexp 1 40000).
Considering narrowing can change point-min arbitrarily, specifying (syntax-ppss pos) as (parse-partial-sexp (point-min) pos) is a losing proposition if you want consistency.
Alas, we have some code out there that implements multiple-major-mode functionality using narrowing and some hacking of syntax-ppss-last syntax-ppss-cache values.
Changing syntax-ppss to be independent of narrowing will break it, and we'll need to provide some alternative first.
We could introduce a syntax-ppss-dont-widen variable, though. Similar to font-lock-dont-widen.
[Prev in Thread] | Current Thread | [Next in Thread] |