public Innovator.Client.IPromise <CompletionContext> ShowCompletions(EditorWinForm 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; })); }
public override void HandleTextEntered(EditorWinForm 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 IPromise <CompletionContext> ShowCompletions(EditorWinForm 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() == true) { 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(EditorWinForm control, string insertText) { var text = control.Editor.Text.Substring(0, control.Editor.CaretOffset); switch (insertText[0]) { case ':': if (XmlParser.IsInsideAttributeValue(text, text.Length)) { var namespaces = XmlParser.GetNamespacesInScope(text); var i = text.Length - 2; while (Char.IsLetterOrDigit(text[i]) || text[i] == '_') { i--; } string namespaceUri; if (namespaces != null && namespaces.TryGetValue(text.Substring(i + 1).TrimEnd(':'), out namespaceUri)) { var methods = ArasXsltExtensions.GetExtensionMethods(namespaceUri).OrderBy(m => m.Name); control.ShowCompletionWindow(from m in methods group m by m.Name into Group select new BasicCompletionData(Group.Key, Group.Select(MethodToString).Aggregate((p, c) => p + Environment.NewLine + c)), 0); } } break; default: base.HandleTextEntered(control, insertText); break; } }
public override void HandleTextEntered(EditorWinForm control, string insertText) { var text = control.Editor.Text.Substring(0, control.Editor.CaretOffset); switch (insertText[0]) { case ':': if (XmlParser.IsInsideAttributeValue(text, text.Length)) { var namespaces = XmlParser.GetNamespacesInScope(text); var i = text.Length - 2; while (Char.IsLetterOrDigit(text[i]) || text[i] == '_') i--; string namespaceUri; if (namespaces != null && namespaces.TryGetValue(text.Substring(i + 1).TrimEnd(':'), out namespaceUri)) { var methods = ArasXsltExtensions.GetExtensionMethods(namespaceUri).OrderBy(m => m.Name); control.ShowCompletionWindow(from m in methods group m by m.Name into Group select new BasicCompletionData(Group.Key, Group.Select(MethodToString).Aggregate((p, c) => p + Environment.NewLine + c)), 0); } } break; default: base.HandleTextEntered(control, insertText); break; } }
public override void HandleTextEntered(EditorWinForm control, string insertText) { switch (insertText) { case "\\": ShowCompletions(control); break; case "{": case "(": case "[": if (_currentInsight != null) _currentInsight.Hide(); var overload = new OverloadInsightWindow(control.Editor.TextArea); if (insertText == "{") overload.Provider = _quantifiers; else if (insertText == "(") overload.Provider = _groups; else overload.Provider = _charClass; overload.Show(); _currentInsight = overload; break; case "}": case ")": case "]": if (_currentInsight != null) _currentInsight.Hide(); _currentInsight = null; break; } }
public override IPromise<CompletionContext> ShowCompletions(EditorWinForm 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(EditorWinForm control, string insertText) { switch (insertText) { case "\\": ShowCompletions(control); break; } }
public void HandleTextEntered(EditorWinForm control, string insertText) { switch (insertText) { case " ": case ",": case "(": case ".": _sql.CurrentTextArea = control.Editor.TextArea; ShowCompletions(control); break; } }
public override void HandleTextEntered(EditorWinForm control, string insertText) { if (_isInitialized) { switch (insertText) { case "'": case "\"": case " ": case "<": case ",": case "(": case ".": case "!": case "|": case "[": _sql.CurrentTextArea = control.Editor.TextArea; ShowCompletions(control) .Done(data => { if (data != null && data.IsXmlTag && !data.Items.Any() && control.Editor.CaretOffset < control.Editor.Document.TextLength) { var doc = control.Editor.TextArea.Document; var quote = doc.GetCharAt(doc.LastIndexOf('=', 0, control.Editor.CaretOffset) + 1); if (insertText[0] == quote && quote == doc.GetCharAt(control.Editor.CaretOffset)) { doc.Remove(control.Editor.CaretOffset, 1); } } }); break; case ">": var endTag = this.LastOpenTag(control.Document.CreateSnapshot(0, control.Editor.CaretOffset)); if (!string.IsNullOrEmpty(endTag)) { var insert = "</" + endTag + ">"; if (!control.Editor.Text.Substring(control.Editor.CaretOffset).StartsWith(insert)) { control.Editor.Document.Insert(control.Editor.CaretOffset, insert, AnchorMovementType.BeforeInsertion); control.HideCompletionWindow(); } } ShowCompletions(control); break; } } }
public override void HandleTextEntered(EditorWinForm control, string insertText) { if (_isInitialized) { switch (insertText) { case "'": case "\"": case " ": case "<": case ",": case "(": case ".": case "!": _sql.CurrentTextArea = control.Editor.TextArea; ShowCompletions(control) .Done(data => { if (data != null && data.IsXmlTag && !data.Items.Any() && control.Editor.CaretOffset < control.Editor.Document.TextLength) { var doc = control.Editor.TextArea.Document; var quote = doc.GetCharAt(doc.LastIndexOf('=', 0, control.Editor.CaretOffset) + 1); if (insertText[0] == quote && quote == doc.GetCharAt(control.Editor.CaretOffset)) { doc.Remove(control.Editor.CaretOffset, 1); } } }); break; case ">": var endTag = this.LastOpenTag(control.Document.CreateSnapshot(0, control.Editor.CaretOffset)); if (!string.IsNullOrEmpty(endTag)) { var insert = "</" + endTag + ">"; if (!control.Editor.Text.Substring(control.Editor.CaretOffset).StartsWith(insert)) { control.Editor.Document.Insert(control.Editor.CaretOffset, insert, AnchorMovementType.BeforeInsertion); control.HideCompletionWindow(); } } ShowCompletions(control); break; } } }
public override void HandleTextEntered(EditorWinForm control, string insertText) { switch (insertText) { case "\\": ShowCompletions(control); break; case "{": case "(": case "[": if (_currentInsight != null) { _currentInsight.Hide(); } var overload = new OverloadInsightWindow(control.Editor.TextArea); if (insertText == "{") { overload.Provider = _quantifiers; } else if (insertText == "(") { overload.Provider = _groups; } else { overload.Provider = _charClass; } overload.Show(); _currentInsight = overload; break; case "}": case ")": case "]": if (_currentInsight != null) { _currentInsight.Hide(); } _currentInsight = null; break; } }
public override Innovator.Client.IPromise<CompletionContext> ShowCompletions(EditorWinForm 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; else if (control.Editor.Document.GetCharAt(caret - 1) == '$') completions = _replacementTypes; 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 Innovator.Client.IPromise<CompletionContext> ShowCompletions(EditorWinForm 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 override Innovator.Client.IPromise <CompletionContext> ShowCompletions(EditorWinForm 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; } else if (control.Editor.Document.GetCharAt(caret - 1) == '$') { completions = _replacementTypes; } 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 virtual Innovator.Client.IPromise<CompletionContext> ShowCompletions(EditorWinForm control) { return Innovator.Client.Promises.Resolved(new CompletionContext()); }
public virtual void HandleTextEntered(EditorWinForm control, string insertText) { // Do nothing }
public virtual Innovator.Client.IPromise <CompletionContext> ShowCompletions(EditorWinForm control) { return(Innovator.Client.Promises.Resolved(new CompletionContext())); }
public override Innovator.Client.IPromise <CompletionContext> ShowCompletions(EditorWinForm control) { var context = new CompletionContext(); try { var caret = control.Editor.CaretOffset; var text = control.Editor.Text; var current = text.Substring(0, caret); var lastMacro = current.LastIndexOf('$'); var preMacro = lastMacro > 0 ? current.Substring(0, lastMacro).Trim() : current; if (lastMacro >= 0 && current.LastIndexOf(')') < lastMacro) { var overlap = current.Substring(lastMacro); var filter = overlap.TrimStart('$', '('); var items = Macros.Select(m => new BasicCompletionData() { Text = m, Action = () => "(" + m + ")", Image = Icons.Operator16.Wpf }) .Where(i => i.Text.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0) .OrderBy(i => i.Text); context.Items = items; control.ShowCompletionWindow(items, overlap.Length - 1); } else if (File.Exists(preMacro)) { var items = Macros.Select(m => new BasicCompletionData() { Text = m, Action = () => "$(" + m + ")", Image = Icons.Operator16.Wpf }) .OrderBy(i => i.Text); context.Items = items; control.ShowCompletionWindow(items, 0); } else if (current.Length >= 3) { var dir = (current.EndsWith("/") || current.EndsWith("\\")) ? current : Path.GetDirectoryName(current) + "\\"; var overlap = current.Length > dir.Length ? current.Substring(dir.Length) : string.Empty; IEnumerable <ICompletionData> items; if (dir.StartsWith(@"\\") && dir.Trim('\\').IndexOf(@"\") < 0) { items = ShareCollection.GetShares(dir) .Select(s => new BasicCompletionData() { Text = s.NetName, Image = Icons.Folder16.Wpf }); } else { items = new DirectoryInfo(dir).GetFileSystemInfos() .Select(e => new BasicCompletionData() { Text = e.Name, Image = (e.Attributes & FileAttributes.Directory) > 0 ? Icons.Folder16.Wpf : Icons.EnumValue16.Wpf }); } items = items .Where(i => i.Text.IndexOf(overlap, StringComparison.OrdinalIgnoreCase) >= 0) .OrderBy(i => i.Text); context.Items = items; control.ShowCompletionWindow(items, overlap.Length); } } catch (IOException) { } catch (ArgumentException) { } return(Innovator.Client.Promises.Resolved(context)); }
public override void HandleTextEntered(EditorWinForm control, string insertText) { var text = control.Editor.Text.Substring(0, control.Editor.CaretOffset); ICompletionData[] result = null; IEnumerable<XmlElementPath> parentPaths; switch (insertText) { case "=": // Namespace intellisense. if (XmlParser.IsNamespaceDeclaration(text, text.Length)) { result = schemaCompletionDataItems.GetNamespaceCompletionData(); } break; case "<": // Child element intellisense. parentPaths = XmlParser.GetParentElementPaths(text); if (parentPaths.Any()) { foreach (var path in parentPaths) { result = GetChildElementCompletionData(path); if (result.Any()) break; } } else if (defaultSchemaCompletionData != null) { result = defaultSchemaCompletionData.GetElementCompletionData(defaultNamespacePrefix).ToArray(); } break; case " ": // Attribute intellisense. if (!XmlParser.IsInsideAttributeValue(text, text.Length)) { XmlElementPath path = XmlParser.GetActiveElementStartPath(text, text.Length); if (path.Elements.Count > 0) { result = GetAttributeCompletionData(path); } } break; case ">": var elementName = XmlParser.GetOpenElement(text); if (!string.IsNullOrEmpty(elementName)) { var insert = "</" + elementName + ">"; if (!control.Editor.Text.Substring(control.Editor.CaretOffset).Trim().StartsWith(insert)) { control.Editor.Document.Insert(control.Editor.CaretOffset, insert, AnchorMovementType.BeforeInsertion); } } break; default: // Attribute value intellisense. if (XmlParser.IsAttributeValueChar(insertText[0])) { string attributeName = XmlParser.GetAttributeName(text, text.Length); if (attributeName.Length > 0) { XmlElementPath elementPath = XmlParser.GetActiveElementStartPath(text, text.Length); if (elementPath.Elements.Count > 0) { //preSelection = insertText.ToString(); result = GetAttributeValueCompletionData(elementPath, attributeName); } } } break; } if (result != null) { Array.Sort(result, (x, y) => x.Text.CompareTo(y.Text)); control.ShowCompletionWindow(result, 0); } }
public void SetContext(IEditorHelper parent, EditorWinForm control) { _parent = parent; _control = control; }
public Innovator.Client.IPromise<CompletionContext> ShowCompletions(EditorWinForm 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; }); }
public override Innovator.Client.IPromise <CompletionContext> ShowCompletions(EditorWinForm 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)); }