public static bool CheckAndAddSuggestion(IntellisenseSuggestion suggestion, IntellisenseSuggestionList suggestionList) { if (suggestionList.ContainsSuggestion(suggestion.DisplayText.Text)) { return(false); } suggestionList.Add(suggestion); return(true); }
internal static bool DefaultIsValidSuggestionFunc(IntellisenseData.IntellisenseData intellisenseData, IntellisenseSuggestion suggestion) { //return intellisenseData.ExpectedType.Accepts(suggestion.Type); return(true); }
protected virtual bool CheckAndAddSuggestion(IntellisenseSuggestionList suggestions, IntellisenseSuggestion candidate) { return(IntellisenseHelper.CheckAndAddSuggestion(candidate, suggestions)); }
public bool AddSuggestion(IntellisenseData.IntellisenseData intellisenseData, string suggestion, SuggestionKind suggestionKind, SuggestionIconKind iconKind, DType type, bool requiresSuggestionEscaping, uint sortPriority = 0) { Contracts.AssertValue(intellisenseData); Contracts.AssertValue(suggestion); if (!intellisenseData.DetermineSuggestibility(suggestion, type)) { return(false); } IntellisenseSuggestionList suggestions = intellisenseData.Suggestions; IntellisenseSuggestionList substringSuggestions = intellisenseData.SubstringSuggestions; int matchingLength = intellisenseData.MatchingLength; string matchingStr = intellisenseData.MatchingStr; string boundTo = intellisenseData.BoundTo; var valueToSuggest = requiresSuggestionEscaping ? TexlLexer.EscapeName(suggestion) : suggestion; int highlightStart = suggestion.IndexOf(matchingStr, StringComparison.OrdinalIgnoreCase); // If the suggestion has special characters we need to find the highlightStart index by escaping the matching string as well. // Because, the suggestion could be something like 'Ident with Space' and the user might have typed Ident. In this case, // we want to highlight only Ident while displaying 'Ident with Space'. if (requiresSuggestionEscaping && !string.IsNullOrEmpty(matchingStr) && valueToSuggest != suggestion && highlightStart == 0) { highlightStart++; } else { matchingLength--; } int highlightEnd = highlightStart + matchingStr.Length; if (IntellisenseHelper.IsMatch(suggestion, matchingStr)) { // In special circumstance where the user escapes an identifier where they don't have to, the matching length will // include the starting delimiter that user provided, where as the suggestion would not include any delimiters. // Hence we have to count for that fact. if (matchingLength > 0 & matchingLength > matchingStr.Length) { highlightEnd = matchingLength > valueToSuggest.Length ? valueToSuggest.Length : matchingLength; } UIString UIsuggestion = ConstructUIString(suggestionKind, type, suggestions, valueToSuggest, highlightStart, highlightEnd); IntellisenseSuggestion candidate = new IntellisenseSuggestion(UIsuggestion, suggestionKind, iconKind, type, boundTo, -1, string.Empty, null, sortPriority); return(CheckAndAddSuggestion(suggestions, candidate)); } if (highlightStart > -1) { UIString UIsuggestion = ConstructUIString(suggestionKind, type, substringSuggestions, valueToSuggest, highlightStart, highlightEnd); IntellisenseSuggestion candidate = new IntellisenseSuggestion(UIsuggestion, suggestionKind, iconKind, type, boundTo, -1, string.Empty, null, sortPriority); return(CheckAndAddSuggestion(substringSuggestions, candidate)); } return(false); }
/// <summary> /// This is a Private method used only by the SuggestFunctions() method to add overload suggestions to the existing suggestions. /// </summary> public static void AddFunctionOverloads(string qualifiedName, IntellisenseSuggestionList suggestions, IntellisenseSuggestion funcSuggestion) { Contracts.AssertNonEmpty(qualifiedName); Contracts.AssertValue(suggestions); Contracts.AssertValue(funcSuggestion); int overloadMatch = suggestions.FindIndex(x => (x.Kind == SuggestionKind.Function && x.FunctionName == qualifiedName)); if (overloadMatch > -1) { suggestions[overloadMatch].AddOverloads(funcSuggestion.Overloads); } else { CheckAndAddSuggestion(funcSuggestion, suggestions); } }
protected override bool CheckAndAddSuggestion(IntellisenseSuggestionList suggestions, IntellisenseSuggestion candidate) { return(!suggestions.ContainsSuggestion(candidate.DisplayText.Text)); }