From 2b753e0f50dda018f824fa8c8e05134e7ee16eff Mon Sep 17 00:00:00 2001 From: keforbes Date: Wed, 14 May 2014 22:23:52 -0600 Subject: [PATCH] Work on #433. Regex madness for XML tag parsing. This should fix #355 but it still doesn't address the remaining issue in #433. --- .../vrapper/core/tests/cases/NormalModeTests.java | 8 ++++++++ .../vrapper/vim/commands/XmlTagDelimitedText.java | 12 ++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/net.sourceforge.vrapper.core.tests/src/net/sourceforge/vrapper/core/tests/cases/NormalModeTests.java b/net.sourceforge.vrapper.core.tests/src/net/sourceforge/vrapper/core/tests/cases/NormalModeTests.java index d404763f5..526b653ad 100644 --- a/net.sourceforge.vrapper.core.tests/src/net/sourceforge/vrapper/core/tests/cases/NormalModeTests.java +++ b/net.sourceforge.vrapper.core.tests/src/net/sourceforge/vrapper/core/tests/cases/NormalModeTests.java @@ -907,6 +907,14 @@ public void test_dit() { checkCommand(forKeySeq("dit"), "co",'n',"tent", "",'<',"/tag>"); + + checkCommand(forKeySeq("dit"), + "<% jsp",' ',"%>", + "",'<',"/tag>"); + + checkCommand(forKeySeq("dit"), + "\"> ",' ',"foo", + "\">",'<',"/tag>"); } @Test diff --git a/net.sourceforge.vrapper.core/src/net/sourceforge/vrapper/vim/commands/XmlTagDelimitedText.java b/net.sourceforge.vrapper.core/src/net/sourceforge/vrapper/vim/commands/XmlTagDelimitedText.java index 96724dd45..102cedee5 100644 --- a/net.sourceforge.vrapper.core/src/net/sourceforge/vrapper/vim/commands/XmlTagDelimitedText.java +++ b/net.sourceforge.vrapper.core/src/net/sourceforge/vrapper/vim/commands/XmlTagDelimitedText.java @@ -23,15 +23,11 @@ public class XmlTagDelimitedText implements DelimitedText { //regex usually stops at newlines but open tags might have //multiple lines of attributes. So, include newlines in search. //Skip comments (), empty-element tags (), and jsp (<% %>) - private static final String XML_TAG_REGEX = "<([^"; + private static final String XML_TAG_REGEX = "<(?:(?!%|!))[^<]*?(?:(?"; + private static final Pattern tagPattern = Pattern.compile(XML_TAG_REGEX, Pattern.DOTALL); - private static final Pattern tagPattern = Pattern.compile(XML_TAG_REGEX); - - private static final String XML_TAG_NAME_REGEX = "([^ \n\t]*)"; - private static final String XML_PARAMETERS_REGEX = "(\n|.)*"; - private static final String XML_NAME_REGEX = ""; - - private static final Pattern tagNamePattern = Pattern.compile(XML_NAME_REGEX); + private static final String XML_NAME_REGEX = ""; + private static final Pattern tagNamePattern = Pattern.compile(XML_NAME_REGEX, Pattern.DOTALL); private TextRange endTag; private TextRange openTag;