-package jp.sourceforge.moreemacs.handlers;\r
-\r
-import jp.sourceforge.moreemacs.utils.CodePointIterator;\r
-import jp.sourceforge.moreemacs.utils.DocumentCharSequence;\r
-\r
-import org.eclipse.jface.text.BadLocationException;\r
-import org.eclipse.jface.text.IDocument;\r
-\r
-public final class BackwardWordExecution extends TextEditorExecution {\r
- @Override\r
- public void execute() throws BadLocationException {\r
- int current = cursor.offset();\r
- cursor.move(getPreviousWordPosition(doc, current));\r
- }\r
- \r
- public static int getPreviousWordPosition(IDocument doc, int offset) throws BadLocationException {\r
- CharSequence seq = new DocumentCharSequence(doc, 0, offset);\r
- CodePointIterator itr = new CodePointIterator(seq, seq.length());\r
- \r
- for(; itr.hasPrevious(); ) {\r
- if (Character.isLetterOrDigit(itr.previous())) {\r
- itr.next();\r
- break;\r
- }\r
- }\r
- for(; itr.hasPrevious(); ) {\r
- if (!Character.isLetterOrDigit(itr.previous())) {\r
- itr.next();\r
- break;\r
- }\r
- }\r
- return itr.index();\r
- }\r
-}\r
+package jp.sourceforge.moreemacs.handlers;
+
+import jp.sourceforge.moreemacs.utils.CodePointIterator;
+import jp.sourceforge.moreemacs.utils.DocumentCharSequence;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+
+public final class BackwardWordExecution extends TextEditorExecution {
+ @Override
+ public void execute() throws BadLocationException {
+ int current = cursor.offset();
+ cursor.move(getPreviousWordPosition(doc, current));
+ }
+
+ public static int getPreviousWordPosition(IDocument doc, int offset) throws BadLocationException {
+ CharSequence seq = new DocumentCharSequence(doc, 0, offset);
+ CodePointIterator itr = new CodePointIterator(seq, seq.length());
+
+ for(; itr.hasPrevious(); ) {
+ if (Character.isLetterOrDigit(itr.previous())) {
+ itr.next();
+ break;
+ }
+ }
+ for(; itr.hasPrevious(); ) {
+ if (!Character.isLetterOrDigit(itr.previous())) {
+ itr.next();
+ break;
+ }
+ }
+ return itr.index();
+ }
+}