[utilities/kate] /: Add #ifdefs to allow compilation with KTextEditor < 6.15.0

Thomas Friedrichsmeier null at kde.org
Tue Jun 10 13:42:34 BST 2025


Git commit 6f0bb797389546f5897b3991f0312ea796819ab5 by Thomas Friedrichsmeier.
Committed on 10/06/2025 at 12:37.
Pushed by tfry into branch 'master'.

Add #ifdefs to allow compilation with KTextEditor < 6.15.0

M  +6    -0    addons/snippets/editsnippet.cpp
M  +7    -0    addons/snippets/snippet.cpp
M  +2    -1    doc/kate/plugins.docbook

https://invent.kde.org/utilities/kate/-/commit/6f0bb797389546f5897b3991f0312ea796819ab5

diff --git a/addons/snippets/editsnippet.cpp b/addons/snippets/editsnippet.cpp
index a8e9731811..ab3b642a0c 100644
--- a/addons/snippets/editsnippet.cpp
+++ b/addons/snippets/editsnippet.cpp
@@ -87,6 +87,10 @@ EditSnippet::EditSnippet(SnippetRepository *repository, Snippet *snippet, QWidge
     m_ui->snippetLabel->setOpenExternalLinks(true);
     m_ui->modeComboBox->addItem(i18n("Text template"), QVariant(Snippet::TextTemplate));
     m_ui->modeComboBox->addItem(i18n("Script"), QVariant(Snippet::Script));
+#if KTEXTEDITOR_VERSION < QT_VERSION_CHECK(6, 15, 0)
+    m_ui->modeComboBox->hide();
+    m_ui->modeComboBoxLabel->hide();
+#endif
 
     m_scriptsView = createView(m_ui->scriptTab);
     m_scriptsView->document()->setMode(QStringLiteral("JavaScript"));
@@ -124,7 +128,9 @@ EditSnippet::EditSnippet(SnippetRepository *repository, Snippet *snippet, QWidge
 
         m_snippetView->document()->setText(m_snippet->snippet());
         m_ui->snippetNameEdit->setText(m_snippet->text());
+#if KTEXTEDITOR_VERSION >= QT_VERSION_CHECK(6, 15, 0)
         m_ui->modeComboBox->setCurrentIndex(m_ui->modeComboBox->findData(QVariant(snippet->snippetType())));
+#endif
         m_ui->snippetShortcut->setKeySequence(m_snippet->action()->shortcut());
 
         // unset modified flags
diff --git a/addons/snippets/snippet.cpp b/addons/snippets/snippet.cpp
index 422f502c96..fb5c547f46 100644
--- a/addons/snippets/snippet.cpp
+++ b/addons/snippets/snippet.cpp
@@ -12,6 +12,7 @@
 #include "katesnippetglobal.h"
 #include "ktexteditor/document.h"
 #include "ktexteditor/mainwindow.h"
+#include "ktexteditor_version.h"
 
 #include <KLocalizedString>
 
@@ -97,10 +98,16 @@ void Snippet::apply(KTextEditor::View *view, const QString &repoScript) const
     if (snippetType() == TextTemplate) {
         view->insertTemplate(view->cursorPosition(), snippet(), repoScript);
     } else {
+#if KTEXTEDITOR_VERSION >= QT_VERSION_CHECK(6, 15, 0)
         QVariant res;
         view->evaluateScript(repoScript + u'\n' + snippet(), &res);
         // for convenience, insert result (or error message) at cursor position
         view->document()->insertText(view->cursorPosition(), res.toString());
+#else
+        // this should not usually be hit, but let's show an error message
+        view->document()->insertText(view->cursorPosition(),
+                                     i18n("Kate needs to be compiled against KTExtEditor version 6.15.0 or higher, to use this type of snippet."));
+#endif
     }
 }
 
diff --git a/doc/kate/plugins.docbook b/doc/kate/plugins.docbook
index 9173a41da3..17b1654ddf 100644
--- a/doc/kate/plugins.docbook
+++ b/doc/kate/plugins.docbook
@@ -3471,7 +3471,8 @@ than one file type pressing the &Shift; while adding types.</para></listitem>
 <listitem><para>Snippets may either be defined as text templates or scripts. Both types allow to use &javascript; functions
 (see below for details), and can thus be used to similar effect. However, as a rule of thumb, text templates will be more
 suiteable if you mostly want to <emphasis>insert</emphasis> text, while scripts are often an easier solution if you want to
-<emphasis>modify</emphasis> text).</para></listitem>
+<emphasis>modify</emphasis> text).</para>
+<note><para>Kate needs to be compiled against KTExtEditor version 6.15.0 or higher, for this feature to be available. For earlier versions, only text template snippets can be used.</para></note></listitem>
 </varlistentry>
 
 <varlistentry>



More information about the kde-doc-english mailing list