Skip to content

Commit 7bff27a

Browse files
committed
Add fuzzy search to method filtering
1 parent 6c9765d commit 7bff27a

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

editor/plugins/script_editor_plugin.cpp

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#include "core/io/resource_loader.h"
3838
#include "core/os/keyboard.h"
3939
#include "core/os/os.h"
40+
#include "core/string/fuzzy_search.h"
4041
#include "core/version.h"
4142
#include "editor/code_editor.h"
4243
#include "editor/debugger/editor_debugger_node.h"
@@ -2013,13 +2014,30 @@ void ScriptEditor::_update_members_overview() {
20132014
functions.sort();
20142015
}
20152016

2016-
for (int i = 0; i < functions.size(); i++) {
2017-
String filter = filter_methods->get_text();
2018-
String name = functions[i].get_slicec(':', 0);
2019-
if (filter.is_empty() || filter.is_subsequence_ofn(name)) {
2017+
String filter = filter_methods->get_text();
2018+
if (filter.is_empty()) {
2019+
for (int i = 0; i < functions.size(); i++) {
2020+
String name = functions[i].get_slicec(':', 0);
20202021
members_overview->add_item(name);
20212022
members_overview->set_item_metadata(-1, functions[i].get_slicec(':', 1).to_int() - 1);
20222023
}
2024+
} else {
2025+
PackedStringArray search_names;
2026+
for (int i = 0; i < functions.size(); i++) {
2027+
search_names.append(functions[i].get_slicec(':', 0));
2028+
}
2029+
2030+
Vector<FuzzySearchResult> results;
2031+
FuzzySearch fuzzy;
2032+
fuzzy.set_query(filter, false);
2033+
fuzzy.search_all(search_names, results);
2034+
2035+
for (const FuzzySearchResult &res : results) {
2036+
String name = functions[res.original_index].get_slicec(':', 0);
2037+
int line = functions[res.original_index].get_slicec(':', 1).to_int() - 1;
2038+
members_overview->add_item(name);
2039+
members_overview->set_item_metadata(-1, line);
2040+
}
20232041
}
20242042

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

0 commit comments

Comments
 (0)