-Added proper code completion for singletons
This commit is contained in:
parent
e0d21d2158
commit
110de2ccac
@ -1147,8 +1147,54 @@ static bool _guess_identifier_type(GDCompletionContext& context,int p_line,const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//autoloads as singletons
|
||||||
|
List<PropertyInfo> props;
|
||||||
|
Globals::get_singleton()->get_property_list(&props);
|
||||||
|
|
||||||
|
for(List<PropertyInfo>::Element *E=props.front();E;E=E->next()) {
|
||||||
|
|
||||||
|
String s = E->get().name;
|
||||||
|
if (!s.begins_with("autoload/"))
|
||||||
|
continue;
|
||||||
|
String name = s.get_slice("/",1);
|
||||||
|
if (name==String(p_identifier)) {
|
||||||
|
|
||||||
|
String path = Globals::get_singleton()->get(s);
|
||||||
|
if (path.begins_with("*")) {
|
||||||
|
String script =path.substr(1,path.length());
|
||||||
|
|
||||||
|
if (!script.ends_with(".gd")) {
|
||||||
|
//not a script, try find the script anyway,
|
||||||
|
//may have some success
|
||||||
|
script=script.basename()+".gd";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FileAccess::exists(script)) {
|
||||||
|
|
||||||
|
//print_line("is a script");
|
||||||
|
|
||||||
|
|
||||||
|
Ref<Script> scr;
|
||||||
|
if (ScriptCodeCompletionCache::get_sigleton())
|
||||||
|
scr = ScriptCodeCompletionCache::get_sigleton()->get_cached_resource(script);
|
||||||
|
else
|
||||||
|
scr = ResourceLoader::load(script);
|
||||||
|
|
||||||
|
|
||||||
|
r_type.obj_type="Node";
|
||||||
|
r_type.type=Variant::OBJECT;
|
||||||
|
r_type.script=scr;
|
||||||
|
r_type.value=Variant();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//global
|
||||||
for(Map<StringName,int>::Element *E=GDScriptLanguage::get_singleton()->get_global_map().front();E;E=E->next()) {
|
for(Map<StringName,int>::Element *E=GDScriptLanguage::get_singleton()->get_global_map().front();E;E=E->next()) {
|
||||||
if (E->key()==p_identifier) {
|
if (E->key()==p_identifier) {
|
||||||
|
|
||||||
@ -1336,6 +1382,24 @@ static void _find_identifiers(GDCompletionContext& context,int p_line,bool p_onl
|
|||||||
result.insert(_type_names[i]);
|
result.insert(_type_names[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//autoload singletons
|
||||||
|
List<PropertyInfo> props;
|
||||||
|
Globals::get_singleton()->get_property_list(&props);
|
||||||
|
|
||||||
|
for(List<PropertyInfo>::Element *E=props.front();E;E=E->next()) {
|
||||||
|
|
||||||
|
String s = E->get().name;
|
||||||
|
if (!s.begins_with("autoload/"))
|
||||||
|
continue;
|
||||||
|
String name = s.get_slice("/",1);
|
||||||
|
String path = Globals::get_singleton()->get(s);
|
||||||
|
if (path.begins_with("*")) {
|
||||||
|
result.insert(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for(const Map<StringName,int>::Element *E=GDScriptLanguage::get_singleton()->get_global_map().front();E;E=E->next()) {
|
for(const Map<StringName,int>::Element *E=GDScriptLanguage::get_singleton()->get_global_map().front();E;E=E->next()) {
|
||||||
result.insert(E->key().operator String());
|
result.insert(E->key().operator String());
|
||||||
}
|
}
|
||||||
|
@ -1786,7 +1786,7 @@ ProjectSettings::ProjectSettings(EditorData *p_data) {
|
|||||||
autoload_list->set_column_title(1,"Path");
|
autoload_list->set_column_title(1,"Path");
|
||||||
autoload_list->set_column_expand(1,true);
|
autoload_list->set_column_expand(1,true);
|
||||||
autoload_list->set_column_min_width(1,100);
|
autoload_list->set_column_min_width(1,100);
|
||||||
autoload_list->set_column_title(2,"GlobalVar");
|
autoload_list->set_column_title(2,"Singleton");
|
||||||
autoload_list->set_column_expand(2,false);
|
autoload_list->set_column_expand(2,false);
|
||||||
autoload_list->set_column_min_width(2,80);
|
autoload_list->set_column_min_width(2,80);
|
||||||
autoload_list->set_column_expand(3,false);
|
autoload_list->set_column_expand(3,false);
|
||||||
|
Loading…
Reference in New Issue
Block a user