public override Innovator.Client.IPromise<CompletionContext> ShowCompletions(CodeEditor control) { var length = control.Editor.Document.TextLength; var caret = control.Editor.CaretOffset; var data = new CompletionContext(); if (caret > 0) { string[][] completions = null; if (control.Editor.Document.GetCharAt(caret - 1) == '\\') completions = _completionInfo; if (completions != null) { data.Items = completions .OrderBy(i => i[0].ToLowerInvariant()) .ThenBy(i => i[1]) .Select(i => new BasicCompletionData() { Content = GetSpan(new Run(i[0] + " "), new Run(i[1]) { Foreground = Brushes.Gray }), Text = i[0], Action = () => i[0] }); } } if (data.Items.Any()) { var items = data.Items.ToArray(); var contextItems = items.OfType<IContextCompletions>(); foreach (var contextItem in contextItems) { contextItem.SetContext(this, control); } control.ShowCompletionWindow(items, data.Overlap); } return Promises.Resolved(data); }
public override IPromise<CompletionContext> ShowCompletions(CodeEditor control) { var length = control.Editor.Document.TextLength; var caret = control.Editor.CaretOffset; if (control.Editor.CaretOffset >= 2 && control.Editor.Document.GetText(control.Editor.CaretOffset - 2, 2) == "<!") { var context = new CompletionContext() { Items = new ICompletionData[] { new BasicCompletionData() { Text = "--", Content = "-- (Comment)", Action = () => "---->", CaretOffset = -3 }, new BasicCompletionData() { Text = "[CDATA[", Action = () => "[CDATA[]]>", CaretOffset = -3 } } }; control.ShowCompletionWindow(context.Items, context.Overlap); return Promises.Resolved(context); } else { return this.GetCompletions(control.Document, control.Editor.CaretOffset, this.SoapAction) .ToPromise() .UiPromise(control) .Convert(data => { if (length != control.Editor.Document.TextLength || caret != control.Editor.CaretOffset) { ShowCompletions(control); return null; } if (data.Items.Any()) { var items = data.Items.ToArray(); var contextItems = items.OfType<IContextCompletions>(); foreach (var contextItem in contextItems) { contextItem.SetContext(this, control); } control.ShowCompletionWindow(items, data.Overlap); } return data; }); } }
public override void HandleTextEntered(CodeEditor control, string insertText) { switch (insertText) { case ">": var doc = control.Editor.Document; var caret = control.Editor.CaretOffset; var text = doc.GetText(0, caret); var elementName = XmlParser.GetOpenElement(text); if (!string.IsNullOrEmpty(elementName)) { var insert = "</" + elementName + ">"; if (!doc.GetText(caret, doc.TextLength - caret).Trim().StartsWith(insert)) { doc.Insert(caret, insert, AnchorMovementType.BeforeInsertion); } } break; default: var result = HandleTextEntered(control.Editor.Document, control.Editor.CaretOffset, insertText); if (result.Any()) { control.ShowCompletionWindow(result, 0); } break; } }
public override Innovator.Client.IPromise<CompletionContext> ShowCompletions(CodeEditor control) { var length = control.Editor.Document.TextLength; var caret = control.Editor.CaretOffset; var data = new CompletionContext(); if (caret > 0 && control.Editor.Document.GetCharAt(caret - 1) == '\\') { data.Items = _completionInfo .OrderBy(i => i[0].ToLowerInvariant()) .ThenBy(i => i[1]) .Select(i => new BasicCompletionData() { Content = FormatText.Span(FormatText.Text(i[0] + " "), FormatText.MutedText(i[1])), Text = i[0], Action = () => i[0] }); } if (data.Items.Any()) { var items = data.Items.ToArray(); var contextItems = items.OfType<IContextCompletions>(); foreach (var contextItem in contextItems) { contextItem.SetContext(this, control); } control.ShowCompletionWindow(items, data.Overlap); } return Promises.Resolved(data); }
public Innovator.Client.IPromise<CompletionContext> ShowCompletions(CodeEditor control) { var length = control.Editor.Document.TextLength; var caret = control.Editor.CaretOffset; var text = control.Editor.Text; return _sql.Completions(text.Substring(0, caret), control.Document, caret, null) .UiPromise(control) .Convert(data => { if (length != control.Editor.Document.TextLength || caret != control.Editor.CaretOffset) { ShowCompletions(control); return null; } if (data.Items.Any()) { var items = data.Items.ToArray(); var contextItems = items.OfType<IContextCompletions>(); foreach (var contextItem in contextItems) { contextItem.SetContext(this, control); } control.ShowCompletionWindow(items, data.Overlap); } return data; }); }