--- a/ListView.st Sat May 07 15:28:42 2016 +0200
+++ b/ListView.st Sat May 07 15:48:27 2016 +0200
@@ -4861,7 +4861,7 @@
searchForwardUsingSpec:searchSpec startingAtLine:startLine col:startCol ifFound:block1 ifAbsent:block2
"search for a pattern, if found evaluate block1 with row/col as arguments,
if not found evaluate block2.
- If the block is a three-arg block, it gets the end-col (or nil, if not found)"
+ If the block is a three-arg block, it gets the end-col (or nil, if not known)"
|lineString col pattern match regexMatch ignCase fullWord atBeginOfLineOnly
wrapAtEndOfText patternSize matcher lnr "{Class: SmallInteger}"
@@ -4872,6 +4872,10 @@
pattern := searchSpec pattern.
match := searchSpec match.
regexMatch := searchSpec regexMatch.
+ (match and:[regexMatch not]) ifTrue:[
+ pattern := pattern globPatternAsRegexPattern.
+ regexMatch := true.
+ ].
ignCase := searchSpec ignoreCase.
fullWord := searchSpec fullWord.
atBeginOfLineOnly := searchSpec atBeginOfLineOnly.
@@ -4931,7 +4935,7 @@
^ block1 value:lnr value:foundCol optionalArgument:endCol.
]]]]]].
] ifFalse:[
- (match and:[regexMatch or:[pattern includesUnescapedMatchCharacters]]) ifTrue:[
+ (match and:[pattern includesUnescapedMatchCharacters]) ifTrue:[
"perform a findMatchString (glob matching)"
p := pattern species new:0.
(pattern startsWith:$*) ifFalse:[p := p , '*'].
@@ -4955,6 +4959,9 @@
] ifFalse:[
"perform a findString (no matching)"
p := pattern.
+ (match and:[pattern includesMatchCharacters]) ifTrue:[
+ p := pattern withoutMatchEscapes
+ ].
runner
value:[:lnr :col :lineString |
foundCol := lineString
@@ -5263,8 +5270,8 @@
^ atBeginOfLineOnly ? false
!
-atBeginOfLineOnly:something
- atBeginOfLineOnly := something.
+atBeginOfLineOnly:aBoolean
+ atBeginOfLineOnly := aBoolean.
!
forward
@@ -5379,11 +5386,11 @@
!
regexMatch
- ^ regexMatch
-!
-
-regexMatch:something
- regexMatch := something.
+ ^ regexMatch ? false
+!
+
+regexMatch:aBoolean
+ regexMatch := aBoolean.
!
variable