1 package jp.sourceforge.moreemacs.handlers;
\r
3 import jp.sourceforge.moreemacs.utils.CodePointIterator;
\r
4 import jp.sourceforge.moreemacs.utils.DocumentCharSequence;
\r
6 import org.eclipse.jface.text.BadLocationException;
\r
7 import org.eclipse.jface.text.IDocument;
\r
9 public final class BackwardWordExecution extends TextEditorExecution {
\r
12 public void execute() throws BadLocationException {
\r
13 int current = cursor.offset();
\r
14 cursor.move(getPreviousWordPosition(doc, current));
\r
17 public static int getPreviousWordPosition(IDocument doc, int offset) throws BadLocationException {
\r
18 CharSequence seq = new DocumentCharSequence(doc, 0, offset);
\r
19 CodePointIterator itr = new CodePointIterator(seq, seq.length());
\r
21 for(; itr.hasPrevious(); ) {
\r
22 if (Character.isLetterOrDigit(itr.previous())) {
\r
27 for(; itr.hasPrevious(); ) {
\r
28 if (!Character.isLetterOrDigit(itr.previous())) {
\r