summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
Diffstat (limited to 'editor')
-rw-r--r--editor/code_editor.cpp6
-rw-r--r--editor/plugins/script_editor_plugin.cpp4
-rw-r--r--editor/plugins/script_editor_plugin.h4
-rw-r--r--editor/plugins/script_text_editor.cpp24
-rw-r--r--editor/plugins/script_text_editor.h6
-rw-r--r--editor/plugins/text_editor.cpp23
-rw-r--r--editor/plugins/text_editor.h6
7 files changed, 31 insertions, 42 deletions
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp
index 70747b4956..9e1a5f2d43 100644
--- a/editor/code_editor.cpp
+++ b/editor/code_editor.cpp
@@ -1408,9 +1408,9 @@ Variant CodeTextEditor::get_edit_state() {
state["bookmarks"] = text_editor->get_bookmarks_array();
state["syntax_highlighter"] = TTR("Standard");
- SyntaxHighlighter *syntax_highlighter = text_editor->_get_syntax_highlighting();
- if (syntax_highlighter) {
- state["syntax_highlighter"] = syntax_highlighter->get_name();
+ Ref<SyntaxHighlighter> syntax_highlighter = text_editor->get_syntax_highlighting();
+ if (syntax_highlighter.is_valid()) {
+ state["syntax_highlighter"] = syntax_highlighter->_get_name();
}
return state;
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index 8386d44e69..3f17f1166f 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -2024,8 +2024,8 @@ bool ScriptEditor::edit(const RES &p_resource, int p_line, int p_col, bool p_gra
se->add_syntax_highlighter(highlighter);
if (script != nullptr && !highlighter_set) {
- List<String> languages = highlighter->get_supported_languages();
- if (languages.find(script->get_language()->get_name())) {
+ Array languages = highlighter->_get_supported_languages();
+ if (languages.find(script->get_language()->get_name()) > -1) {
se->set_syntax_highlighter(highlighter);
highlighter_set = true;
}
diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h
index d51c95ec4b..9f9f51de5d 100644
--- a/editor/plugins/script_editor_plugin.h
+++ b/editor/plugins/script_editor_plugin.h
@@ -80,8 +80,8 @@ protected:
static void _bind_methods();
public:
- virtual void add_syntax_highlighter(SyntaxHighlighter *p_highlighter) = 0;
- virtual void set_syntax_highlighter(SyntaxHighlighter *p_highlighter) = 0;
+ virtual void add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) = 0;
+ virtual void set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) = 0;
virtual void apply_code() = 0;
virtual RES get_edited_resource() const = 0;
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp
index 9304683d77..a9898dafe5 100644
--- a/editor/plugins/script_text_editor.cpp
+++ b/editor/plugins/script_text_editor.cpp
@@ -1380,28 +1380,27 @@ void ScriptTextEditor::_edit_option_toggle_inline_comment() {
code_editor->toggle_inline_comment(delimiter);
}
-void ScriptTextEditor::add_syntax_highlighter(SyntaxHighlighter *p_highlighter) {
- highlighters[p_highlighter->get_name()] = p_highlighter;
- highlighter_menu->add_radio_check_item(p_highlighter->get_name());
+void ScriptTextEditor::add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) {
+ highlighters[p_highlighter->_get_name()] = p_highlighter;
+ highlighter_menu->add_radio_check_item(p_highlighter->_get_name());
}
-void ScriptTextEditor::set_syntax_highlighter(SyntaxHighlighter *p_highlighter) {
+void ScriptTextEditor::set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) {
TextEdit *te = code_editor->get_text_edit();
- te->_set_syntax_highlighting(p_highlighter);
- if (p_highlighter != nullptr) {
- highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->get_name()), true);
+ te->set_syntax_highlighting(p_highlighter);
+ if (p_highlighter.is_valid()) {
+ highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->_get_name()), true);
} else {
highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(TTR("Standard")), true);
}
}
void ScriptTextEditor::_change_syntax_highlighter(int p_idx) {
- Map<String, SyntaxHighlighter *>::Element *el = highlighters.front();
+ Map<String, Ref<SyntaxHighlighter> >::Element *el = highlighters.front();
while (el != nullptr) {
highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(el->key()), false);
el = el->next();
}
- // highlighter_menu->set_item_checked(p_idx, true);
set_syntax_highlighter(highlighters[highlighter_menu->get_item_text(p_idx)]);
}
@@ -1825,7 +1824,7 @@ ScriptTextEditor::ScriptTextEditor() {
convert_case->add_shortcut(ED_SHORTCUT("script_text_editor/capitalize", TTR("Capitalize"), KEY_MASK_SHIFT | KEY_F6), EDIT_CAPITALIZE);
convert_case->connect("id_pressed", callable_mp(this, &ScriptTextEditor::_edit_option));
- highlighters[TTR("Standard")] = nullptr;
+ highlighters[TTR("Standard")] = Ref<SyntaxHighlighter>();
highlighter_menu = memnew(PopupMenu);
highlighter_menu->set_name("highlighter_menu");
edit_menu->get_popup()->add_child(highlighter_menu);
@@ -1891,11 +1890,6 @@ ScriptTextEditor::ScriptTextEditor() {
}
ScriptTextEditor::~ScriptTextEditor() {
- for (const Map<String, SyntaxHighlighter *>::Element *E = highlighters.front(); E; E = E->next()) {
- if (E->get() != nullptr) {
- memdelete(E->get());
- }
- }
highlighters.clear();
}
diff --git a/editor/plugins/script_text_editor.h b/editor/plugins/script_text_editor.h
index a8d7f80e7b..d9ba579102 100644
--- a/editor/plugins/script_text_editor.h
+++ b/editor/plugins/script_text_editor.h
@@ -164,7 +164,7 @@ protected:
void _notification(int p_what);
static void _bind_methods();
- Map<String, SyntaxHighlighter *> highlighters;
+ Map<String, Ref<SyntaxHighlighter> > highlighters;
void _change_syntax_highlighter(int p_idx);
void _edit_option(int p_op);
@@ -190,8 +190,8 @@ protected:
public:
void _update_connected_methods();
- virtual void add_syntax_highlighter(SyntaxHighlighter *p_highlighter) override;
- virtual void set_syntax_highlighter(SyntaxHighlighter *p_highlighter) override;
+ virtual void add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) override;
+ virtual void set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) override;
void update_toggle_scripts_button();
virtual void apply_code() override;
diff --git a/editor/plugins/text_editor.cpp b/editor/plugins/text_editor.cpp
index 3ceb9bfd82..071a46b5ee 100644
--- a/editor/plugins/text_editor.cpp
+++ b/editor/plugins/text_editor.cpp
@@ -33,16 +33,16 @@
#include "core/os/keyboard.h"
#include "editor/editor_node.h"
-void TextEditor::add_syntax_highlighter(SyntaxHighlighter *p_highlighter) {
- highlighters[p_highlighter->get_name()] = p_highlighter;
- highlighter_menu->add_radio_check_item(p_highlighter->get_name());
+void TextEditor::add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) {
+ highlighters[p_highlighter->_get_name()] = p_highlighter;
+ highlighter_menu->add_radio_check_item(p_highlighter->_get_name());
}
-void TextEditor::set_syntax_highlighter(SyntaxHighlighter *p_highlighter) {
+void TextEditor::set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) {
TextEdit *te = code_editor->get_text_edit();
- te->_set_syntax_highlighting(p_highlighter);
- if (p_highlighter != nullptr) {
- highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->get_name()), true);
+ te->set_syntax_highlighting(p_highlighter);
+ if (p_highlighter.is_valid()) {
+ highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->_get_name()), true);
} else {
highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text("Standard"), true);
}
@@ -61,7 +61,7 @@ void TextEditor::set_syntax_highlighter(SyntaxHighlighter *p_highlighter) {
}
void TextEditor::_change_syntax_highlighter(int p_idx) {
- Map<String, SyntaxHighlighter *>::Element *el = highlighters.front();
+ Map<String, Ref<SyntaxHighlighter> >::Element *el = highlighters.front();
while (el != nullptr) {
highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(el->key()), false);
el = el->next();
@@ -634,7 +634,7 @@ TextEditor::TextEditor() {
convert_case->add_shortcut(ED_SHORTCUT("script_text_editor/capitalize", TTR("Capitalize")), EDIT_CAPITALIZE);
convert_case->connect("id_pressed", callable_mp(this, &TextEditor::_edit_option));
- highlighters["Standard"] = nullptr;
+ highlighters["Standard"] = Ref<SyntaxHighlighter>();
highlighter_menu = memnew(PopupMenu);
highlighter_menu->set_name("highlighter_menu");
edit_menu->get_popup()->add_child(highlighter_menu);
@@ -666,11 +666,6 @@ TextEditor::TextEditor() {
}
TextEditor::~TextEditor() {
- for (const Map<String, SyntaxHighlighter *>::Element *E = highlighters.front(); E; E = E->next()) {
- if (E->get() != nullptr) {
- memdelete(E->get());
- }
- }
highlighters.clear();
}
diff --git a/editor/plugins/text_editor.h b/editor/plugins/text_editor.h
index 5af020eabe..0db8f70a85 100644
--- a/editor/plugins/text_editor.h
+++ b/editor/plugins/text_editor.h
@@ -104,7 +104,7 @@ protected:
void _make_context_menu(bool p_selection, bool p_can_fold, bool p_is_folded, Vector2 p_position);
void _text_edit_gui_input(const Ref<InputEvent> &ev);
- Map<String, SyntaxHighlighter *> highlighters;
+ Map<String, Ref<SyntaxHighlighter> > highlighters;
void _change_syntax_highlighter(int p_idx);
void _load_theme_settings();
@@ -116,8 +116,8 @@ protected:
void _bookmark_item_pressed(int p_idx);
public:
- virtual void add_syntax_highlighter(SyntaxHighlighter *p_highlighter) override;
- virtual void set_syntax_highlighter(SyntaxHighlighter *p_highlighter) override;
+ virtual void add_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) override;
+ virtual void set_syntax_highlighter(Ref<SyntaxHighlighter> p_highlighter) override;
virtual String get_name() override;
virtual Ref<Texture2D> get_theme_icon() override;