-package jp.sourceforge.moreemacs.utils;\r
-\r
-import org.eclipse.jface.text.BadLocationException;\r
-import org.eclipse.jface.text.IDocument;\r
-import org.eclipse.jface.text.IRegion;\r
-\r
-public final class ColumnUtils {\r
- private ColumnUtils() {}\r
- \r
- public static int getColumn(IDocument doc, int offset, int tabStop)\r
- throws BadLocationException {\r
- IRegion line = doc.getLineInformationOfOffset(offset);\r
- int column = 0;\r
- \r
- CharSequence seq = new DocumentCharSequence(doc, line.getOffset(), offset - line.getOffset());\r
- for(CodePointIterator itr = new CodePointIterator(seq); itr.hasNext(); ) {\r
- int codePoint = itr.next();\r
- column = getNextColumn(column, codePoint, tabStop);\r
- }\r
- \r
- return column;\r
- }\r
- \r
- public static int getNextColumn(int column, int codePoint, int tabStop) {\r
- if(codePoint == '\t') {\r
- return column - (column%tabStop) + tabStop;\r
- } else {\r
- return column + CharacterUtils.getWidth(codePoint);\r
- }\r
- }\r
-}\r
+package jp.sourceforge.moreemacs.utils;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+
+public final class ColumnUtils {
+ private ColumnUtils() {}
+
+ public static int getColumn(IDocument doc, int offset, int tabStop)
+ throws BadLocationException {
+ IRegion line = doc.getLineInformationOfOffset(offset);
+ int column = 0;
+
+ CharSequence seq = new DocumentCharSequence(doc, line.getOffset(), offset - line.getOffset());
+ for(CodePointIterator itr = new CodePointIterator(seq); itr.hasNext(); ) {
+ int codePoint = itr.next();
+ column = getNextColumn(column, codePoint, tabStop);
+ }
+
+ return column;
+ }
+
+ public static int getNextColumn(int column, int codePoint, int tabStop) {
+ if(codePoint == '\t') {
+ return column - (column%tabStop) + tabStop;
+ } else {
+ return column + CharacterUtils.getWidth(codePoint);
+ }
+ }
+}