Pārlūkot izejas kodu

Merge pull request #98929 from dsnopek/editor-syntax-highlighter-create

Expose the `EditorScriptHighlighter::_create()` method to GDExtension
Rémi Verschelde 3 mēneši atpakaļ
vecāks
revīzija
7b9e7b9162

+ 6 - 0
doc/classes/EditorSyntaxHighlighter.xml

@@ -10,6 +10,12 @@
 	<tutorials>
 	</tutorials>
 	<methods>
+		<method name="_create" qualifiers="virtual const">
+			<return type="EditorSyntaxHighlighter" />
+			<description>
+				Virtual method which creates a new instance of the syntax highlighter.
+			</description>
+		</method>
 		<method name="_get_name" qualifiers="virtual const">
 			<return type="String" />
 			<description>

+ 8 - 3
editor/plugins/script_editor_plugin.cpp

@@ -91,9 +91,13 @@ PackedStringArray EditorSyntaxHighlighter::_get_supported_languages() const {
 
 Ref<EditorSyntaxHighlighter> EditorSyntaxHighlighter::_create() const {
 	Ref<EditorSyntaxHighlighter> syntax_highlighter;
-	syntax_highlighter.instantiate();
-	if (get_script_instance()) {
-		syntax_highlighter->set_script(get_script_instance()->get_script());
+	if (GDVIRTUAL_IS_OVERRIDDEN(_create)) {
+		GDVIRTUAL_CALL(_create, syntax_highlighter);
+	} else {
+		syntax_highlighter.instantiate();
+		if (get_script_instance()) {
+			syntax_highlighter->set_script(get_script_instance()->get_script());
+		}
 	}
 	return syntax_highlighter;
 }
@@ -103,6 +107,7 @@ void EditorSyntaxHighlighter::_bind_methods() {
 
 	GDVIRTUAL_BIND(_get_name)
 	GDVIRTUAL_BIND(_get_supported_languages)
+	GDVIRTUAL_BIND(_create)
 }
 
 ////

+ 1 - 0
editor/plugins/script_editor_plugin.h

@@ -61,6 +61,7 @@ protected:
 
 	GDVIRTUAL0RC(String, _get_name)
 	GDVIRTUAL0RC(PackedStringArray, _get_supported_languages)
+	GDVIRTUAL0RC(Ref<EditorSyntaxHighlighter>, _create)
 
 public:
 	virtual String _get_name() const;