Add settings for single-quotes on completion
This commit is contained in:
parent
0cff752be1
commit
ca1935d6f7
7 changed files with 67 additions and 17 deletions
|
@ -34,6 +34,10 @@
|
||||||
#include "core/os/os.h"
|
#include "core/os/os.h"
|
||||||
#include "core/project_settings.h"
|
#include "core/project_settings.h"
|
||||||
|
|
||||||
|
#ifdef TOOLS_ENABLED
|
||||||
|
#include "editor/editor_settings.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
Input *Input::singleton = NULL;
|
Input *Input::singleton = NULL;
|
||||||
|
|
||||||
Input *Input::get_singleton() {
|
Input *Input::get_singleton() {
|
||||||
|
@ -121,6 +125,8 @@ void Input::_bind_methods() {
|
||||||
void Input::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
|
void Input::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
|
|
||||||
|
const String quote_style = EDITOR_DEF("text_editor/completion/use_single_quotes", 0) ? "'" : "\"";
|
||||||
|
|
||||||
String pf = p_function;
|
String pf = p_function;
|
||||||
if (p_idx == 0 && (pf == "is_action_pressed" || pf == "action_press" || pf == "action_release" || pf == "is_action_just_pressed" || pf == "is_action_just_released" || pf == "get_action_strength")) {
|
if (p_idx == 0 && (pf == "is_action_pressed" || pf == "action_press" || pf == "action_release" || pf == "is_action_just_pressed" || pf == "is_action_just_released" || pf == "get_action_strength")) {
|
||||||
|
|
||||||
|
@ -134,7 +140,7 @@ void Input::get_argument_options(const StringName &p_function, int p_idx, List<S
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
String name = pi.name.substr(pi.name.find("/") + 1, pi.name.length());
|
String name = pi.name.substr(pi.name.find("/") + 1, pi.name.length());
|
||||||
r_options->push_back("\"" + name + "\"");
|
r_options->push_back(quote_style + name + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -464,6 +464,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
|
||||||
_initial_set("text_editor/completion/callhint_tooltip_offset", Vector2());
|
_initial_set("text_editor/completion/callhint_tooltip_offset", Vector2());
|
||||||
_initial_set("text_editor/completion/complete_file_paths", true);
|
_initial_set("text_editor/completion/complete_file_paths", true);
|
||||||
_initial_set("text_editor/completion/add_type_hints", false);
|
_initial_set("text_editor/completion/add_type_hints", false);
|
||||||
|
_initial_set("text_editor/completion/use_single_quotes", false);
|
||||||
|
|
||||||
// Help
|
// Help
|
||||||
_initial_set("text_editor/help/show_help_index", true);
|
_initial_set("text_editor/help/show_help_index", true);
|
||||||
|
|
|
@ -499,8 +499,10 @@ struct GDScriptCompletionIdentifier {
|
||||||
|
|
||||||
static void _get_directory_contents(EditorFileSystemDirectory *p_dir, Set<String> &r_list) {
|
static void _get_directory_contents(EditorFileSystemDirectory *p_dir, Set<String> &r_list) {
|
||||||
|
|
||||||
|
const String quote_style = EDITOR_DEF("text_editor/completion/use_single_quotes", false) ? "'" : "\"";
|
||||||
|
|
||||||
for (int i = 0; i < p_dir->get_file_count(); i++) {
|
for (int i = 0; i < p_dir->get_file_count(); i++) {
|
||||||
r_list.insert("\"" + p_dir->get_file_path(i) + "\"");
|
r_list.insert(quote_style + p_dir->get_file_path(i) + quote_style);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < p_dir->get_subdir_count(); i++) {
|
for (int i = 0; i < p_dir->get_subdir_count(); i++) {
|
||||||
|
@ -2151,6 +2153,8 @@ static void _find_call_arguments(const GDScriptCompletionContext &p_context, con
|
||||||
GDScriptParser::DataType base_type = p_base.type;
|
GDScriptParser::DataType base_type = p_base.type;
|
||||||
bool _static = false;
|
bool _static = false;
|
||||||
|
|
||||||
|
const String quote_style = EDITOR_DEF("text_editor/completion/use_single_quotes", false) ? "'" : "\"";
|
||||||
|
|
||||||
while (base_type.has_type) {
|
while (base_type.has_type) {
|
||||||
switch (base_type.kind) {
|
switch (base_type.kind) {
|
||||||
case GDScriptParser::DataType::CLASS: {
|
case GDScriptParser::DataType::CLASS: {
|
||||||
|
@ -2171,7 +2175,7 @@ static void _find_call_arguments(const GDScriptCompletionContext &p_context, con
|
||||||
|
|
||||||
if ((p_method == "connect" || p_method == "emit_signal") && p_argidx == 0) {
|
if ((p_method == "connect" || p_method == "emit_signal") && p_argidx == 0) {
|
||||||
for (int i = 0; i < base_type.class_type->_signals.size(); i++) {
|
for (int i = 0; i < base_type.class_type->_signals.size(); i++) {
|
||||||
r_result.insert("\"" + base_type.class_type->_signals[i].name.operator String() + "\"");
|
r_result.insert(quote_style + base_type.class_type->_signals[i].name.operator String() + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2184,7 +2188,7 @@ static void _find_call_arguments(const GDScriptCompletionContext &p_context, con
|
||||||
List<MethodInfo> signals;
|
List<MethodInfo> signals;
|
||||||
gds->get_script_signal_list(&signals);
|
gds->get_script_signal_list(&signals);
|
||||||
for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
|
for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
|
||||||
r_result.insert("\"" + E->get().name + "\"");
|
r_result.insert(quote_style + E->get().name + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ref<GDScript> base_script = gds->get_base_script();
|
Ref<GDScript> base_script = gds->get_base_script();
|
||||||
|
@ -2243,7 +2247,7 @@ static void _find_call_arguments(const GDScriptCompletionContext &p_context, con
|
||||||
List<MethodInfo> signals;
|
List<MethodInfo> signals;
|
||||||
ClassDB::get_signal_list(class_name, &signals);
|
ClassDB::get_signal_list(class_name, &signals);
|
||||||
for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
|
for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
|
||||||
r_result.insert("\"" + E->get().name + "\"");
|
r_result.insert(quote_style + E->get().name + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2258,7 +2262,7 @@ static void _find_call_arguments(const GDScriptCompletionContext &p_context, con
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String name = s.get_slice("/", 1);
|
String name = s.get_slice("/", 1);
|
||||||
r_result.insert("\"/root/" + name + "\"");
|
r_result.insert(quote_style + "/root/" + name + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2272,7 +2276,7 @@ static void _find_call_arguments(const GDScriptCompletionContext &p_context, con
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String name = s.get_slice("/", 1);
|
String name = s.get_slice("/", 1);
|
||||||
r_result.insert("\"" + name + "\"");
|
r_result.insert(quote_style + name + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2307,6 +2311,8 @@ static void _find_call_arguments(const GDScriptCompletionContext &p_context, con
|
||||||
|
|
||||||
static void _find_call_arguments(const GDScriptCompletionContext &p_context, const GDScriptParser::Node *p_node, int p_argidx, Set<String> &r_result, bool &r_forced, String &r_arghint) {
|
static void _find_call_arguments(const GDScriptCompletionContext &p_context, const GDScriptParser::Node *p_node, int p_argidx, Set<String> &r_result, bool &r_forced, String &r_arghint) {
|
||||||
|
|
||||||
|
const String quote_style = EDITOR_DEF("text_editor/completion/use_single_quotes", false) ? "'" : "\"";
|
||||||
|
|
||||||
if (!p_node || p_node->type != GDScriptParser::Node::TYPE_OPERATOR) {
|
if (!p_node || p_node->type != GDScriptParser::Node::TYPE_OPERATOR) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2424,7 +2430,7 @@ static void _find_call_arguments(const GDScriptCompletionContext &p_context, con
|
||||||
Set<String> methods;
|
Set<String> methods;
|
||||||
_find_identifiers_in_base(p_context, connect_base, true, methods);
|
_find_identifiers_in_base(p_context, connect_base, true, methods);
|
||||||
for (Set<String>::Element *E = methods.front(); E; E = E->next()) {
|
for (Set<String>::Element *E = methods.front(); E; E = E->next()) {
|
||||||
r_result.insert("\"" + E->get().replace("(", "").replace(")", "") + "\"");
|
r_result.insert(quote_style + E->get().replace("(", "").replace(")", "") + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2433,6 +2439,8 @@ static void _find_call_arguments(const GDScriptCompletionContext &p_context, con
|
||||||
|
|
||||||
Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, bool &r_forced, String &r_call_hint) {
|
Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, bool &r_forced, String &r_call_hint) {
|
||||||
|
|
||||||
|
const String quote_style = EDITOR_DEF("text_editor/completion/use_single_quotes", false) ? "'" : "\"";
|
||||||
|
|
||||||
GDScriptParser parser;
|
GDScriptParser parser;
|
||||||
|
|
||||||
parser.parse(p_code, p_base_path, false, "", true);
|
parser.parse(p_code, p_base_path, false, "", true);
|
||||||
|
@ -2495,7 +2503,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String name = s.get_slice("/", 1);
|
String name = s.get_slice("/", 1);
|
||||||
options.insert("\"/root/" + name + "\"");
|
options.insert(quote_style + "/root/" + name + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
@ -2635,7 +2643,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
|
||||||
switch (base_type.kind) {
|
switch (base_type.kind) {
|
||||||
case GDScriptParser::DataType::CLASS: {
|
case GDScriptParser::DataType::CLASS: {
|
||||||
for (int i = 0; i < base_type.class_type->_signals.size(); i++) {
|
for (int i = 0; i < base_type.class_type->_signals.size(); i++) {
|
||||||
options.insert("\"" + base_type.class_type->_signals[i].name.operator String() + "\"");
|
options.insert(quote_style + base_type.class_type->_signals[i].name.operator String() + quote_style);
|
||||||
}
|
}
|
||||||
base_type = base_type.class_type->base_type;
|
base_type = base_type.class_type->base_type;
|
||||||
} break;
|
} break;
|
||||||
|
@ -2646,7 +2654,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
|
||||||
List<MethodInfo> signals;
|
List<MethodInfo> signals;
|
||||||
scr->get_script_signal_list(&signals);
|
scr->get_script_signal_list(&signals);
|
||||||
for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
|
for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
|
||||||
options.insert("\"" + E->get().name + "\"");
|
options.insert(quote_style + E->get().name + quote_style);
|
||||||
}
|
}
|
||||||
Ref<Script> base_script = scr->get_base_script();
|
Ref<Script> base_script = scr->get_base_script();
|
||||||
if (base_script.is_valid()) {
|
if (base_script.is_valid()) {
|
||||||
|
@ -2673,7 +2681,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
|
||||||
List<MethodInfo> signals;
|
List<MethodInfo> signals;
|
||||||
ClassDB::get_signal_list(class_name, &signals);
|
ClassDB::get_signal_list(class_name, &signals);
|
||||||
for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
|
for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
|
||||||
options.insert("\"" + E->get().name + "\"");
|
options.insert(quote_style + E->get().name + quote_style);
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
default: {
|
default: {
|
||||||
|
@ -2859,7 +2867,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
|
||||||
String GDScriptLanguage::_get_indentation() const {
|
String GDScriptLanguage::_get_indentation() const {
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
if (Engine::get_singleton()->is_editor_hint()) {
|
if (Engine::get_singleton()->is_editor_hint()) {
|
||||||
bool use_space_indentation = EDITOR_DEF("text_editor/indent/type", 0);
|
bool use_space_indentation = EDITOR_DEF("text_editor/indent/type", false);
|
||||||
|
|
||||||
if (use_space_indentation) {
|
if (use_space_indentation) {
|
||||||
int indent_size = EDITOR_DEF("text_editor/indent/size", 4);
|
int indent_size = EDITOR_DEF("text_editor/indent/size", 4);
|
||||||
|
|
|
@ -34,7 +34,10 @@
|
||||||
#include "core/message_queue.h"
|
#include "core/message_queue.h"
|
||||||
#include "scene/scene_string_names.h"
|
#include "scene/scene_string_names.h"
|
||||||
#include "servers/audio/audio_stream.h"
|
#include "servers/audio/audio_stream.h"
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
|
#include "editor/editor_settings.h"
|
||||||
|
|
||||||
void AnimatedValuesBackup::update_skeletons() {
|
void AnimatedValuesBackup::update_skeletons() {
|
||||||
|
|
||||||
for (int i = 0; i < entries.size(); i++) {
|
for (int i = 0; i < entries.size(); i++) {
|
||||||
|
@ -1507,13 +1510,19 @@ NodePath AnimationPlayer::get_root() const {
|
||||||
|
|
||||||
void AnimationPlayer::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
|
void AnimationPlayer::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
|
||||||
|
|
||||||
|
#ifdef TOOLS_ENABLED
|
||||||
|
const String quote_style = EDITOR_DEF("text_editor/completion/use_single_quotes", 0) ? "'" : "\"";
|
||||||
|
#else
|
||||||
|
const String quote_style = "\"";
|
||||||
|
#endif
|
||||||
|
|
||||||
String pf = p_function;
|
String pf = p_function;
|
||||||
if (p_function == "play" || p_function == "play_backwards" || p_function == "remove_animation" || p_function == "has_animation" || p_function == "queue") {
|
if (p_function == "play" || p_function == "play_backwards" || p_function == "remove_animation" || p_function == "has_animation" || p_function == "queue") {
|
||||||
List<StringName> al;
|
List<StringName> al;
|
||||||
get_animation_list(&al);
|
get_animation_list(&al);
|
||||||
for (List<StringName>::Element *E = al.front(); E; E = E->next()) {
|
for (List<StringName>::Element *E = al.front(); E; E = E->next()) {
|
||||||
|
|
||||||
r_options->push_back("\"" + String(E->get()) + "\"");
|
r_options->push_back(quote_style + String(E->get()) + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Node::get_argument_options(p_function, p_idx, r_options);
|
Node::get_argument_options(p_function, p_idx, r_options);
|
||||||
|
|
|
@ -2645,6 +2645,12 @@ bool Control::is_visibility_clip_disabled() const {
|
||||||
|
|
||||||
void Control::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
|
void Control::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
|
||||||
|
|
||||||
|
#ifdef TOOLS_ENABLED
|
||||||
|
const String quote_style = EDITOR_DEF("text_editor/completion/use_single_quotes", 0) ? "'" : "\"";
|
||||||
|
#else
|
||||||
|
const String quote_style = "\"";
|
||||||
|
#endif
|
||||||
|
|
||||||
Node::get_argument_options(p_function, p_idx, r_options);
|
Node::get_argument_options(p_function, p_idx, r_options);
|
||||||
|
|
||||||
if (p_idx == 0) {
|
if (p_idx == 0) {
|
||||||
|
@ -2662,7 +2668,7 @@ void Control::get_argument_options(const StringName &p_function, int p_idx, List
|
||||||
|
|
||||||
sn.sort_custom<StringName::AlphCompare>();
|
sn.sort_custom<StringName::AlphCompare>();
|
||||||
for (List<StringName>::Element *E = sn.front(); E; E = E->next()) {
|
for (List<StringName>::Element *E = sn.front(); E; E = E->next()) {
|
||||||
r_options->push_back("\"" + E->get() + "\"");
|
r_options->push_back(quote_style + E->get() + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,10 @@
|
||||||
#include "scene/scene_string_names.h"
|
#include "scene/scene_string_names.h"
|
||||||
#include "viewport.h"
|
#include "viewport.h"
|
||||||
|
|
||||||
|
#ifdef TOOLS_ENABLED
|
||||||
|
#include "editor/editor_settings.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
VARIANT_ENUM_CAST(Node::PauseMode);
|
VARIANT_ENUM_CAST(Node::PauseMode);
|
||||||
|
|
||||||
void Node::_notification(int p_notification) {
|
void Node::_notification(int p_notification) {
|
||||||
|
@ -2600,10 +2604,16 @@ NodePath Node::get_import_path() const {
|
||||||
|
|
||||||
static void _add_nodes_to_options(const Node *p_base, const Node *p_node, List<String> *r_options) {
|
static void _add_nodes_to_options(const Node *p_base, const Node *p_node, List<String> *r_options) {
|
||||||
|
|
||||||
|
#ifdef TOOLS_ENABLED
|
||||||
|
const String quote_style = EDITOR_DEF("text_editor/completion/use_single_quotes", 0) ? "'" : "\"";
|
||||||
|
#else
|
||||||
|
const String quote_style = "\"";
|
||||||
|
#endif
|
||||||
|
|
||||||
if (p_node != p_base && !p_node->get_owner())
|
if (p_node != p_base && !p_node->get_owner())
|
||||||
return;
|
return;
|
||||||
String n = p_base->get_path_to(p_node);
|
String n = p_base->get_path_to(p_node);
|
||||||
r_options->push_back("\"" + n + "\"");
|
r_options->push_back(quote_style + n + quote_style);
|
||||||
for (int i = 0; i < p_node->get_child_count(); i++) {
|
for (int i = 0; i < p_node->get_child_count(); i++) {
|
||||||
_add_nodes_to_options(p_base, p_node->get_child(i), r_options);
|
_add_nodes_to_options(p_base, p_node->get_child(i), r_options);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,10 @@
|
||||||
|
|
||||||
#include "material.h"
|
#include "material.h"
|
||||||
|
|
||||||
|
#ifdef TOOLS_ENABLED
|
||||||
|
#include "editor/editor_settings.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "scene/scene_string_names.h"
|
#include "scene/scene_string_names.h"
|
||||||
|
|
||||||
void Material::set_next_pass(const Ref<Material> &p_pass) {
|
void Material::set_next_pass(const Ref<Material> &p_pass) {
|
||||||
|
@ -223,6 +227,12 @@ void ShaderMaterial::_bind_methods() {
|
||||||
|
|
||||||
void ShaderMaterial::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
|
void ShaderMaterial::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
|
||||||
|
|
||||||
|
#ifdef TOOLS_ENABLED
|
||||||
|
const String quote_style = EDITOR_DEF("text_editor/completion/use_single_quotes", 0) ? "'" : "\"";
|
||||||
|
#else
|
||||||
|
const String quote_style = "\"";
|
||||||
|
#endif
|
||||||
|
|
||||||
String f = p_function.operator String();
|
String f = p_function.operator String();
|
||||||
if ((f == "get_shader_param" || f == "set_shader_param") && p_idx == 0) {
|
if ((f == "get_shader_param" || f == "set_shader_param") && p_idx == 0) {
|
||||||
|
|
||||||
|
@ -230,7 +240,7 @@ void ShaderMaterial::get_argument_options(const StringName &p_function, int p_id
|
||||||
List<PropertyInfo> pl;
|
List<PropertyInfo> pl;
|
||||||
shader->get_param_list(&pl);
|
shader->get_param_list(&pl);
|
||||||
for (List<PropertyInfo>::Element *E = pl.front(); E; E = E->next()) {
|
for (List<PropertyInfo>::Element *E = pl.front(); E; E = E->next()) {
|
||||||
r_options->push_back("\"" + E->get().name.replace_first("shader_param/", "") + "\"");
|
r_options->push_back(quote_style + E->get().name.replace_first("shader_param/", "") + quote_style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue