I'm using the NSTextFinder API with the stringAtIndex:len:effectiveRange: style of exposing the text.
I have a test case which has 4 strings in it, "foo1" .. "foo4". I show the findbar, type 'foo', and click the 'find next' control. Here are the calls that my client receives and the results being passed back. firstSelectedRange = {0, 0} (char) stringLength:16 firstSelectedRange = {0, 0} (char) stringAtIndex:0 len:4 effRange:{0, 4} 'foo1' stringAtIndex:4 len:4 effRange:{4, 4} 'foo2' stringAtIndex:8 len:4 effRange:{8, 4} 'foo3' stringAtIndex:12 len:4 effRange:{12, 4} 'foo4' setFirstSelectedRange = {0, 3} KESIImageView+Finding scrollRangeToVisible: = {0,3} So far, so good. But when I check the replace checkbox, then click the replace control, I see the following: --- replace "foo" with "BA" stringLength:16 firstSelectedRange = {0, 3} (char) replaceCharactersInRange: {0, 3} withString:'BA' setFirstSelectedRange = {0, 2} firstSelectedRange = {0, 2} (char) stringAtIndex:2 len:3 effRange:{0, 3} 'BA1' stringAtIndex:3 len:4 effRange:{3, 4} 'foo2' stringAtIndex:7 len:4 effRange:{7, 4} 'foo3' stringAtIndex:11 len:4 effRange:{11, 4} 'foo4' stringAtIndex:15 len:0 effRange:{15, 0} '(null)' stringAtIndex:15 len:0 effRange:{15, 0} '(null)' stringAtIndex:15 len:0 effRange:{15, 0} '(null)' … <endless loop> NSTextFinder keeps asking about the string that starts at index 15, but because of the replacement, the only flattened string is only 15 chars long. My 'stringLength' is only called before the replace, not after. Incremental searching is not enabled, so it's not that I'm forgetting to call -(void)noteClientStringWithChange. Am I doing something wrong? How can I get NSTF to understand that the client doesn't have anything at index 15? _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com