diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataGenerator.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataGenerator.cs index 49ab1760dc..458a3fb4e3 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataGenerator.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataGenerator.cs @@ -90,7 +90,8 @@ namespace ICSharpCode.XamlBinding TextLocation loc = editor.Document.GetLocation(offset); XamlFullParseInformation info = context.ParseInformation; - TypeResolveResult trr = resolver.ResolveAtLocation(loc) as TypeResolveResult; + XamlResolver nameResolver = new XamlResolver(compilation); + TypeResolveResult trr = nameResolver.ResolveExpression(className, context) as TypeResolveResult; ITypeDefinition typeClass = trr != null ? trr.Type.GetDefinition() : null; if (typeClass != null && typeClass.HasAttached(true, true)) @@ -831,7 +832,7 @@ namespace ICSharpCode.XamlBinding string key = string.IsNullOrEmpty(ns.Key) ? "" : ns.Key + ":"; foreach (ITypeDefinition td in ns.Value.GetContents(compilation)) { - if (td.Kind == TypeKind.Class) + if (td.Kind != TypeKind.Class) continue; if (td.HasAttached(properties, events)) result.Add(new XamlCompletionItem(td)); diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Properties/AssemblyInfo.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Properties/AssemblyInfo.cs index f308b14793..db517ed5e5 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Properties/AssemblyInfo.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Properties/AssemblyInfo.cs @@ -5,4 +5,4 @@ using System.Reflection; using System.Runtime.CompilerServices; [assembly: AssemblyDescription("Provides XAML integration in code-completion")] -[assembly: InternalsVisibleTo("XamlBinding.Tests")] +[assembly: InternalsVisibleTo("ICSharpCode.XamlBinding.Tests")] diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs index 3a5221f098..8ab1ff403a 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs @@ -75,7 +75,7 @@ namespace ICSharpCode.XamlBinding string[] lines = text.Substring(0, MinMax(offset, 0, text.Length)).Split('\n'); string line = lines.LastOrDefault() ?? string.Empty; - return new TextLocation(line.Length + 1, lines.Length); + return new TextLocation(lines.Length, line.Length + 1); } /// diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs index a33a272fba..e43c910f11 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs @@ -78,7 +78,7 @@ namespace ICSharpCode.XamlBinding switch (context.Description) { case XamlContextDescription.AtTag: case XamlContextDescription.InTag: - if (context.ActiveElement != null && !XmlParser.IsInsideAttributeValue(editor.Document.Text, editor.Caret.Offset)) { + if (context.ActiveElement != null) { list = generator.CreateListForContext(context); editor.ShowCompletionWindow(list); return CodeCompletionKeyPressResult.Completed; diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs index 361d53ab63..93e18cf06c 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs @@ -96,24 +96,22 @@ namespace ICSharpCode.XamlBinding return string.Empty; } - string ParseName(string expression, out string prefix, out string member) + internal static string ParseName(string expression, out string prefix, out string member) { int colonPos = expression.IndexOf(':'); - int prefixLength = colonPos; if (colonPos > 0) prefix = expression.Substring(0, colonPos); - else { + else prefix = ""; - prefixLength = 0; - } + expression = expression.Remove(0, colonPos + 1); int dotPos = expression.IndexOf('.'); - if (dotPos >= 0) + if (dotPos >= 0) { member = expression.Substring(dotPos + 1); - else { + return expression.Remove(dotPos); + } else { member = ""; - dotPos = expression.Length; + return expression; } - return expression.Substring(colonPos + 1, dotPos - prefixLength - 1); } } }