mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Emmet: do not move caret on breaking template (WEB-13513)
This commit is contained in:
@@ -20,7 +20,9 @@ import com.intellij.codeInsight.CodeInsightBundle;
|
||||
import com.intellij.codeInsight.completion.CompletionParameters;
|
||||
import com.intellij.codeInsight.completion.CompletionResultSet;
|
||||
import com.intellij.codeInsight.lookup.LookupElementPresentation;
|
||||
import com.intellij.codeInsight.template.*;
|
||||
import com.intellij.codeInsight.template.CustomLiveTemplateBase;
|
||||
import com.intellij.codeInsight.template.CustomTemplateCallback;
|
||||
import com.intellij.codeInsight.template.LiveTemplateBuilder;
|
||||
import com.intellij.codeInsight.template.emmet.filters.SingleLineEmmetFilter;
|
||||
import com.intellij.codeInsight.template.emmet.filters.ZenCodingFilter;
|
||||
import com.intellij.codeInsight.template.emmet.generators.XmlZenCodingGenerator;
|
||||
@@ -34,9 +36,11 @@ import com.intellij.diagnostic.AttachmentFactory;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.editor.Caret;
|
||||
import com.intellij.openapi.editor.CaretAction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.EditorModificationUtil;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.patterns.StandardPatterns;
|
||||
@@ -245,39 +249,7 @@ public class ZenCodingTemplate extends CustomLiveTemplateBase {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
callback.startTemplate(builder.buildTemplate(), null, new TemplateEditingAdapter() {
|
||||
private TextRange myEndVarRange;
|
||||
private Editor myEditor;
|
||||
|
||||
@Override
|
||||
public void beforeTemplateFinished(TemplateState state, Template template) {
|
||||
int variableNumber = state.getCurrentVariableNumber();
|
||||
if (variableNumber >= 0 && template instanceof TemplateImpl) {
|
||||
TemplateImpl t = (TemplateImpl)template;
|
||||
while (variableNumber < t.getVariableCount()) {
|
||||
String varName = t.getVariableNameAt(variableNumber);
|
||||
if (LiveTemplateBuilder.isEndVariable(varName)) {
|
||||
myEndVarRange = state.getVariableRange(varName);
|
||||
myEditor = state.getEditor();
|
||||
break;
|
||||
}
|
||||
variableNumber++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void templateFinished(Template template, boolean brokenOff) {
|
||||
if (brokenOff && myEndVarRange != null && myEditor != null) {
|
||||
int offset = myEndVarRange.getStartOffset();
|
||||
if (offset >= 0 && offset != myEditor.getCaretModel().getOffset()) {
|
||||
myEditor.getCaretModel().moveToOffset(offset);
|
||||
myEditor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
callback.startTemplate(builder.buildTemplate(), null, null);
|
||||
}
|
||||
|
||||
private static void checkTemplateOutputLength(ZenCodingNode node, CustomTemplateCallback callback) throws EmmetException {
|
||||
|
||||
Reference in New Issue
Block a user