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