IDEA-76185 Macro: $SelectionStartColumn$ and $SelectionEndColumn$ external tools macros count tabs as expanded spaces

This commit is contained in:
peter
2014-02-20 16:26:34 +01:00
parent 4e1ae10c15
commit 374e421b7d
4 changed files with 15 additions and 3 deletions
@@ -26,6 +26,6 @@ public final class ColumnNumberMacro extends EditorMacro {
@Override
protected String expand(Editor editor) {
return String.valueOf(editor.getCaretModel().getLogicalPosition().column + 1);
return getColumnNumber(editor, editor.getCaretModel().getLogicalPosition());
}
}
@@ -18,6 +18,8 @@ package com.intellij.ide.macro;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.LogicalPosition;
import com.intellij.openapi.editor.ex.util.EditorUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.ToolWindowManager;
import org.jetbrains.annotations.Nullable;
@@ -57,6 +59,16 @@ public abstract class EditorMacro extends Macro {
return null;
}
protected static String getColumnNumber(Editor editor, LogicalPosition pos) {
if (EditorUtil.inVirtualSpace(editor, pos)) {
return String.valueOf(pos.column + 1);
}
int offset = editor.logicalPositionToOffset(pos);
int lineStart = editor.getDocument().getLineStartOffset(editor.getDocument().getLineNumber(offset));
return String.valueOf(offset - lineStart + 1);
}
@Nullable
protected abstract String expand(Editor editor);
}
@@ -32,6 +32,6 @@ public class SelectionEndColumnMacro extends EditorMacro {
if (selectionEndPosition == null) {
return null;
}
return String.valueOf(editor.visualToLogicalPosition(selectionEndPosition).column + 1);
return getColumnNumber(editor, editor.visualToLogicalPosition(selectionEndPosition));
}
}
@@ -32,6 +32,6 @@ public class SelectionStartColumnMacro extends EditorMacro {
if (selectionStartPosition == null) {
return null;
}
return String.valueOf(editor.visualToLogicalPosition(selectionStartPosition).column + 1);
return getColumnNumber(editor, editor.visualToLogicalPosition(selectionStartPosition));
}
}