コード例 #1
0
 public SignatureHelpItems(SIGHLP.SignatureHelpItems signatureHelpItems)
 {
     if (signatureHelpItems == null)
     {
         throw new ArgumentNullException(nameof(signatureHelpItems));
     }
     ApplicableSpan    = signatureHelpItems.ApplicableSpan;
     ArgumentCount     = signatureHelpItems.ArgumentCount;
     ArgumentIndex     = signatureHelpItems.ArgumentIndex;
     ArgumentName      = signatureHelpItems.ArgumentName;
     SelectedItemIndex = signatureHelpItems.SelectedItemIndex;
     Items             = ToSignatureHelpItem(signatureHelpItems.Items);
 }
コード例 #2
0
            private bool IsBetter(SignatureHelpItems bestItems, TextSpan? currentTextSpan)
            {
                // If we have no best text span, then this span is definitely better.
                if (bestItems == null)
                {
                    return true;
                }

                // Otherwise we want the one that is conceptually the innermost signature.  So it's
                // only better if the distance from it to the caret position is less than the best
                // one so far.
                return currentTextSpan.Value.Start > bestItems.ApplicableSpan.Start;
            }
コード例 #3
0
            private static SignatureHelpItem GetSelectedItem(Model currentModel, SignatureHelpItems items, ISignatureHelpProvider provider)
            {
                // Try to find the most appropriate item in the list to select by default.

                // If the provider specified one a selected item, then always stick with that one. 
                if (items.SelectedItemIndex.HasValue)
                {
                    return items.Items[items.SelectedItemIndex.Value];
                }

                // If the provider did not pick a default, and it's the same provider as the previous
                // model we have, then try to return the same item that we had before. 
                if (currentModel != null && currentModel.Provider == provider)
                {
                    return items.Items.FirstOrDefault(i => DisplayPartsMatch(i, currentModel.SelectedItem)) ?? items.Items.First();
                }

                // Otherwise, just pick the first item we have.
                return items.Items.First();
            }