### Godot version

c0d8d91

### System information

Windows 11

### Issue description

There's weird bug going on with the latest master branch. The auto completion in script editor is sorted in a wacky ways, putting sort of constants ahead of anything because it's ahead alphabetically
![image](https://github.com/godotengine/godot/assets/13846022/0f3e389e-f5d1-46b2-9f78-c215f3ad5abd)

Now compare it to my build about two weeks ago
![image](https://github.com/godotengine/godot/assets/13846022/37013cad-2e8f-4aa3-9270-0e8dfd9502ea)

Both are using the same content of 'editor_data' settings folder. And loading up the same project.

### Steps to reproduce

- Open a new blank project
- Make a new script
- Triggers any auto completion in Script Editor

### Minimal reproduction project

N/A
String target_lower = option.display.to_lower();
		const char32_t *string_to_complete_char_lower = &string_to_complete_lower[0];
		const char32_t *target_char_lower = &target_lower[0];
		Vector<Vector<Pair<int, int>>> all_possible_subsequence_matches;
		for (int i = 0; *target_char_lower; i++, target_char_lower++) {
			if (*target_char_lower == *string_to_complete_char_lower) {
				all_possible_subsequence_matches.push_back({ { i, 1 } });
			}
		}
		string_to_complete_char_lower++;
		for (int i = 1; *string_to_complete_char_lower && (all_possible_subsequence_matches.size() > 0); i++, string_to_complete_char_lower++) {
			
			Vector<int> all_ocurence;
			for (int j = i; j < target_lower.length(); j++) {
				if (target_lower[j] == *string_to_complete_char_lower) {
					all_ocurence.push_back(j);
				}
			}
			Vector<Vector<Pair<int, int>>> next_subsequence_matches;
			for (Vector<Pair<int, int>> &subsequence_matches : all_possible_subsequence_matches) {
				Pair<int, int> match_last_segment = subsequence_matches[subsequence_matches.size() - 1];
				int next_index = match_last_segment.first + match_last_segment.second;
				
				
				if (target_lower[next_index] == *string_to_complete_char_lower) {
					Vector<Pair<int, int>> new_matches = subsequence_matches;
					new_matches.write[new_matches.size() - 1].second++;
					next_subsequence_matches.push_back(new_matches);
				}
				for (int index : all_ocurence) {