Skip to content

Commit f1f395c

Browse files
committed
Merge pull request godotengine#105240 from Arnklit/script-method-fuzzy-filtering
Add fuzzy search to method filtering
2 parents 5c5708e + 7bff27a commit f1f395c

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

editor/plugins/script_editor_plugin.cpp

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2055,13 +2055,30 @@ void ScriptEditor::_update_members_overview() {
20552055
functions.sort();
20562056
}
20572057

2058-
for (int i = 0; i < functions.size(); i++) {
2059-
String filter = filter_methods->get_text();
2060-
String name = functions[i].get_slicec(':', 0);
2061-
if (filter.is_empty() || filter.is_subsequence_ofn(name)) {
2058+
String filter = filter_methods->get_text();
2059+
if (filter.is_empty()) {
2060+
for (int i = 0; i < functions.size(); i++) {
2061+
String name = functions[i].get_slicec(':', 0);
20622062
members_overview->add_item(name);
20632063
members_overview->set_item_metadata(-1, functions[i].get_slicec(':', 1).to_int() - 1);
20642064
}
2065+
} else {
2066+
PackedStringArray search_names;
2067+
for (int i = 0; i < functions.size(); i++) {
2068+
search_names.append(functions[i].get_slicec(':', 0));
2069+
}
2070+
2071+
Vector<FuzzySearchResult> results;
2072+
FuzzySearch fuzzy;
2073+
fuzzy.set_query(filter, false);
2074+
fuzzy.search_all(search_names, results);
2075+
2076+
for (const FuzzySearchResult &res : results) {
2077+
String name = functions[res.original_index].get_slicec(':', 0);
2078+
int line = functions[res.original_index].get_slicec(':', 1).to_int() - 1;
2079+
members_overview->add_item(name);
2080+
members_overview->set_item_metadata(-1, line);
2081+
}
20652082
}
20662083

20672084
String path = se->get_edited_resource()->get_path();

0 commit comments

Comments
 (0)