diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
index 0fbb8e6226..208ed22cb3 100644
--- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
@@ -481,7 +481,7 @@ namespace ICSharpCode.VBNetBinding
string text = lineSeg.Text;
- if (StripComment(text).Trim(' ', '\t', '\r', '\n').EndsWith("_", StringComparison.OrdinalIgnoreCase))
+ if (text.TrimComments().Trim(' ', '\t', '\r', '\n').EndsWith("_", StringComparison.OrdinalIgnoreCase))
return true;
else
return false;
@@ -515,11 +515,6 @@ namespace ICSharpCode.VBNetBinding
return empty && match;
}
- static string StripComment(string text)
- {
- return Regex.Replace(text, "'.*$", "", RegexOptions.Singleline).Trim();
- }
-
static bool IsInsideDocumentationComment(ITextEditor editor, IDocumentLine curLine, int cursorOffset)
{
for (int i = curLine.Offset; i < cursorOffset; ++i) {
@@ -623,10 +618,10 @@ namespace ICSharpCode.VBNetBinding
static int GetLastVisualLine(int line, ITextEditor area)
{
- string text = StripComment(area.Document.GetLine(line).Text);
+ string text = area.Document.GetLine(line).Text.TrimComments();
while (text.EndsWith("_", StringComparison.Ordinal)) {
line++;
- text = StripComment(area.Document.GetLine(line).Text);
+ text = area.Document.GetLine(line).Text.TrimComments();
}
return line;
}
@@ -754,7 +749,7 @@ namespace ICSharpCode.VBNetBinding
for (int i = begin; i <= end; i++) {
IDocumentLine curLine = editor.Document.GetLine(i);
string lineText = curLine.Text.Trim(' ', '\t', '\r', '\n');
- string noComments = StripComment(lineText).TrimEnd(' ', '\t', '\r', '\n');
+ string noComments = lineText.TrimComments().TrimEnd(' ', '\t', '\r', '\n');
if (i < selBegin || i > selEnd) {
indentation.PopOrDefault();
diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/LanguageUtils.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/LanguageUtils.cs
new file mode 100644
index 0000000000..9a71e49a1a
--- /dev/null
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/LanguageUtils.cs
@@ -0,0 +1,27 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+
+namespace ICSharpCode.VBNetBinding
+{
+ public static class LanguageUtils
+ {
+ public static string TrimComments(this string argument)
+ {
+ if (string.IsNullOrEmpty(argument))
+ return string.Empty;
+
+ bool inStr = false;
+
+ for (int i = 0; i < argument.Length; i++) {
+ if (argument[i] == '"')
+ inStr = !inStr;
+ if (argument[i] == '\'' && !inStr)
+ return argument.Substring(0, i).Trim();
+ }
+
+ return argument;
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs
index 6903e97722..4e8f3c70ff 100644
--- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs
@@ -56,25 +56,11 @@ namespace ICSharpCode.VBNetBinding
&& directive.Arg.StartsWith("region", StringComparison.OrdinalIgnoreCase)
&& regionStartDirectives.Any()) {
ICSharpCode.NRefactory.PreprocessingDirective start = regionStartDirectives.Pop();
- cu.FoldingRegions.Add(new FoldingRegion(TrimComment(start.Arg).Trim('"'), DomRegion.FromLocation(start.StartPosition, directive.EndPosition)));
+ cu.FoldingRegions.Add(new FoldingRegion(start.Arg.TrimComments().Trim('"'), DomRegion.FromLocation(start.StartPosition, directive.EndPosition)));
}
}
}
- static string TrimComment(string argument)
- {
- bool inStr = false;
-
- for (int i = 0; i < argument.Length; i++) {
- if (argument[i] == '"')
- inStr = !inStr;
- if (argument[i] == '\'' && !inStr)
- return argument.Substring(0, i).Trim();
- }
-
- return argument;
- }
-
public ICompilationUnit Parse(IProjectContent projectContent, string fileName, ICSharpCode.SharpDevelop.ITextBuffer fileContent)
{
using (ICSharpCode.NRefactory.IParser p = ICSharpCode.NRefactory.ParserFactory.CreateParser(ICSharpCode.NRefactory.SupportedLanguage.VBNet, fileContent.CreateReader())) {
diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj
index 4f73f22bb4..2e42256570 100644
--- a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj
@@ -68,6 +68,7 @@
+
ProjectImportsOptions.xaml
Code