Adds fuzzy search for help search dialog
This commit is contained in:
parent
e9f49a6d5a
commit
481dbceed0
|
@ -338,10 +338,15 @@ bool EditorHelpSearch::Runner::_phase_match_classes() {
|
||||||
if (search_flags & SEARCH_METHODS)
|
if (search_flags & SEARCH_METHODS)
|
||||||
for (int i = 0; i < class_doc.methods.size(); i++) {
|
for (int i = 0; i < class_doc.methods.size(); i++) {
|
||||||
String method_name = (search_flags & SEARCH_CASE_SENSITIVE) ? class_doc.methods[i].name : class_doc.methods[i].name.to_lower();
|
String method_name = (search_flags & SEARCH_CASE_SENSITIVE) ? class_doc.methods[i].name : class_doc.methods[i].name.to_lower();
|
||||||
if (method_name.find(term) > -1 ||
|
String aux_term = (search_flags & SEARCH_CASE_SENSITIVE) ? term : term.to_lower();
|
||||||
(term.begins_with(".") && method_name.begins_with(term.right(1))) ||
|
|
||||||
(term.ends_with("(") && method_name.ends_with(term.left(term.length() - 1).strip_edges())) ||
|
if (aux_term.begins_with("."))
|
||||||
(term.begins_with(".") && term.ends_with("(") && method_name == term.substr(1, term.length() - 2).strip_edges()))
|
aux_term = aux_term.right(1);
|
||||||
|
|
||||||
|
if (aux_term.ends_with("("))
|
||||||
|
aux_term = aux_term.left(aux_term.length() - 1).strip_edges();
|
||||||
|
|
||||||
|
if (aux_term.is_subsequence_of(method_name))
|
||||||
match.methods.push_back(const_cast<DocData::MethodDoc *>(&class_doc.methods[i]));
|
match.methods.push_back(const_cast<DocData::MethodDoc *>(&class_doc.methods[i]));
|
||||||
}
|
}
|
||||||
if (search_flags & SEARCH_SIGNALS)
|
if (search_flags & SEARCH_SIGNALS)
|
||||||
|
@ -431,9 +436,9 @@ bool EditorHelpSearch::Runner::_phase_select_match() {
|
||||||
bool EditorHelpSearch::Runner::_match_string(const String &p_term, const String &p_string) const {
|
bool EditorHelpSearch::Runner::_match_string(const String &p_term, const String &p_string) const {
|
||||||
|
|
||||||
if (search_flags & SEARCH_CASE_SENSITIVE)
|
if (search_flags & SEARCH_CASE_SENSITIVE)
|
||||||
return p_string.find(p_term) > -1;
|
return p_term.is_subsequence_of(p_string);
|
||||||
else
|
else
|
||||||
return p_string.findn(p_term) > -1;
|
return p_term.is_subsequence_ofi(p_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorHelpSearch::Runner::_match_item(TreeItem *p_item, const String &p_text) {
|
void EditorHelpSearch::Runner::_match_item(TreeItem *p_item, const String &p_text) {
|
||||||
|
|
Loading…
Reference in New Issue