Browse Source

cancel XAML completion in attribute values, if '{' is pressed and we are in an empty attribute value

pull/470/head
Siegfried Pammer 11 years ago
parent
commit
3f0a433b16
  1. 4
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs
  2. 6
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItemList.cs

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

@ -397,7 +397,9 @@ namespace ICSharpCode.XamlBinding
if (context.Description == XamlContextDescription.InMarkupExtension && context.AttributeValue != null && !context.AttributeValue.IsString) { if (context.Description == XamlContextDescription.InMarkupExtension && context.AttributeValue != null && !context.AttributeValue.IsString) {
if (!XamlBindingOptions.UseExtensionCompletion) if (!XamlBindingOptions.UseExtensionCompletion)
return false; return false;
XamlCompletionItemList completionList = generator.CreateMarkupExtensionCompletion(context) as XamlCompletionItemList; var completionList = generator.CreateMarkupExtensionCompletion(context) as XamlCompletionItemList;
if (completionList == null)
return false;
string word = context.Editor.GetWordBeforeCaretExtended(); string word = context.Editor.GetWordBeforeCaretExtended();
if (context.PressedKey != '.' && context.PressedKey != '=' && !word.EndsWith(".", StringComparison.Ordinal) && completionList.PreselectionLength == 0) if (context.PressedKey != '.' && context.PressedKey != '=' && !word.EndsWith(".", StringComparison.Ordinal) && completionList.PreselectionLength == 0)
completionList.PreselectionLength = word.Length; completionList.PreselectionLength = word.Length;

6
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItemList.cs

@ -41,9 +41,13 @@ namespace ICSharpCode.XamlBinding
if (key == ':' || key == '/') if (key == ':' || key == '/')
return CompletionItemListKeyResult.NormalKey; return CompletionItemListKeyResult.NormalKey;
if (key == '.' && (context.InAttributeValueOrMarkupExtension && context.Attribute.Name.StartsWith("xmlns"))) if (key == '.' && (context.InAttributeValueOrMarkupExtension && context.Attribute.Name.StartsWith("xmlns", StringComparison.Ordinal)))
return CompletionItemListKeyResult.NormalKey; return CompletionItemListKeyResult.NormalKey;
// cancel completion if user might want to start a markup extension and value is still empty
if (key == '{' && (context.InAttributeValueOrMarkupExtension && string.IsNullOrEmpty(context.RawAttributeValue)))
return CompletionItemListKeyResult.Cancel;
return base.ProcessInput(key); return base.ProcessInput(key);
} }

Loading…
Cancel
Save