duplicate action: preserve caret position when it's already inside element's name

This commit is contained in:
peter
2012-11-04 10:44:23 +01:00
parent 806f780a04
commit 6a651ad5aa
2 changed files with 14 additions and 2 deletions
@@ -35,7 +35,6 @@ xxx<caret>
private void doTest(String before, @NonNls String ext, String after) {
myFixture.configureByText("a." + ext, before);
myFixture.performEditorAction(IdeActions.ACTION_EDITOR_DUPLICATE)
println "/" + myFixture.editor.document.text.substring(myFixture.editor.caretModel.offset) + "/"
myFixture.checkResult(after);
}
@@ -52,6 +51,19 @@ class C {
'''
}
public void "test preserve caret position when it's already inside element's name"() {
doTest '''
class C {
void fo<caret>o() {}
}
''', 'java', '''
class C {
void foo() {}
void fo<caret>o() {}
}
'''
}
public void testXmlTag() {
doTest '''
<root>
@@ -51,7 +51,7 @@ public class NamedElementDuplicateHandler extends EditorWriteActionHandler {
TextRange toDuplicate = new TextRange(editor.logicalPositionToOffset(lines.first), editor.logicalPositionToOffset(lines.second));
PsiElement name = findNameIdentifier(editor, file, toDuplicate);
if (name != null) {
if (name != null && !name.getTextRange().containsOffset(editor.getCaretModel().getOffset())) {
editor.getCaretModel().moveToOffset(name.getTextOffset());
}
}