Example #1
0
 public SuggestItem(
     string text,
     Func <string> htmlDescriptionProvider,
     SuggestItemType type,
     Func <string> autoCompletePreText         = null,
     Func <string> autoCompletePostText        = null,
     Func <string> autoCompleteDescriptionText = null,
     string[] autoCompleteAccessModifiers      = null,
     string[] autoCompleteFieldModifiers       = null,
     MethodArgument[] arguments = null,
     Action <IAutoCompleteCodeEditor> commitAction = null,
     SuggestItemPriority priority = SuggestItemPriority.Normal)
 {
     this.Text = text;
     this.HtmlDescriptionProvider = htmlDescriptionProvider;
     this.Type = type;
     this.AutoCompletePreText         = autoCompletePreText;
     this.AutoCompletePostText        = autoCompletePostText;
     this.AutoCompleteDescriptionText = autoCompleteDescriptionText;
     this.AutoCompleteAccessModifiers = autoCompleteAccessModifiers;
     this.AutoCompleteFieldModifiers  = autoCompleteFieldModifiers;
     this.AutoCompleteMethodArguments = arguments;
     this.CommitAction = commitAction;
     this.Priority     = priority;
 }
Example #2
0
 public static SuggestItem Suggest(SuggestItemType type,
                                   object docObject,
                                   string name,
                                   Func <string> pretext  = null,
                                   Func <string> posttext = null,
                                   Action <IAutoCompleteCodeEditor> commitAction = null,
                                   SuggestItemPriority priority = SuggestItemPriority.Normal)
 {
     return(new SuggestItem(
                name,
                () => (DocumentationHinter.CreateHtmlHint(docObject, null, new List <string>()) ?? ""),
                type,
                pretext,
                posttext,
                null,
                null,
                null,
                null,
                commitAction,
                priority));
 }
Example #3
0
        void Suggest(
            SuggestItemType type,
            object docObject,
            string suggestionText,
            Func <string> pretext      = null,
            Func <string> posttext     = null,
            Func <string> desctext     = null,
            string[] accessModifiers   = null,
            string[] fieldModifiers    = null,
            MethodArgument[] arguments = null,
            Action <IAutoCompleteCodeEditor> commitAction = null,
            SuggestItemPriority priority = SuggestItemPriority.Normal,
            bool omitDuplicates          = true)
        {
            if (omitDuplicates && _suggestionNames.Contains(suggestionText))
            {
                return;
            }
            if (suggestionText.StartsWith("."))
            {
                return;
            }
            if (type == SuggestItemType.Class && _context.expectsConstructor)
            {
                type = SuggestItemType.Constructor;
                var dt = (DataType)docObject;
                foreach (var ctor in dt.Constructors)
                {
                    desctext = () => "";
                    var args = new List <MethodArgument>();
                    for (var i = 0; i < ctor.Parameters.Length; i++)
                    {
                        var arg = ctor.Parameters[i];
                        args.Add(new MethodArgument(arg.Name, arg.Type.Name, arg.Modifier == ParameterModifier.Out));
                    }
                    arguments = args.ToArray();
                    //This repetition is pretty ugly.. Oh well
                    var item = new SuggestItem(
                        suggestionText,
                        () => (DocumentationHinter.CreateHtmlHint(docObject, _context.Compiler, _context.Usings) ?? ""),
                        type,
                        pretext,
                        posttext,
                        desctext,
                        accessModifiers,
                        fieldModifiers,
                        arguments,
                        commitAction,
                        priority);
                    _suggestions.Add(item);
                }
            }
            else
            {
                if (desctext == null)
                {
                    desctext = () => "" + type;
                }
                _suggestions.Add(
                    new SuggestItem(
                        suggestionText,
                        () => (DocumentationHinter.CreateHtmlHint(docObject, _context.Compiler, _context.Usings) ?? ""),
                        type,
                        pretext,
                        posttext,
                        desctext,
                        accessModifiers,
                        fieldModifiers,
                        arguments,
                        commitAction,
                        priority)
                    );
            }

            if (omitDuplicates)
            {
                _suggestionNames.Add(suggestionText);
            }
        }