summaryrefslogtreecommitdiffstats
path: root/modules/visual_script/visual_script.cpp
diff options
context:
space:
mode:
authorIgnacio Etcheverry <ignalfonsore@gmail.com>2017-04-15 19:48:10 +0200
committerIgnacio Etcheverry <ignalfonsore@gmail.com>2017-04-17 01:51:30 +0200
commit4b8568006d1f83d518d98ef3c7354b7c25de46cc (patch)
tree62d39934c808c4a53ea27fc6e1771b7b57da7136 /modules/visual_script/visual_script.cpp
parentfce779a4ef02f1b14f95cab6a06e75db170f3448 (diff)
downloadredot-engine-4b8568006d1f83d518d98ef3c7354b7c25de46cc.tar.gz
External editor improvements and fixes
Notable changes: - Now ScriptLanguages have the option to override the global external editor setting. If `ScriptLanguage::open_in_external_editor()` returns `ERR_UNAVAILABLE` (which it does by default), then the global external editor option will be used. - Added formatting to the external editor execution arguments. Now it's possible to write something like this: `{project} -g {file}:{line}:{col}`. - `VisualScript::get_member_line()` now can return the line of functions (well, it returns the id of the _Function_ node of the function). I guess there is nothing else we can get a "line" from. Fixes: - Fixes a bug where `ScriptEditor::script_goto_method()` would not work if the script is not already open in the built-in editor. - Fixes wrong DEFVAL for `cursor_set_column` and `cursor_set_line` in TextEdit. - `Script::get_member_line()` now returns -1 ("found nothing") by default.
Diffstat (limited to 'modules/visual_script/visual_script.cpp')
-rw-r--r--modules/visual_script/visual_script.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp
index 53521c55a7..aec60391d3 100644
--- a/modules/visual_script/visual_script.cpp
+++ b/modules/visual_script/visual_script.cpp
@@ -1073,6 +1073,18 @@ void VisualScript::get_script_property_list(List<PropertyInfo> *p_list) const {
}
}
+int VisualScript::get_member_line(const StringName &p_member) const {
+#ifdef TOOLS_ENABLED
+ if (has_function(p_member)) {
+ for (Map<int, Function::NodeData>::Element *E = functions[p_member].nodes.front(); E; E = E->next()) {
+ if (E->get().node->cast_to<VisualScriptFunction>())
+ return E->key();
+ }
+ }
+#endif
+ return -1;
+}
+
#ifdef TOOLS_ENABLED
bool VisualScript::are_subnodes_edited() const {