Ejemplo n.º 1
0
        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));
        }
        protected virtual BasicCompletionData ConfigureLabeledProperty(BasicCompletionData data, IListValue prop)
        {
            var label = prop.Label + " (" + prop.Value + ")";

            data.Text        = label;
            data.Description = Tooltips.Property(prop as Property);
            data.Content     = FormatText.MutedText(label);
            data.Image       = Icons.Property16.Wpf;

            var insertValue = prop.Value;

            if (_insertion != null)
            {
                insertValue = _insertion(prop.Value);
            }
            data.Action = () => insertValue;
            return(data);
        }