+/* The receiver invokes the action specified by selector.
+ */
+- (void)doCommandBySelector:(SEL)selector
+{
+}
+
+/* The receiver inserts string replacing the content specified by replacementRange. string can be either an NSString or NSAttributedString instance. selectedRange specifies the selection inside the string being inserted; hence, the location is relative to the beginning of string. When string is an NSString, the receiver is expected to render the marked text with distinguishing appearance (i.e. NSTextView renders with -markedTextAttributes).
+/* The receiver unmarks the marked text. If no marked text, the invocation of this method has no effect.
+ */
+- (void)unmarkText
+{
+}
+
+/* Returns the selection range. The valid location is from 0 to the document length.
+ */
+- (NSRange)selectedRange
+{
+ NSRange range = {0, 0};
+ return range;
+}
+
+/* Returns the marked range. Returns {NSNotFound, 0} if no marked range.
+ */
+- (NSRange)markedRange
+{
+ NSRange range = {NSNotFound, 0};
+ return range;
+}
+
+/* Returns whether or not the receiver has marked text.
+ */
+- (BOOL)hasMarkedText
+{
+ return NO;
+}
+
+/* Returns attributed string specified by range. It may return nil. If non-nil return value and actualRange is non-NULL, it contains the actual range for the return value. The range can be adjusted from various reasons (i.e. adjust to grapheme cluster boundary, performance optimization, etc).
+/* Returns the first logical rectangular area for range. The return value is in the screen coordinate. The size value can be negative if the text flows to the left. If non-NULL, actuallRange contains the character range corresponding to the returned area.