@@ -1108,99 +1108,112 @@ void ScriptTextEditor::_show_symbol_tooltip(const String &p_symbol, int p_row, i
1108
1108
}
1109
1109
1110
1110
ScriptLanguage::LookupResult result;
1111
+ String doc_symbol;
1111
1112
const String code_text = code_editor->get_text_editor ()->get_text_with_cursor_char (p_row, p_column);
1112
1113
const Error lc_error = script->get_language ()->lookup_code (code_text, p_symbol, script->get_path (), base, result);
1113
- if (lc_error != OK) {
1114
- return ;
1115
- }
1116
-
1117
- String doc_symbol;
1118
- switch (result.type ) {
1119
- case ScriptLanguage::LOOKUP_RESULT_CLASS: {
1120
- doc_symbol = " class|" + result.class_name + " |" ;
1121
- } break ;
1122
- case ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT: {
1123
- StringName cname = result.class_name ;
1124
- while (ClassDB::class_exists (cname)) {
1125
- if (ClassDB::has_integer_constant (cname, result.class_member , true )) {
1126
- result.class_name = cname;
1127
- break ;
1114
+ if (lc_error == OK) {
1115
+ switch (result.type ) {
1116
+ case ScriptLanguage::LOOKUP_RESULT_CLASS: {
1117
+ doc_symbol = " class|" + result.class_name + " |" ;
1118
+ } break ;
1119
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT: {
1120
+ StringName cname = result.class_name ;
1121
+ while (ClassDB::class_exists (cname)) {
1122
+ if (ClassDB::has_integer_constant (cname, result.class_member , true )) {
1123
+ result.class_name = cname;
1124
+ break ;
1125
+ }
1126
+ cname = ClassDB::get_parent_class (cname);
1128
1127
}
1129
- cname = ClassDB::get_parent_class (cname) ;
1130
- }
1131
- doc_symbol = " constant| " + result. class_name + " | " + result. class_member ;
1132
- } break ;
1133
- case ScriptLanguage::LOOKUP_RESULT_CLASS_PROPERTY: {
1134
- StringName cname = result.class_name ;
1135
- while ( ClassDB::class_exists (cname)) {
1136
- if ( ClassDB::has_property (cname, result. class_member , true )) {
1137
- result. class_name = cname;
1138
- break ;
1128
+ doc_symbol = " constant| " + result. class_name + " | " + result. class_member ;
1129
+ } break ;
1130
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_PROPERTY: {
1131
+ StringName cname = result. class_name ;
1132
+ while ( ClassDB::class_exists (cname)) {
1133
+ if ( ClassDB::has_property ( cname, result.class_member , true )) {
1134
+ result. class_name = cname;
1135
+ break ;
1136
+ }
1137
+ cname = ClassDB::get_parent_class (cname) ;
1139
1138
}
1140
- cname = ClassDB::get_parent_class (cname) ;
1141
- }
1142
- doc_symbol = " property| " + result. class_name + " | " + result. class_member ;
1143
- } break ;
1144
- case ScriptLanguage::LOOKUP_RESULT_CLASS_METHOD: {
1145
- StringName cname = result.class_name ;
1146
- while ( ClassDB::class_exists (cname)) {
1147
- if ( ClassDB::has_method (cname, result. class_member , true )) {
1148
- result. class_name = cname;
1149
- break ;
1139
+ doc_symbol = " property| " + result. class_name + " | " + result. class_member ;
1140
+ } break ;
1141
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_METHOD: {
1142
+ StringName cname = result. class_name ;
1143
+ while ( ClassDB::class_exists (cname)) {
1144
+ if ( ClassDB::has_method ( cname, result.class_member , true )) {
1145
+ result. class_name = cname;
1146
+ break ;
1147
+ }
1148
+ cname = ClassDB::get_parent_class (cname) ;
1150
1149
}
1151
- cname = ClassDB::get_parent_class (cname) ;
1152
- }
1153
- doc_symbol = " method| " + result. class_name + " | " + result. class_member ;
1154
- } break ;
1155
- case ScriptLanguage::LOOKUP_RESULT_CLASS_SIGNAL: {
1156
- StringName cname = result.class_name ;
1157
- while ( ClassDB::class_exists (cname)) {
1158
- if ( ClassDB::has_signal (cname, result. class_member , true )) {
1159
- result. class_name = cname;
1160
- break ;
1150
+ doc_symbol = " method| " + result. class_name + " | " + result. class_member ;
1151
+ } break ;
1152
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_SIGNAL: {
1153
+ StringName cname = result. class_name ;
1154
+ while ( ClassDB::class_exists (cname)) {
1155
+ if ( ClassDB::has_signal ( cname, result.class_member , true )) {
1156
+ result. class_name = cname;
1157
+ break ;
1158
+ }
1159
+ cname = ClassDB::get_parent_class (cname) ;
1161
1160
}
1162
- cname = ClassDB::get_parent_class (cname) ;
1163
- }
1164
- doc_symbol = " signal| " + result. class_name + " | " + result. class_member ;
1165
- } break ;
1166
- case ScriptLanguage::LOOKUP_RESULT_CLASS_ENUM: {
1167
- StringName cname = result.class_name ;
1168
- while ( ClassDB::class_exists (cname)) {
1169
- if ( ClassDB::has_enum (cname, result. class_member , true )) {
1170
- result. class_name = cname;
1171
- break ;
1161
+ doc_symbol = " signal| " + result. class_name + " | " + result. class_member ;
1162
+ } break ;
1163
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_ENUM: {
1164
+ StringName cname = result. class_name ;
1165
+ while ( ClassDB::class_exists (cname)) {
1166
+ if ( ClassDB::has_enum ( cname, result.class_member , true )) {
1167
+ result. class_name = cname;
1168
+ break ;
1169
+ }
1170
+ cname = ClassDB::get_parent_class (cname) ;
1172
1171
}
1173
- cname = ClassDB::get_parent_class (cname);
1174
- }
1175
- doc_symbol = " enum|" + result.class_name + " |" + result.class_member ;
1176
- } break ;
1177
- case ScriptLanguage::LOOKUP_RESULT_CLASS_ANNOTATION: {
1178
- doc_symbol = " annotation|" + result.class_name + " |" + result.class_member ;
1179
- } break ;
1180
- case ScriptLanguage::LOOKUP_RESULT_LOCAL_CONSTANT:
1181
- case ScriptLanguage::LOOKUP_RESULT_LOCAL_VARIABLE: {
1182
- const String item_type = (result.type == ScriptLanguage::LOOKUP_RESULT_LOCAL_CONSTANT) ? " local_constant" : " local_variable" ;
1183
- Dictionary item_data;
1184
- item_data[" description" ] = result.description ;
1185
- item_data[" is_deprecated" ] = result.is_deprecated ;
1186
- item_data[" deprecated_message" ] = result.deprecated_message ;
1187
- item_data[" is_experimental" ] = result.is_experimental ;
1188
- item_data[" experimental_message" ] = result.experimental_message ;
1189
- item_data[" doc_type" ] = result.doc_type ;
1190
- item_data[" enumeration" ] = result.enumeration ;
1191
- item_data[" is_bitfield" ] = result.is_bitfield ;
1192
- item_data[" value" ] = result.value ;
1193
- doc_symbol = item_type + " ||" + p_symbol + " |" + JSON::stringify (item_data);
1194
- } break ;
1195
- case ScriptLanguage::LOOKUP_RESULT_SCRIPT_LOCATION:
1196
- case ScriptLanguage::LOOKUP_RESULT_CLASS_TBD_GLOBALSCOPE: // Deprecated.
1197
- case ScriptLanguage::LOOKUP_RESULT_MAX: {
1198
- // Nothing to do.
1199
- } break ;
1172
+ doc_symbol = " enum|" + result.class_name + " |" + result.class_member ;
1173
+ } break ;
1174
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_ANNOTATION: {
1175
+ doc_symbol = " annotation|" + result.class_name + " |" + result.class_member ;
1176
+ } break ;
1177
+ case ScriptLanguage::LOOKUP_RESULT_LOCAL_CONSTANT:
1178
+ case ScriptLanguage::LOOKUP_RESULT_LOCAL_VARIABLE: {
1179
+ const String item_type = (result.type == ScriptLanguage::LOOKUP_RESULT_LOCAL_CONSTANT) ? " local_constant" : " local_variable" ;
1180
+ Dictionary item_data;
1181
+ item_data[" description" ] = result.description ;
1182
+ item_data[" is_deprecated" ] = result.is_deprecated ;
1183
+ item_data[" deprecated_message" ] = result.deprecated_message ;
1184
+ item_data[" is_experimental" ] = result.is_experimental ;
1185
+ item_data[" experimental_message" ] = result.experimental_message ;
1186
+ item_data[" doc_type" ] = result.doc_type ;
1187
+ item_data[" enumeration" ] = result.enumeration ;
1188
+ item_data[" is_bitfield" ] = result.is_bitfield ;
1189
+ item_data[" value" ] = result.value ;
1190
+ doc_symbol = item_type + " ||" + p_symbol + " |" + JSON::stringify (item_data);
1191
+ } break ;
1192
+ case ScriptLanguage::LOOKUP_RESULT_SCRIPT_LOCATION:
1193
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_TBD_GLOBALSCOPE: // Deprecated.
1194
+ case ScriptLanguage::LOOKUP_RESULT_MAX: {
1195
+ // Nothing to do.
1196
+ } break ;
1197
+ }
1198
+ }
1199
+
1200
+ String debug_value = EditorDebuggerNode::get_singleton ()->get_var_value (p_symbol);
1201
+ if (!debug_value.is_empty ()) {
1202
+ constexpr int DISPLAY_LIMIT = 1024 ;
1203
+ if (debug_value.size () > DISPLAY_LIMIT) {
1204
+ debug_value = debug_value.left (DISPLAY_LIMIT) + " ... " + TTR (" (truncated)" );
1205
+ }
1206
+ debug_value = debug_value.replace (" [" , " [lb]" );
1207
+
1208
+ if (doc_symbol.is_empty ()) {
1209
+ debug_value = p_symbol + " : " + debug_value;
1210
+ } else {
1211
+ debug_value = TTR (" Current value: " ) + debug_value;
1212
+ }
1200
1213
}
1201
1214
1202
- if (!doc_symbol.is_empty ()) {
1203
- EditorHelpBitTooltip::show_tooltip (code_editor->get_text_editor (), doc_symbol, String () , true );
1215
+ if (!doc_symbol.is_empty () || !debug_value. is_empty () ) {
1216
+ EditorHelpBitTooltip::show_tooltip (code_editor->get_text_editor (), doc_symbol, debug_value , true );
1204
1217
}
1205
1218
}
1206
1219
0 commit comments