aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPTextViewAdditions.m
diff options
context:
space:
mode:
Diffstat (limited to 'Source/SPTextViewAdditions.m')
-rw-r--r--Source/SPTextViewAdditions.m61
1 files changed, 61 insertions, 0 deletions
diff --git a/Source/SPTextViewAdditions.m b/Source/SPTextViewAdditions.m
index 750527f1..e5a15421 100644
--- a/Source/SPTextViewAdditions.m
+++ b/Source/SPTextViewAdditions.m
@@ -41,8 +41,69 @@
if (curRange.length)
return curRange;
+ NSInteger curLocation = curRange.location;
+ NSInteger start = curLocation;
+ NSInteger end = curLocation;
+ NSUInteger strLen = [[self string] length];
+
+ NSMutableCharacterSet *wordCharSet = [NSMutableCharacterSet alphanumericCharacterSet];
+ [wordCharSet addCharactersInString:@"_."];
+ [wordCharSet removeCharactersInString:@"`"];
+
+ if(start) {
+ start--;
+ while([wordCharSet characterIsMember:[[self string] characterAtIndex:start]]) {
+ start--;
+ if(start < 0) break;
+ }
+ start++;
+ }
+
+ while(end < strLen && [wordCharSet characterIsMember:[[self string] characterAtIndex:end]]) {
+ end++;
+ }
+
+ return(NSMakeRange(start, end-start));
+
+}
+/*
+ * Returns the range of the current word.
+ * finds: [| := caret] |word wo|rd word|
+ * If | is in between whitespaces nothing will be selected.
+ */
+- (NSRange)getRangeForCurrentWordForCompletion
+{
+ NSRange curRange = [self selectedRange];
+
+ if (curRange.length)
+ return curRange;
+
NSUInteger curLocation = curRange.location;
+ NSMutableCharacterSet *wordCharSet = [NSMutableCharacterSet alphanumericCharacterSet];
+ [wordCharSet addCharactersInString:@"_."];
+ [wordCharSet removeCharactersInString:@"`"];
+
+ NSInteger start = curLocation;
+ NSInteger end = curLocation;
+
+ if(start) {
+ start--;
+ while([wordCharSet characterIsMember:[[self string] characterAtIndex:start]]) {
+ start--;
+ if(start < 0) break;
+ }
+ start++;
+ }
+
+ NSUInteger strLen = [[self string] length];
+ if(end <= strLen-1) {
+ while(end < strLen && [wordCharSet characterIsMember:[[self string] characterAtIndex:end]]) {
+ end++;
+ }
+ }
+ return(NSMakeRange(start, end-start));
+
[self moveWordLeft:self];
[self moveWordRightAndModifySelection:self];