mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
WEB-13515 Emmet: add settings for placing $END$ at the end of template text
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -40,17 +40,19 @@ public class LiveTemplateBuilder {
|
||||
private final List<VarOccurence> myVariableOccurrences = new ArrayList<VarOccurence>();
|
||||
private final List<Marker> myMarkers = new ArrayList<Marker>();
|
||||
private final int mySegmentLimit;
|
||||
private final boolean myAddEndVariableAtTheEndOfTemplate;
|
||||
private String myLastEndVarName;
|
||||
private boolean myIsToReformat = false;
|
||||
|
||||
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public LiveTemplateBuilder() {
|
||||
this(Registry.intValue("emmet.segments.limit"));
|
||||
this(false, Registry.intValue("emmet.segments.limit"));
|
||||
}
|
||||
|
||||
public LiveTemplateBuilder(int segmentLimit) {
|
||||
public LiveTemplateBuilder(boolean addEndVariableAtTheEndOfTemplate, int segmentLimit) {
|
||||
mySegmentLimit = segmentLimit;
|
||||
myAddEndVariableAtTheEndOfTemplate = addEndVariableAtTheEndOfTemplate;
|
||||
}
|
||||
|
||||
public void setIsToReformat(boolean isToReformat) {
|
||||
@@ -98,22 +100,29 @@ public class LiveTemplateBuilder {
|
||||
}
|
||||
if (myLastEndVarName != null) {
|
||||
int endOffset = -1;
|
||||
Iterator<VarOccurence> it = myVariableOccurrences.iterator();
|
||||
while (it.hasNext()) {
|
||||
VarOccurence occurence = it.next();
|
||||
if (occurence.myName.equals(myLastEndVarName)) {
|
||||
endOffset = occurence.myOffset;
|
||||
break;
|
||||
if (myAddEndVariableAtTheEndOfTemplate) {
|
||||
endOffset = myText.length();
|
||||
}
|
||||
else {
|
||||
Iterator<VarOccurence> it = myVariableOccurrences.iterator();
|
||||
while (it.hasNext()) {
|
||||
VarOccurence occurence = it.next();
|
||||
if (occurence.myName.equals(myLastEndVarName)) {
|
||||
endOffset = occurence.myOffset;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (endOffset >= 0) {
|
||||
for (Iterator<Variable> it1 = variables.iterator(); it1.hasNext(); ) {
|
||||
Variable variable = it1.next();
|
||||
if (myLastEndVarName.equals(variable.getName()) && variable.isAlwaysStopAt()) {
|
||||
it.remove();
|
||||
it1.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (endOffset >= 0) {
|
||||
for (Iterator<Variable> it1 = variables.iterator(); it1.hasNext(); ) {
|
||||
Variable variable = it1.next();
|
||||
if (myLastEndVarName.equals(variable.getName()) && variable.isAlwaysStopAt()) {
|
||||
it.remove();
|
||||
it1.remove();
|
||||
}
|
||||
}
|
||||
myVariableOccurrences.add(new VarOccurence(TemplateImpl.END, endOffset));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,6 +232,7 @@ emmet.filters.enabled.by.default=Filters enabled by default
|
||||
emmet.enable.preview=Enable &abbreviation preview
|
||||
emmet.expand.abbreviation.with=Expand &abbreviation with
|
||||
emmet.href.autodetect=Enable automatic &URL recognition while wrapping text with <a> tag
|
||||
emmet.add.edit.point.at.the.end.of.template=Add edit &point at the end of template
|
||||
|
||||
title.cannot.create.html.file=Cannot create HTML file
|
||||
new.html.file.action=HTML File
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -35,6 +35,7 @@ public class EmmetOptions implements PersistentStateComponent<EmmetOptions> {
|
||||
private boolean myPreviewEnabled = false;
|
||||
private Set<String> myFiltersEnabledByDefault = ContainerUtil.newHashSet();
|
||||
private boolean myHrefAutoDetectEnabled = true;
|
||||
private boolean myAddEditPointAtTheEndOfTemplate = false;
|
||||
|
||||
@NotNull
|
||||
public Set<String> getFiltersEnabledByDefault() {
|
||||
@@ -81,6 +82,14 @@ public class EmmetOptions implements PersistentStateComponent<EmmetOptions> {
|
||||
return myHrefAutoDetectEnabled;
|
||||
}
|
||||
|
||||
public boolean isAddEditPointAtTheEndOfTemplate() {
|
||||
return myAddEditPointAtTheEndOfTemplate;
|
||||
}
|
||||
|
||||
public void setAddEditPointAtTheEndOfTemplate(boolean addEditPointAtTheEndOfTemplate) {
|
||||
myAddEditPointAtTheEndOfTemplate = addEditPointAtTheEndOfTemplate;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public EmmetOptions getState() {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.intellij.application.options.emmet.XmlEmmetConfigurable">
|
||||
<grid id="27dc6" binding="myPanel" layout-manager="GridLayoutManager" row-count="4" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<grid id="27dc6" binding="myPanel" layout-manager="GridLayoutManager" row-count="5" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<xy x="20" y="20" width="999" height="135"/>
|
||||
<xy x="20" y="20" width="999" height="140"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
@@ -27,7 +27,7 @@
|
||||
<grid id="cdbb7" binding="myFiltersListPanel" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/>
|
||||
<grid row="4" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
@@ -41,6 +41,14 @@
|
||||
<text resource-bundle="messages/XmlBundle" key="emmet.href.autodetect"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="8349b" class="com.intellij.ui.components.JBCheckBox" binding="myAddEditPointAtTheEndOfTemplateJBCheckBox">
|
||||
<constraints>
|
||||
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="9" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text resource-bundle="messages/XmlBundle" key="emmet.add.edit.point.at.the.end.of.template"/>
|
||||
</properties>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
</form>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -43,6 +43,7 @@ public class XmlEmmetConfigurable implements SearchableConfigurable, Disposable,
|
||||
private JBCheckBox myEnablePreviewJBCheckBox;
|
||||
private JPanel myFiltersListPanel;
|
||||
private JBCheckBox myEnableHrefAutodetectJBCheckBox;
|
||||
private JBCheckBox myAddEditPointAtTheEndOfTemplateJBCheckBox;
|
||||
|
||||
private Map<String, JBCheckBox> myFilterCheckboxes = ContainerUtil.newHashMap();
|
||||
|
||||
@@ -97,6 +98,7 @@ public class XmlEmmetConfigurable implements SearchableConfigurable, Disposable,
|
||||
return emmetOptions.isEmmetEnabled() != myEnableEmmetJBCheckBox.isSelected() ||
|
||||
emmetOptions.isPreviewEnabled() != myEnablePreviewJBCheckBox.isSelected() ||
|
||||
emmetOptions.isHrefAutoDetectEnabled() != myEnableHrefAutodetectJBCheckBox.isSelected() ||
|
||||
emmetOptions.isAddEditPointAtTheEndOfTemplate() != myAddEditPointAtTheEndOfTemplateJBCheckBox.isSelected() ||
|
||||
!emmetOptions.getFiltersEnabledByDefault().equals(enabledFilters());
|
||||
}
|
||||
|
||||
@@ -106,6 +108,7 @@ public class XmlEmmetConfigurable implements SearchableConfigurable, Disposable,
|
||||
emmetOptions.setEmmetEnabled(myEnableEmmetJBCheckBox.isSelected());
|
||||
emmetOptions.setPreviewEnabled(myEnablePreviewJBCheckBox.isSelected());
|
||||
emmetOptions.setHrefAutoDetectEnabled(myEnableHrefAutodetectJBCheckBox.isSelected());
|
||||
emmetOptions.setAddEditPointAtTheEndOfTemplate(myAddEditPointAtTheEndOfTemplateJBCheckBox.isSelected());
|
||||
emmetOptions.setFiltersEnabledByDefault(enabledFilters());
|
||||
}
|
||||
|
||||
@@ -118,6 +121,7 @@ public class XmlEmmetConfigurable implements SearchableConfigurable, Disposable,
|
||||
myEnablePreviewJBCheckBox.setSelected(emmetOptions.isPreviewEnabled());
|
||||
myEnableHrefAutodetectJBCheckBox.setEnabled(emmetOptions.isEmmetEnabled());
|
||||
myEnableHrefAutodetectJBCheckBox.setSelected(emmetOptions.isHrefAutoDetectEnabled());
|
||||
myAddEditPointAtTheEndOfTemplateJBCheckBox.setSelected(emmetOptions.isAddEditPointAtTheEndOfTemplate());
|
||||
|
||||
Set<String> enabledByDefault = emmetOptions.getFiltersEnabledByDefault();
|
||||
for (ZenCodingFilter filter : ZenCodingFilter.getInstances()) {
|
||||
|
||||
@@ -229,7 +229,7 @@ public class ZenCodingTemplate extends CustomLiveTemplateBase {
|
||||
}
|
||||
|
||||
List<GenerationNode> genNodes = fakeParentNode.getChildren();
|
||||
LiveTemplateBuilder builder = new LiveTemplateBuilder(segmentsLimit);
|
||||
LiveTemplateBuilder builder = new LiveTemplateBuilder(EmmetOptions.getInstance().isAddEditPointAtTheEndOfTemplate(), segmentsLimit);
|
||||
int end = -1;
|
||||
for (int i = 0, genNodesSize = genNodes.size(); i < genNodesSize; i++) {
|
||||
GenerationNode genNode = genNodes.get(i);
|
||||
|
||||
@@ -189,7 +189,7 @@ public class GenerationNode extends UserDataHolderBase {
|
||||
indentStr = StringUtil.repeatSymbol(' ', tabSize);
|
||||
}
|
||||
|
||||
LiveTemplateBuilder builder = new LiveTemplateBuilder(segmentsLimit);
|
||||
LiveTemplateBuilder builder = new LiveTemplateBuilder(EmmetOptions.getInstance().isAddEditPointAtTheEndOfTemplate(), segmentsLimit);
|
||||
int end = -1;
|
||||
boolean hasChildren = myChildren.size() > 0;
|
||||
|
||||
@@ -348,7 +348,7 @@ public class GenerationNode extends UserDataHolderBase {
|
||||
Map<String, String> predefinedVarValues,
|
||||
String surroundedText,
|
||||
int segmentsLimit) {
|
||||
LiveTemplateBuilder builder = new LiveTemplateBuilder(segmentsLimit);
|
||||
LiveTemplateBuilder builder = new LiveTemplateBuilder(EmmetOptions.getInstance().isAddEditPointAtTheEndOfTemplate(), segmentsLimit);
|
||||
if (predefinedVarValues == null && surroundedText == null) {
|
||||
return template;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user