From b2a877fb45f805e743369b8138ad81d373677498 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Thu, 1 May 2014 00:37:19 +0200 Subject: [PATCH] fix #452: XAML CC inserts ", " in unexpected places when typing nested markup extension --- .../XamlBinding/XamlBinding/MarkupExtensionParser.cs | 6 +++++- src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs | 2 +- .../XamlBinding/XamlBinding/XamlCompletionItemList.cs | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionParser.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionParser.cs index 848385cafd..e03b72b411 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionParser.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionParser.cs @@ -74,7 +74,11 @@ namespace ICSharpCode.XamlBinding info.TryAddNamedArgument(argumentName, ParseValue(token.Value, token.StartOffset + offset)); } - return info; + if (info.EndOffset == 0 && token != null) { + info.EndOffset = token.EndOffset + offset; + } + + return info; } static void TryAddNamedArgument(this MarkupExtensionInfo info, string name, AttributeValue value) diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs index 95d7ff39e7..ae8ee01864 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs @@ -126,7 +126,7 @@ namespace ICSharpCode.XamlBinding MarkupExtensionInfo tmp = info; foreach (var item in info.PositionalArguments) { - if (item.StartOffset < offset && offset < item.EndOffset) + if (item.StartOffset < offset && offset <= item.EndOffset) tmp = item.IsString ? tmp : GetMarkupExtensionAtPosition(item.ExtensionValue, offset); } diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItemList.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItemList.cs index 28c85ecb11..60668bbc36 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItemList.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItemList.cs @@ -92,7 +92,7 @@ namespace ICSharpCode.XamlBinding AttributeValue value = MarkupExtensionParser.ParseValue(valuePart); if (value != null && !value.IsString) { - var markup = Utils.GetMarkupExtensionAtPosition(value.ExtensionValue, context.Editor.Caret.Offset); + var markup = Utils.GetMarkupExtensionAtPosition(value.ExtensionValue, xamlContext.ValueStartOffset); if (markup.NamedArguments.Count > 0 || markup.PositionalArguments.Count > 0) { int oldOffset = context.Editor.Caret.Offset; context.Editor.Caret.Offset = context.StartOffset;