private static int IndexOfDelimiter(string self, int startIndex) { for (int index = startIndex; index < self.Length; ++index) { if (SearchPropositionOptions.IsDelimiter(self[index])) { return(index); } } return(-1); }
public static string ReplaceText(string searchText, string replacement, int cursorPos, out int insertTokenPos) { var replaceFrom = cursorPos - 1; while (replaceFrom >= 0 && !SearchPropositionOptions.IsDelimiter(searchText[replaceFrom])) { replaceFrom--; } if (replaceFrom == -1) { replaceFrom = 0; } else { replaceFrom++; } var replaceTo = IndexOfDelimiter(searchText, cursorPos); if (replaceTo == -1) { replaceTo = searchText.Length; } if (searchText.Substring(replaceFrom, replaceTo - replaceFrom).StartsWith(replacement, StringComparison.OrdinalIgnoreCase)) { insertTokenPos = cursorPos; return(searchText); } var sb = new StringBuilder(searchText); sb.Remove(replaceFrom, replaceTo - replaceFrom); sb.Insert(replaceFrom, replacement); var insertion = sb.ToString(); insertTokenPos = insertion.LastIndexOf('\t'); if (insertTokenPos != -1) { insertion = insertion.Remove(insertTokenPos, 1); } return(insertion); }
public static bool Show(SearchContext context, Rect parentRect, SearchField searchField) { var te = searchField.GetTextEditor(); if (te.controlID != GUIUtility.keyboardControl) { return(false); } parent = parentRect; options = new SearchPropositionOptions(context, te.cursorIndex, te.text); propositions = SearchProposition.Fetch(context, options); enabled = propositions.Count > 0; if (!enabled) { return(false); } SearchAnalytics.SendEvent(null, SearchAnalytics.GenericEventType.QuickSearchAutoCompleteTab, string.Join(",", options.tokens)); UpdateCompleteList(te, options); return(true); }
private static IEnumerable <SearchProposition> FetchPropositions(SearchContext context, SearchPropositionOptions options) { if (context.options.HasFlag(SearchFlags.NoIndexing)) { return(null); } return(assetIndexes.SelectMany(db => db.index.GetKeywords().Select(kw => new SearchProposition(kw)))); }
static IEnumerable <SearchProposition> FetchPropositions(SearchContext context, SearchPropositionOptions options) { if (!options.flags.HasAny(SearchPropositionFlags.QueryBuilder)) { yield break; } yield return(new SearchProposition(category: null, "Menu Path", "id:create/", "Filter by menu path.", priority: 9999)); }
static IEnumerable <SearchProposition> FetchPropositions(SearchContext context, SearchPropositionOptions options) { if (!options.flags.HasAny(SearchPropositionFlags.QueryBuilder)) { yield break; } foreach (var proposition in queryEngine.GetPropositions()) { yield return(proposition); } }
internal IEnumerable <SearchProposition> FindPropositions(SearchContext context, SearchPropositionOptions options) { if (options.token.StartsWith("p(")) { return(FetchPropertyPropositions(options.token.Substring(2))); } if (options.token.StartsWith("t:", StringComparison.OrdinalIgnoreCase)) { return(FetchTypePropositions()); } return(fixedPropositions); }
private IEnumerable <SearchProposition> FetchPropositions(SearchContext context, SearchPropositionOptions options) { var category = options.HasAny(SearchPropositionFlags.QueryBuilder) ? "Expressions" : null; foreach (var e in EvaluatorManager.evaluators) { var help = e.description ?? "Expression evaluator"; yield return(new SearchProposition(category: category, $"{e.name}{{}}", $"{e.name.ToLowerInvariant()}{{\t}}", help, 1)); } if (options.tokens.Length > 0 && options.tokens[0].Length > 0) { var token = options.tokens[0][0]; if (token == '#') { foreach (var c in PropertySelectors.Enumerate(context.searchView.results.Take(10))) { yield return(new SearchProposition(category: category, label: $"{token}{c.content.text ?? c.path}", $"{c.selector}\t", $"Property ({c.selector})")); } } if (token == '@') { foreach (var s in SelectorManager.selectors.Where(s => s.printable)) { yield return(new SearchProposition(category: category, label: $"{token}{s.label}", help: s.description ?? "Selector", replacement: $"@{s.label}\t")); } } } }
static IEnumerable <SearchProposition> FetchPropositions(SearchContext context, SearchPropositionOptions options) { if (!options.flags.HasAny(SearchPropositionFlags.QueryBuilder)) { yield break; } foreach (var f in SettingsProviderCache.queryEngine.GetPropositions()) { yield return(f); } }
public static string ReplaceText(string searchText, string replacement, int cursorPos, out int insertTokenPos) { var replaceFrom = cursorPos - 1; while (replaceFrom >= 0 && !SearchPropositionOptions.IsDelimiter(searchText[replaceFrom])) { replaceFrom--; } if (replaceFrom == -1) { replaceFrom = 0; } else { replaceFrom++; } var activeProviders = SearchService.GetActiveProviders(); foreach (var provider in activeProviders) { if (replaceFrom + provider.filterId.Length > searchText.Length || provider.filterId.Length == 1) { continue; } var stringViewTest = new StringView(searchText, replaceFrom, replaceFrom + provider.filterId.Length); if (stringViewTest == provider.filterId) { replaceFrom += provider.filterId.Length; break; } } var replaceTo = IndexOfDelimiter(searchText, cursorPos); if (replaceTo == -1) { replaceTo = searchText.Length; } if (searchText.Substring(replaceFrom, replaceTo - replaceFrom).StartsWith(replacement, StringComparison.OrdinalIgnoreCase)) { insertTokenPos = cursorPos; return(searchText); } var sb = new StringBuilder(searchText); sb.Remove(replaceFrom, replaceTo - replaceFrom); sb.Insert(replaceFrom, replacement); var insertion = sb.ToString(); insertTokenPos = insertion.LastIndexOf('\t'); if (insertTokenPos != -1) { insertion = insertion.Remove(insertTokenPos, 1); } return(insertion); }
static IEnumerable <SearchProposition> FetchPropositions(SearchContext context, SearchPropositionOptions options) { if (!options.flags.HasAny(SearchPropositionFlags.QueryBuilder)) { yield break; } foreach (var f in QueryListBlockAttribute.GetPropositions(typeof(QueryScopeFilterBlock))) { yield return(f); } }