[Geany-Devel] PairTagHighlighter / Not auto clear previous highlight when click other tag

Colomban Wendling lists.ban at xxxxx
Mon Mar 9 16:19:16 UTC 2015


Hi,

tl;dr: I found the issue in the end, which is in a call from the plugin.
 Here below is my train of responses because they still are of some
interest, but you can skip directly to the last paragraph.

Le 09/03/2015 14:48, Volodymyr Kononenko a écrit :
> A search with git bisect has shown, that the bug was introduced with
> updating Scintilla to 3.3.2:
> 
> […]
> 
> Similar issue <http://sourceforge.net/p/scintilla/bugs/1604/> I've found
> on Scintilla bug tracker was fixed only for win32 - here is the patch
> <http://sourceforge.net/p/scintilla/code/ci/23f89aef53c7ab73bdd45ae1302b97698682e3cd>.

I highly doubt it's anything like the same issue, because the one
described here is a redraw issue, which should get fixed when triggering
another redraw, like e.g. scrolling the offending part offscreen and
back, while the issues I see with pairtaghighlighter persist after
redraws (which means the indicators themselves are still here).

Moreover, clearing the indicators on the whole buffer:

> scintilla_send_message(sci, SCI_INDICATORCLEARRANGE, 0, sci_get_length(sci));

instead of only the range passed to the function fixes the issue for me,
so I would really bet on inappropriate clear range.

Which is indeed kind of weird because it really does work with 1.23 and
not 1.24, even with the very same plugin .so.

> I tried to detect the first Scintilla commit, which introduced the
> issue, but I see that merging Scintilla to Geany sources is non-trivial.
> Build failed after the first attempt.
> 
> Folks, what do you think about it? Is it enough information that it is
> Scintilla issue and we need to report it or something was not taken into
> account during upgrading to 3.3.2?

Actually it's the plugin's SCI_INDICATORCLEARRANGE
 <http://www.scintilla.org/ScintillaDoc.html#SCI_INDICATORCLEARRANGE>
that is incorrect: the second parameter should be the *length* to clear,
not the end position.  Apparently earlier Scintilla versions were
forgiving on the range, but new ones aren't and do nothing with invalid
ranges.

I made you a PR fixing the issue:
https://github.com/geany/geany-plugins/pull/200


Regards,
Colomban


More information about the Devel mailing list