Browse Source

fixed some bugs in XAML code completion

pull/32/merge
Siegfried Pammer 13 years ago
parent
commit
8a65c372cb
  1. 5
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataGenerator.cs
  2. 2
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/Properties/AssemblyInfo.cs
  3. 2
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs
  4. 2
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs
  5. 16
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs

5
src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataGenerator.cs

@ -90,7 +90,8 @@ namespace ICSharpCode.XamlBinding @@ -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 @@ -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));

2
src/AddIns/BackendBindings/XamlBinding/XamlBinding/Properties/AssemblyInfo.cs

@ -5,4 +5,4 @@ using System.Reflection; @@ -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")]

2
src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs

@ -75,7 +75,7 @@ namespace ICSharpCode.XamlBinding @@ -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);
}
/// <summary>

2
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs

@ -78,7 +78,7 @@ namespace ICSharpCode.XamlBinding @@ -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;

16
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs

@ -96,24 +96,22 @@ namespace ICSharpCode.XamlBinding @@ -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);
}
}
}

Loading…
Cancel
Save