This is MyTextView.m in view mode; [Download] [Up]
/* MyTextView.m created by ovidiu on Sat 29-Mar-1997 */ #import <AppKit/AppKit.h> #import "MyTextView.h" #import "Preferences.h" #import "LineAndCharacterRange.h" @implementation MyTextView - (NSString*)linesContainingSelection:(NSRange*)linesRange { NSString* string = [[[self layoutManager] textStorage] string]; int length = [string length]; NSRange range = [[[self layoutManager] firstTextView] selectedRange]; NSRange beginningOfLine, endOfLine; NSRange finalRange; beginningOfLine = [string rangeOfString:@"\n" options:NSBackwardsSearch range:NSMakeRange(0, range.location)]; if (!beginningOfLine.length) beginningOfLine.location = 0; else beginningOfLine.location++; endOfLine = [string rangeOfString:@"\n" options:0 range:NSMakeRange(range.location + range.length, length - range.location - range.length)]; if (!endOfLine.length) endOfLine.location = length; else endOfLine.location++; finalRange.location = beginningOfLine.location; finalRange.length = endOfLine.location - beginningOfLine.location; if (linesRange) *linesRange = finalRange; return [string substringWithRange:finalRange]; } - (void)insertText:(NSString*)aString { id lineRangeViewer = [LineAndCharacterRange sharedInstance]; unichar c = [aString characterAtIndex:0]; if (c == 0x0192) // Alt-f [self moveWordForward:nil]; else if (c == 0x2211) // Alt-b [self moveWordBackward:nil]; else if (c == 0x007f) // Alt-Backspace [self deleteWordBackward:nil]; else if (c == 0x0394) // Alt-d [self deleteWordForward:nil]; else [super insertText:aString]; if ([lineRangeViewer autoupdate]) [lineRangeViewer updateInfo]; } - (void)doCommandBySelector:(SEL)aSelector { id lineRangeViewer = [LineAndCharacterRange sharedInstance]; [super doCommandBySelector:aSelector]; if ([lineRangeViewer autoupdate]) [lineRangeViewer updateInfo]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.