[Geany-Users] Find, regex, spans lines

2014-07-31 Thread Péter
When I issue a Find, with regular expression like [^Q]*Q, Geany behaves strangely: the highlight 
(the string found) spans many lines. The [^Q]* matches as if the lines were joined.

(The search is *not* line-based.)

Do you experience the same?
Why does geany behave like this?
How to alter this behaviour?

--
Péter



___
Users mailing list
Users@lists.geany.org
https://lists.geany.org/cgi-bin/mailman/listinfo/users


Re: [Geany-Users] Find, regex, spans lines

2014-07-31 Thread Lex Trotman
On 1 August 2014 04:27, Colomban Wendling lists@herbesfolles.org wrote:
 Le 31/07/2014 19:52, Péter a écrit :
 When I issue a Find, with regular expression like [^Q]*Q, Geany
 behaves strangely: the highlight (the string found) spans many lines.
 The [^Q]* matches as if the lines were joined.
 (The search is *not* line-based.)

 Do you experience the same?

 Yes

 Why does geany behave like this?

 For technical reasons, and because although I started some work for
 line-based RE support, I didn't finish it (yet).

 If you're interested in the technical reason, it's quite simple: we use
 a multiline-capable regex engine and we pass it a pointer to the whole
 buffer instead of feeding it line-by line -- hence allowing it to
 perform multi-line matches.

And thats the right thing to do IM(NS)HO.

To make searches anchored to lines you need to explicitly us the
anchors ^ and $, and to facilitate this we set MULTILINE mode by
default though you can set flags in the regex (?m).

Cheers
Lex


 How to alter this behaviour?

 First, let's see why it doesn't already do what you want:  even though
 the DOTALL option is not enabled (which means . won't match a
 newline), you can match newlines (e.g. with \n).  But as you use a
 not range (anything but Q), and newline are not part of this range
 (they admittedly aren't Qs), they get included.

 So, to work this around, use anything but Q or newline: [^Q\r\n]


 Regards,
 Colomban
 ___
 Users mailing list
 Users@lists.geany.org
 https://lists.geany.org/cgi-bin/mailman/listinfo/users
___
Users mailing list
Users@lists.geany.org
https://lists.geany.org/cgi-bin/mailman/listinfo/users