Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Small formatting fixes in Find in Files #54305

Merged
merged 1 commit into from
Oct 27, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 31 additions & 32 deletions editor/find_in_files.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@
const char *FindInFiles::SIGNAL_RESULT_FOUND = "result_found";
const char *FindInFiles::SIGNAL_FINISHED = "finished";

// TODO Would be nice in Vector and Vectors
// TODO: Would be nice in Vector and Vectors.
template <typename T>
inline void pop_back(T &container) {
container.resize(container.size() - 1);
}

// TODO Copied from TextEdit private, would be nice to extract it in a single place
// TODO: Copied from TextEdit private, would be nice to extract it in a single place.
static bool is_text_char(char32_t c) {
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_';
}
Expand Down Expand Up @@ -125,7 +125,7 @@ void FindInFiles::start() {
return;
}

// Init search
// Init search.
_current_dir = "";
PackedStringArray init_folder;
init_folder.push_back(_root_dir);
Expand All @@ -145,27 +145,27 @@ void FindInFiles::stop() {
}

void FindInFiles::_process() {
// This part can be moved to a thread if needed
// This part can be moved to a thread if needed.

OS &os = *OS::get_singleton();
uint64_t time_before = os.get_ticks_msec();
while (is_processing()) {
_iterate();
uint64_t elapsed = (os.get_ticks_msec() - time_before);
if (elapsed > 8) { // Process again after waiting 8 ticks
if (elapsed > 8) { // Process again after waiting 8 ticks.
break;
}
}
}

void FindInFiles::_iterate() {
if (_folders_stack.size() != 0) {
// Scan folders first so we can build a list of files and have progress info later
// Scan folders first so we can build a list of files and have progress info later.

PackedStringArray &folders_to_scan = _folders_stack.write[_folders_stack.size() - 1];

if (folders_to_scan.size() != 0) {
// Scan one folder below
// Scan one folder below.

String folder_name = folders_to_scan[folders_to_scan.size() - 1];
pop_back(folders_to_scan);
Expand All @@ -178,19 +178,19 @@ void FindInFiles::_iterate() {
_folders_stack.push_back(sub_dirs);

} else {
// Go back one level
// Go back one level.

pop_back(_folders_stack);
_current_dir = _current_dir.get_base_dir();

if (_folders_stack.size() == 0) {
// All folders scanned
// All folders scanned.
_initial_files_count = _files_to_scan.size();
}
}

} else if (_files_to_scan.size() != 0) {
// Then scan files
// Then scan files.

String fpath = _files_to_scan[_files_to_scan.size() - 1];
pop_back(_files_to_scan);
Expand Down Expand Up @@ -228,12 +228,12 @@ void FindInFiles::_scan_dir(String path, PackedStringArray &out_folders) {
break;
}

// If there is a .gdignore file in the directory, don't bother searching it
// If there is a .gdignore file in the directory, skip searching the directory.
if (file == ".gdignore") {
break;
}

// Ignore special dirs (such as .git and project data directory)
// Ignore special directories (such as those beginning with . and the project data directory).
String project_data_dir_name = ProjectSettings::get_singleton()->get_project_data_dir_name();
if (file.begins_with(".") || file == project_data_dir_name) {
continue;
Expand Down Expand Up @@ -264,7 +264,7 @@ void FindInFiles::_scan_file(String fpath) {
int line_number = 0;

while (!f->eof_reached()) {
// line number starts at 1
// Line number starts at 1.
++line_number;

int begin = 0;
Expand Down Expand Up @@ -331,7 +331,7 @@ FindInFilesDialog::FindInFilesDialog() {
_replace_text_line_edit->hide();
gc->add_child(_replace_text_line_edit);

gc->add_child(memnew(Control)); // Space to maintain the grid aligned.
gc->add_child(memnew(Control)); // Space to maintain the grid alignment.

{
HBoxContainer *hbc = memnew(HBoxContainer);
Expand Down Expand Up @@ -421,7 +421,7 @@ void FindInFilesDialog::set_find_in_files_mode(FindInFilesMode p_mode) {
_replace_text_line_edit->show();
}

// After hiding some child controls, let's recalculate proper Dialog size
// Recalculate the dialog size after hiding child controls.
set_size(Size2(get_size().x, 0));
}

Expand All @@ -448,7 +448,7 @@ String FindInFilesDialog::get_folder() const {
}

Set<String> FindInFilesDialog::get_filter() const {
// could check the _filters_preferences but it might not have been generated yet.
// Could check the _filters_preferences but it might not have been generated yet.
Set<String> filters;
for (int i = 0; i < _filters_container->get_child_count(); ++i) {
CheckBox *cb = (CheckBox *)_filters_container->get_child(i);
Expand Down Expand Up @@ -492,6 +492,7 @@ void FindInFilesDialog::custom_action(const String &p_action) {
CheckBox *cb = (CheckBox *)_filters_container->get_child(i);
_filters_preferences[cb->get_text()] = cb->is_pressed();
}

if (p_action == "find") {
emit_signal(SNAME(SIGNAL_FIND_REQUESTED));
hide();
Expand All @@ -510,7 +511,7 @@ void FindInFilesDialog::_on_search_text_modified(String text) {
}

void FindInFilesDialog::_on_search_text_submitted(String text) {
// This allows to trigger a global search without leaving the keyboard
// This allows to trigger a global search without leaving the keyboard.
if (!_find_button->is_disabled()) {
if (_mode == SEARCH_MODE) {
custom_action("find");
Expand All @@ -525,7 +526,7 @@ void FindInFilesDialog::_on_search_text_submitted(String text) {
}

void FindInFilesDialog::_on_replace_text_submitted(String text) {
// This allows to trigger a global search without leaving the keyboard
// This allows to trigger a global search without leaving the keyboard.
if (!_replace_button->is_disabled()) {
if (_mode == REPLACE_MODE) {
custom_action("replace");
Expand Down Expand Up @@ -641,13 +642,12 @@ void FindInFilesPanel::set_with_replace(bool with_replace) {
_replace_container->set_visible(with_replace);

if (with_replace) {
// Results show checkboxes on their left so they can be opted out
// Results show checkboxes on their left so they can be opted out.
_results_display->set_columns(2);
_results_display->set_column_expand(0, false);
_results_display->set_column_custom_minimum_width(0, 48 * EDSCALE);

} else {
// Results are single-cell items
// Results are single-cell items.
_results_display->set_column_expand(0, true);
_results_display->set_columns(1);
}
Expand Down Expand Up @@ -708,12 +708,12 @@ void FindInFilesPanel::_on_result_found(String fpath, int line_number, int begin
file_item->set_text(0, fpath);
file_item->set_metadata(0, fpath);

// The width of this column is restrained to checkboxes, but that doesn't make sense for the parent items,
// so we override their width so they can expand to full width
// The width of this column is restrained to checkboxes,
// but that doesn't make sense for the parent items,
// so we override their width so they can expand to full width.
file_item->set_expand_right(0, true);

_file_items[fpath] = file_item;

} else {
file_item = E->value();
}
Expand All @@ -725,7 +725,7 @@ void FindInFilesPanel::_on_result_found(String fpath, int line_number, int begin
// Do this first because it resets properties of the cell...
item->set_cell_mode(text_index, TreeItem::CELL_MODE_CUSTOM);

// Trim result item line
// Trim result item line.
int old_text_size = text.size();
text = text.strip_edges(true, false);
int chars_removed = old_text_size - text.size();
Expand Down Expand Up @@ -780,9 +780,8 @@ void FindInFilesPanel::_on_item_edited() {

if (item->is_checked(0)) {
item->set_custom_color(1, _results_display->get_theme_color(SNAME("font_color")));

} else {
// Grey out
// Grey out.
Color color = _results_display->get_theme_color(SNAME("font_color"));
color.a /= 2.0;
item->set_custom_color(1, color);
Expand Down Expand Up @@ -857,19 +856,19 @@ void FindInFilesPanel::_on_replace_all_clicked() {
}

if (locations.size() != 0) {
// Results are sorted by file, so we can batch replaces
// Results are sorted by file, so we can batch replaces.
apply_replaces_in_file(fpath, locations, replace_text);
modified_files.push_back(fpath);
}
}

// Hide replace bar so we can't trigger the action twice without doing a new search
// Hide replace bar so we can't trigger the action twice without doing a new search.
_replace_container->hide();

emit_signal(SNAME(SIGNAL_FILES_MODIFIED), modified_files);
}

// Same as get_line, but preserves line ending characters
// Same as get_line, but preserves line ending characters.
class ConservativeGetLine {
public:
String get_line(FileAccess *f) {
Expand Down Expand Up @@ -941,7 +940,7 @@ void FindInFilesPanel::apply_replaces_in_file(String fpath, const Vector<Result>
}

line = line.left(repl_begin) + new_text + line.substr(repl_end);
// keep an offset in case there are successive replaces in the same line
// Keep an offset in case there are successive replaces in the same line.
offset += new_text.length() - (repl_end - repl_begin);
}

Expand All @@ -951,7 +950,7 @@ void FindInFilesPanel::apply_replaces_in_file(String fpath, const Vector<Result>
buffer += conservative.get_line(f);
}

// Now the modified contents are in the buffer, rewrite the file with our changes
// Now the modified contents are in the buffer, rewrite the file with our changes.

Error err = f->reopen(fpath, FileAccess::WRITE);
ERR_FAIL_COND_MSG(err != OK, "Cannot create file in path '" + fpath + "'.");
Expand Down