mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-17 16:19:58 +07:00
inplace introduce: do not hide live template on document modification
This commit is contained in:
+21
-6
@@ -17,6 +17,8 @@ package com.intellij.refactoring.introduceParameter;
|
||||
|
||||
import com.intellij.codeInsight.highlighting.HighlightManager;
|
||||
import com.intellij.codeInsight.intention.impl.TypeExpression;
|
||||
import com.intellij.codeInsight.lookup.LookupManager;
|
||||
import com.intellij.codeInsight.lookup.impl.LookupImpl;
|
||||
import com.intellij.openapi.application.Result;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
@@ -160,11 +162,6 @@ public abstract class AbstractInplaceIntroducer extends VariableInplaceIntroduce
|
||||
final PsiModifierList modifierList = variable.getModifierList();
|
||||
LOG.assertTrue(modifierList != null);
|
||||
int textOffset = modifierList.getTextOffset();
|
||||
|
||||
String visibility = getVisibility();
|
||||
if (visibility == PsiModifier.PACKAGE_LOCAL) {
|
||||
visibility = "";
|
||||
}
|
||||
final String modifierListText = modifierList.getText();
|
||||
|
||||
int length = PsiModifier.PUBLIC.length();
|
||||
@@ -189,7 +186,25 @@ public abstract class AbstractInplaceIntroducer extends VariableInplaceIntroduce
|
||||
endOffset = textOffset + length;
|
||||
}
|
||||
|
||||
document.replaceString(startOffset, endOffset, visibility);
|
||||
String visibility = getVisibility();
|
||||
if (visibility == PsiModifier.PACKAGE_LOCAL) {
|
||||
visibility = "";
|
||||
}
|
||||
final String finalVisibility = visibility;
|
||||
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
document.replaceString(startOffset, endOffset, finalVisibility);
|
||||
}
|
||||
};
|
||||
|
||||
final LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(myEditor);
|
||||
if (lookup != null) {
|
||||
lookup.performGuardedChange(runnable);
|
||||
} else {
|
||||
runnable.run();
|
||||
}
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
+20
-8
@@ -18,6 +18,8 @@ package com.intellij.refactoring.introduceVariable;
|
||||
import com.intellij.codeInsight.intention.impl.TypeExpression;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.codeInsight.lookup.LookupManager;
|
||||
import com.intellij.codeInsight.lookup.impl.LookupImpl;
|
||||
import com.intellij.codeInsight.template.*;
|
||||
import com.intellij.codeInsight.template.Result;
|
||||
import com.intellij.codeInsight.template.impl.TemplateManagerImpl;
|
||||
@@ -392,14 +394,24 @@ public class VariableInplaceIntroducer extends VariableInplaceRenamer {
|
||||
final int textOffset = modifierList.getTextOffset();
|
||||
|
||||
final Document document = myEditor.getDocument();
|
||||
if (generateFinal) {
|
||||
final PsiTypeElement typeElement = variable.getTypeElement();
|
||||
final int typeOffset = typeElement != null ? typeElement.getTextOffset() : textOffset;
|
||||
document.insertString(typeOffset, modifier + " ");
|
||||
}
|
||||
else {
|
||||
final int idx = modifierList.getText().indexOf(modifier);
|
||||
document.deleteString(textOffset + idx, textOffset + idx + modifier.length() + 1);
|
||||
final Runnable runnable = new Runnable() {
|
||||
public void run() {
|
||||
if (generateFinal) {
|
||||
final PsiTypeElement typeElement = variable.getTypeElement();
|
||||
final int typeOffset = typeElement != null ? typeElement.getTextOffset() : textOffset;
|
||||
document.insertString(typeOffset, modifier + " ");
|
||||
}
|
||||
else {
|
||||
final int idx = modifierList.getText().indexOf(modifier);
|
||||
document.deleteString(textOffset + idx, textOffset + idx + modifier.length() + 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
final LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(myEditor);
|
||||
if (lookup != null) {
|
||||
lookup.performGuardedChange(runnable);
|
||||
} else {
|
||||
runnable.run();
|
||||
}
|
||||
}
|
||||
}.execute();
|
||||
|
||||
Reference in New Issue
Block a user