mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
WEB-6827 Emmet "Surround with Live Template" creating wrong element
This commit is contained in:
@@ -75,10 +75,13 @@ public class XmlEmmetParser extends EmmetParser {
|
||||
|
||||
public XmlEmmetParser(List<ZenCodingToken> tokens,
|
||||
CustomTemplateCallback callback,
|
||||
ZenCodingGenerator generator) {
|
||||
ZenCodingGenerator generator, boolean surroundWithTemplate) {
|
||||
super(tokens, callback, generator);
|
||||
PsiElement context = callback.getContext();
|
||||
XmlTag parentTag = PsiTreeUtil.getParentOfType(context, XmlTag.class);
|
||||
if (surroundWithTemplate && parentTag != null) {
|
||||
parentTag = PsiTreeUtil.getParentOfType(parentTag, XmlTag.class);
|
||||
}
|
||||
if (parentTag != null) {
|
||||
hasTagContext = true;
|
||||
tagLevel.push(parentTag.getName());
|
||||
|
||||
@@ -67,7 +67,7 @@ public class ZenCodingTemplate implements CustomLiveTemplate {
|
||||
@Nullable
|
||||
private static ZenCodingNode parse(@NotNull String text,
|
||||
@NotNull CustomTemplateCallback callback,
|
||||
@NotNull ZenCodingGenerator generator) {
|
||||
@NotNull ZenCodingGenerator generator, @Nullable String surroundedText) {
|
||||
List<ZenCodingToken> tokens = new EmmetLexer().lex(text);
|
||||
if (tokens == null) {
|
||||
return null;
|
||||
@@ -75,7 +75,7 @@ public class ZenCodingTemplate implements CustomLiveTemplate {
|
||||
if (!validate(tokens, generator)) {
|
||||
return null;
|
||||
}
|
||||
EmmetParser parser = generator.createParser(tokens, callback, generator);
|
||||
EmmetParser parser = generator.createParser(tokens, callback, generator, surroundedText != null);
|
||||
ZenCodingNode node = parser.parse();
|
||||
if (parser.getIndex() != tokens.size() || node instanceof TextNode) {
|
||||
return null;
|
||||
@@ -93,7 +93,7 @@ public class ZenCodingTemplate implements CustomLiveTemplate {
|
||||
}
|
||||
|
||||
public static boolean checkTemplateKey(@NotNull String key, CustomTemplateCallback callback, @NotNull ZenCodingGenerator generator) {
|
||||
return parse(key, callback, generator) != null;
|
||||
return parse(key, callback, generator, null) != null;
|
||||
}
|
||||
|
||||
public void expand(String key, @NotNull CustomTemplateCallback callback) {
|
||||
@@ -158,7 +158,7 @@ public class ZenCodingTemplate implements CustomLiveTemplate {
|
||||
@NotNull CustomTemplateCallback callback,
|
||||
String surroundedText,
|
||||
@NotNull ZenCodingGenerator defaultGenerator) {
|
||||
ZenCodingNode node = parse(key, callback, defaultGenerator);
|
||||
ZenCodingNode node = parse(key, callback, defaultGenerator, surroundedText);
|
||||
assert node != null;
|
||||
if (surroundedText == null) {
|
||||
if (node instanceof TemplateNode) {
|
||||
@@ -298,7 +298,7 @@ public class ZenCodingTemplate implements CustomLiveTemplate {
|
||||
CommandProcessor.getInstance().executeCommand(callback.getProject(), new Runnable() {
|
||||
public void run() {
|
||||
callback.fixInitialState(true);
|
||||
ZenCodingNode node = parse(abbreviation, callback, defaultGenerator);
|
||||
ZenCodingNode node = parse(abbreviation, callback, defaultGenerator, selection);
|
||||
assert node != null;
|
||||
PsiElement context = callback.getContext();
|
||||
ZenCodingGenerator generator = findApplicableGenerator(node, context, true);
|
||||
|
||||
+5
-2
@@ -159,7 +159,10 @@ public abstract class ZenCodingGenerator {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public EmmetParser createParser(List<ZenCodingToken> tokens, CustomTemplateCallback callback, ZenCodingGenerator generator) {
|
||||
return new XmlEmmetParser(tokens, callback, generator);
|
||||
public EmmetParser createParser(List<ZenCodingToken> tokens,
|
||||
CustomTemplateCallback callback,
|
||||
ZenCodingGenerator generator,
|
||||
boolean surroundWithTemplate) {
|
||||
return new XmlEmmetParser(tokens, callback, generator, surroundWithTemplate);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user