Changeset 319 for trunk/ICeCoffEE/ICeCoffEE/ICeCoffEETerminal.m
- Timestamp:
- 06/11/07 01:21:55 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ICeCoffEE/ICeCoffEE/ICeCoffEETerminal.m
r216 r319 300 300 selRange = [ICeCoffEETerminalRange rangeWithTerminal: self]; 301 301 } else { // select something 302 // XXX test this next line, it may be what's causing a Terminal bug to exhibit itself 302 303 [storage selectWordAtLine: ICCF_line offset: ICCF_col]; 303 304 selRange = [ICeCoffEETerminalRange rangeWithTerminal: self]; … … 312 313 313 314 termRange = [ICeCoffEETerminalRange rangeWithTerminal: self pt0: [selRange pt0] pt1: [selRange pt0]]; 314 // add 1 to range to trap delimiters that are on the edge of the selection (i.e., <...)315 [termRange growForwardByLength: 1];316 315 [termRange growBackwardByLength: ICCF_MAX_URL_LEN]; // potentially too big 317 s = [termRange stringFromRange]; 316 317 expandFront: 318 s = [termRange stringFromRange]; 318 319 ICLog(@"front %@", termRange); 319 320 delimiterRange = [s rangeOfCharacterFromSet: urlLeftDelimiters … … 321 322 if (delimiterRange.location == NSNotFound) { 322 323 // extend to beginning of string (as much as possible) 323 [selRange growBackwardByLength: [s length] - 1];324 [selRange growBackwardByLength: [s length]]; 324 325 } else { 325 326 NSCAssert(delimiterRange.length == 1, @"Internal error: delimiter matched range is not of length 1"); 326 [selRange growBackwardByLength: [s length] - delimiterRange.location - 2]; 327 [selRange growBackwardByLength: [s length] - delimiterRange.location - 1]; 328 // in https://www-s.acm.uiuc.edu/wiki/space/(user)njriley - handle clicking inside or after (user). 329 if ([s characterAtIndex: delimiterRange.location] == '(') { 330 s = [selRange stringFromRange]; 331 if ([s rangeOfString: @")"].location != NSNotFound || 332 [s rangeOfCharacterFromSet: [NSCharacterSet characterSetWithCharactersInString: @"/."]].location == NSNotFound) { 333 [selRange growBackwardByLength: 1]; 334 ICLog(@"expanding past (, now %@", selRange); 335 [termRange shrinkBackByLength: [[termRange stringFromRange] length] - delimiterRange.location]; 336 goto expandFront; 337 } 338 } 327 339 } 328 340 … … 330 342 331 343 termRange = [ICeCoffEETerminalRange rangeWithTerminal: self pt0: [selRange pt1] pt1: [selRange pt1]]; 332 // subtract 1 from range to trap delimiters that are on the edge of the selection (i.e., ...>)333 [termRange growBackwardByLength: 1];334 344 [termRange growForwardByLength: ICCF_MAX_URL_LEN]; // potentially too big 335 s = [termRange stringFromRange]; 345 346 expandBack: 347 s = [termRange stringFromRange]; 336 348 ICLog(@"back %@", termRange); 337 349 delimiterRange = [s rangeOfCharacterFromSet: urlRightDelimiters … … 339 351 if (delimiterRange.location == NSNotFound) { 340 352 // extend to end of string 341 [selRange growForwardByLength: [s length] - 1];353 [selRange growForwardByLength: [s length]]; 342 354 } else { 343 355 NSCAssert(delimiterRange.length == 1, @"Internal error: delimiter matched range is not of length 1"); 344 [selRange growForwardByLength: delimiterRange.location - 1]; 356 [selRange growForwardByLength: delimiterRange.location]; 357 // URL may look like "https://www-s.acm.uiuc.edu/wiki/space/(user" now; expand if so 358 if ([s characterAtIndex: delimiterRange.location] == ')' && 359 [[selRange stringFromRange] rangeOfString: @"("].location != NSNotFound) { 360 [selRange growForwardByLength: 1]; 361 ICLog(@"expanding past ), now %@", selRange); 362 [termRange shrinkFrontByLength: delimiterRange.location + 1]; 363 goto expandBack; 364 } 345 365 } 346 366
Note:
See TracChangeset
for help on using the changeset viewer.