* @brief Switches the syntax highlighter and completer for the language, releasing the * previous pair (the editor widget swaps without taking ownership). */
| 173 | * previous pair (the editor widget swaps without taking ownership). |
| 174 | */ |
| 175 | void DataModel::JsCodeEditor::setLanguage(const int language) |
| 176 | { |
| 177 | if (m_language == language) |
| 178 | return; |
| 179 | |
| 180 | m_language = language; |
| 181 | |
| 182 | auto* old_completer = m_widget.completer(); |
| 183 | auto* old_highlighter = m_widget.highlighter(); |
| 184 | |
| 185 | if (language == 1) { |
| 186 | m_widget.setHighlighter(new QLuaHighlighter()); |
| 187 | m_widget.setLanguageHint(QCodeEditor::LanguageHint::Lua); |
| 188 | m_widget.setCompleter(new DataModel::SerialStudioCompleter(true, &m_widget)); |
| 189 | } else { |
| 190 | m_widget.setHighlighter(new QJavascriptHighlighter()); |
| 191 | m_widget.setLanguageHint(QCodeEditor::LanguageHint::JavaScript); |
| 192 | m_widget.setCompleter(new DataModel::SerialStudioCompleter(false, &m_widget)); |
| 193 | } |
| 194 | |
| 195 | if (old_completer) |
| 196 | old_completer->deleteLater(); |
| 197 | |
| 198 | if (old_highlighter) |
| 199 | old_highlighter->deleteLater(); |
| 200 | |
| 201 | Q_EMIT languageChanged(); |
| 202 | } |
| 203 | |
| 204 | /** |
| 205 | * @brief Handles a user-initiated language switch from the QML combobox. |
nothing calls this directly
no test coverage detected