summaryrefslogtreecommitdiffstats
path: root/editor/plugins/script_editor_plugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'editor/plugins/script_editor_plugin.h')
-rw-r--r--editor/plugins/script_editor_plugin.h58
1 files changed, 52 insertions, 6 deletions
diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h
index 4ce3b0e4ad..3891af4091 100644
--- a/editor/plugins/script_editor_plugin.h
+++ b/editor/plugins/script_editor_plugin.h
@@ -47,6 +47,53 @@
#include "scene/main/timer.h"
#include "scene/resources/text_file.h"
+class EditorSyntaxHighlighter : public SyntaxHighlighter {
+ GDCLASS(EditorSyntaxHighlighter, SyntaxHighlighter)
+
+private:
+ REF edited_resourse;
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual String _get_name() const;
+ virtual Array _get_supported_languages() const;
+
+ void _set_edited_resource(const RES &p_res) { edited_resourse = p_res; }
+ REF _get_edited_resource() { return edited_resourse; }
+
+ virtual Ref<EditorSyntaxHighlighter> _create() const;
+};
+
+class EditorStandardSyntaxHighlighter : public EditorSyntaxHighlighter {
+ GDCLASS(EditorStandardSyntaxHighlighter, EditorSyntaxHighlighter)
+
+private:
+ Ref<CodeHighlighter> highlighter;
+
+public:
+ virtual void _update_cache() override;
+ virtual Dictionary _get_line_syntax_highlighting(int p_line) override { return highlighter->get_line_syntax_highlighting(p_line); }
+
+ virtual String _get_name() const override { return TTR("Standard"); }
+
+ virtual Ref<EditorSyntaxHighlighter> _create() const override;
+
+ EditorStandardSyntaxHighlighter() { highlighter.instance(); }
+};
+
+class EditorPlainTextSyntaxHighlighter : public EditorSyntaxHighlighter {
+ GDCLASS(EditorPlainTextSyntaxHighlighter, EditorSyntaxHighlighter)
+
+public:
+ virtual String _get_name() const override { return TTR("Plain Text"); }
+
+ virtual Ref<EditorSyntaxHighlighter> _create() const override;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
class ScriptEditorQuickOpen : public ConfirmationDialog {
GDCLASS(ScriptEditorQuickOpen, ConfirmationDialog);
@@ -80,8 +127,8 @@ protected:
static void _bind_methods();
public:
- virtual void add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) = 0;
- virtual void set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) = 0;
+ virtual void add_syntax_highlighter(Ref<EditorSyntaxHighlighter> p_highlighter) = 0;
+ virtual void set_syntax_highlighter(Ref<EditorSyntaxHighlighter> p_highlighter) = 0;
virtual void apply_code() = 0;
virtual RES get_edited_resource() const = 0;
@@ -120,7 +167,6 @@ public:
ScriptEditorBase() {}
};
-typedef SyntaxHighlighter *(*CreateSyntaxHighlighterFunc)();
typedef ScriptEditorBase *(*CreateScriptEditorFunc)(const RES &p_resource);
class EditorScriptCodeCompletionCache;
@@ -241,7 +287,7 @@ class ScriptEditor : public PanelContainer {
static int script_editor_func_count;
static CreateScriptEditorFunc script_editor_funcs[SCRIPT_EDITOR_FUNC_MAX];
- Vector<Ref<SyntaxHighlighter> > syntax_highlighters;
+ Vector<Ref<EditorSyntaxHighlighter>> syntax_highlighters;
struct ScriptHistory {
Control *control;
@@ -440,8 +486,8 @@ public:
void set_live_auto_reload_running_scripts(bool p_enabled);
- void register_syntax_highlighter(const Ref<SyntaxHighlighter> &p_syntax_highlighter);
- void unregister_syntax_highlighter(const Ref<SyntaxHighlighter> &p_syntax_highlighter);
+ void register_syntax_highlighter(const Ref<EditorSyntaxHighlighter> &p_syntax_highlighter);
+ void unregister_syntax_highlighter(const Ref<EditorSyntaxHighlighter> &p_syntax_highlighter);
static void register_create_script_editor_function(CreateScriptEditorFunc p_func);