mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
undo after template: don't insert second space (IDEA-153669)
This commit is contained in:
+6
@@ -0,0 +1,6 @@
|
||||
class Test {
|
||||
void simpleMethod() {
|
||||
int x = 0;
|
||||
int k = <caret>1;
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,9 @@ package com.intellij.refactoring;
|
||||
|
||||
import com.intellij.codeInsight.template.impl.TemplateManagerImpl;
|
||||
import com.intellij.codeInsight.template.impl.TemplateState;
|
||||
import com.intellij.openapi.command.undo.UndoManager;
|
||||
import com.intellij.openapi.fileEditor.TextEditor;
|
||||
import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider;
|
||||
import com.intellij.refactoring.introduceVariable.ReassignVariableUtil;
|
||||
|
||||
public class InplaceReassignVariableTest extends AbstractJavaInplaceIntroduceTest {
|
||||
@@ -34,6 +37,10 @@ public class InplaceReassignVariableTest extends AbstractJavaInplaceIntroduceTes
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testUndoPositionAfterSpace() throws Exception {
|
||||
doUndoTest();
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
String name = getTestName(true);
|
||||
configureByFile(getBasePath() + name + getExtension());
|
||||
@@ -55,6 +62,32 @@ public class InplaceReassignVariableTest extends AbstractJavaInplaceIntroduceTes
|
||||
}
|
||||
}
|
||||
|
||||
private void doUndoTest() {
|
||||
String name = getTestName(true);
|
||||
configureByFile(getBasePath() + name + getExtension());
|
||||
final boolean enabled = getEditor().getSettings().isVariableInplaceRenameEnabled();
|
||||
try {
|
||||
TemplateManagerImpl.setTemplateTesting(getProject(), getTestRootDisposable());
|
||||
getEditor().getSettings().setVariableInplaceRenameEnabled(true);
|
||||
|
||||
invokeRefactoring();
|
||||
ReassignVariableUtil.reassign(getEditor());
|
||||
|
||||
TemplateState state = TemplateManagerImpl.getTemplateState(getEditor());
|
||||
assert state != null;
|
||||
state.gotoEnd(false);
|
||||
|
||||
TextEditor textEditor = TextEditorProvider.getInstance().getTextEditor(getEditor());
|
||||
assertNotNull(textEditor);
|
||||
UndoManager.getInstance(getProject()).undo(textEditor);
|
||||
|
||||
checkResultByFile(getBasePath() + name + getExtension());
|
||||
}
|
||||
finally {
|
||||
getEditor().getSettings().setVariableInplaceRenameEnabled(enabled);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getBasePath() {
|
||||
return "/refactoring/inplaceIntroduceVariable/";
|
||||
|
||||
+4
-6
@@ -33,10 +33,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiNamedElement;
|
||||
import com.intellij.psi.SmartPointerManager;
|
||||
import com.intellij.psi.SmartPsiElementPointer;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.SuggestedNameInfo;
|
||||
import com.intellij.psi.impl.source.PostprocessReformattingAspect;
|
||||
import com.intellij.refactoring.rename.NameSuggestionProvider;
|
||||
@@ -77,8 +74,9 @@ public abstract class InplaceVariableIntroducer<E extends PsiElement> extends In
|
||||
if (expr != null) {
|
||||
final ASTNode node = expr.getNode();
|
||||
ASTNode prev = node.getTreePrev();
|
||||
final ASTNode astNode = LanguageTokenSeparatorGenerators.INSTANCE.forLanguage(expr.getLanguage())
|
||||
.generateWhitespaceBetweenTokens(prev, node);
|
||||
final ASTNode astNode = prev instanceof PsiWhiteSpace ? null :
|
||||
LanguageTokenSeparatorGenerators.INSTANCE.forLanguage(expr.getLanguage())
|
||||
.generateWhitespaceBetweenTokens(prev, node);
|
||||
if (astNode != null) {
|
||||
final Lexer lexer = LanguageParserDefinitions.INSTANCE.forLanguage(expr.getLanguage()).createLexer(project);
|
||||
if (LanguageUtil.canStickTokensTogetherByLexer(prev, prev, lexer) == ParserDefinition.SpaceRequirements.MUST) {
|
||||
|
||||
Reference in New Issue
Block a user