示例#1
0
        public async Task <CompletionResult> GetCompletionData(int position, char?triggerChar, bool useSignatureHelp)
        {
            IList <ICompletionDataEx> completionData   = null;
            IOverloadProvider         overloadProvider = null;
            bool?isCompletion = null;

            if (useSignatureHelp || triggerChar != null)
            {
                var signatureHelpProvider = _roslynHost.GetService <ISignatureHelpProvider>();
                var isSignatureHelp       = useSignatureHelp || signatureHelpProvider.IsTriggerCharacter(triggerChar.Value);
                if (isSignatureHelp)
                {
                    var signatureHelp = await signatureHelpProvider.GetItemsAsync(
                        _roslynHost.CurrentDocument,
                        position,
                        new SignatureHelpTriggerInfo(
                            useSignatureHelp
                                ? SignatureHelpTriggerReason.InvokeSignatureHelpCommand
                                : SignatureHelpTriggerReason.TypeCharCommand, triggerChar))
                                        .ConfigureAwait(false);

                    if (signatureHelp != null)
                    {
                        overloadProvider = new RoslynOverloadProvider(signatureHelp);
                    }
                }
                else
                {
                    isCompletion = await CompletionService.IsCompletionTriggerCharacterAsync(_roslynHost.CurrentDocument, position - 1).ConfigureAwait(false);
                }
            }

            if (overloadProvider == null && isCompletion != false)
            {
                var data = await CompletionService.GetCompletionListAsync(
                    _roslynHost.CurrentDocument,
                    position,
                    triggerChar != null
                    ?CompletionTriggerInfo.CreateTypeCharTriggerInfo(triggerChar.Value)
                    : CompletionTriggerInfo.CreateInvokeCompletionTriggerInfo()
                    ).ConfigureAwait(false);

                completionData = data?.Items.Select(item => new RoslynCompletionData(item)).ToArray <ICompletionDataEx>()
                                 ?? (IList <ICompletionDataEx>) new List <ICompletionDataEx>();
            }

            return(new CompletionResult(completionData, overloadProvider));
        }
示例#2
0
        /// <summary>
        /// Changes the selected index.
        /// </summary>
        /// <param name="relativeIndexChange">The relative index change - usual values are +1 or -1.</param>
        public void ChangeIndex(int relativeIndexChange)
        {
            IOverloadProvider p = this.Provider;

            if (p != null)
            {
                int newIndex = p.SelectedIndex + relativeIndexChange;
                if (newIndex < 0)
                {
                    newIndex = p.Count - 1;
                }
                if (newIndex >= p.Count)
                {
                    newIndex = 0;
                }
                p.SelectedIndex = newIndex;
            }
        }
示例#3
0
        public async Task <CompletionResult> GetCompletionData(int position, char?triggerChar)
        {
            IList <ICompletionDataEx> completionData   = null;
            IOverloadProvider         overloadProvider = null;
            bool?isCompletion = null;

            if (triggerChar != null)
            {
                var isSignatureHelp = await _interactiveManager.IsSignatureHelpTriggerCharacter(position - 1).ConfigureAwait(false);

                if (isSignatureHelp)
                {
                    var signatureHelp = await _interactiveManager.GetSignatureHelp(
                        new SignatureHelpTriggerInfo(SignatureHelpTriggerReason.TypeCharCommand, triggerChar.Value), position)
                                        .ConfigureAwait(false);

                    if (signatureHelp != null)
                    {
                        overloadProvider = new RoslynOverloadProvider(signatureHelp);
                    }
                }
                else
                {
                    isCompletion = await _interactiveManager.IsCompletionTriggerCharacter(position - 1).ConfigureAwait(false);
                }
            }

            if (overloadProvider == null && isCompletion != false)
            {
                var items = await _interactiveManager.GetCompletion(
                    triggerChar != null
                    ?CompletionTriggerInfo.CreateTypeCharTriggerInfo(triggerChar.Value)
                    : CompletionTriggerInfo.CreateInvokeCompletionTriggerInfo(),
                    position).ConfigureAwait(false);

                completionData = items.Select(item => new AvalonEditCompletionData(item)).ToArray <ICompletionDataEx>();
            }

            return(new CompletionResult(completionData, overloadProvider));
        }
        public async Task <CompletionResult> GetCompletionData(int position, char?triggerChar)
        {
            IList <ISelectedCompletionData> completionData = null;
            IOverloadProvider overloadProvider             = null;
            bool?isCompletion = null;

            if (triggerChar != null)
            {
                var isSignatureHelp = await IsSignatureHelpTriggerCharacter(position - 1).ConfigureAwait(false);

                if (isSignatureHelp)
                {
                    var signatureHelp = await GetSignatureHelp(
                        new SignatureHelpTriggerInfo(SignatureHelpTriggerReason.TypeCharCommand, triggerChar.Value), position)
                                        .ConfigureAwait(false);

                    if (signatureHelp != null)
                    {
                        overloadProvider = new OverloadProvider(signatureHelp);
                    }
                }
                else
                {
                    isCompletion = await IsCompletionTriggerCharacter(position - 1).ConfigureAwait(false);
                }
            }

            if (overloadProvider == null && isCompletion != false)
            {
                var items = GetCompletion(
                    triggerChar != null
                        ? CompletionTriggerInfo.CreateTypeCharTriggerInfo(triggerChar.Value)
                        : CompletionTriggerInfo.CreateInvokeCompletionTriggerInfo(),
                    position);
                completionData = items.ToList();
            }

            return(new CompletionResult(completionData, overloadProvider));
        }
示例#5
0
 public CompletionResult(IList <ICompletionDataEx> completionData, IOverloadProvider overloadProvider)
 {
     CompletionData   = completionData;
     OverloadProvider = overloadProvider;
 }
示例#6
0
 public CompletionResult(IList<ICompletionDataEx> completionData, IOverloadProvider overloadProvider)
 {
     CompletionData = completionData;
     OverloadProvider = overloadProvider;
 }
 public CompletionResult(IList <ISelectedCompletionData> completionData, IOverloadProvider overloadProvider)
 {
     this._completionData   = completionData;
     this._overloadProvider = overloadProvider;
 }