[utilities/kate] addons: Remove backtracebrowser plugin

Christoph Cullmann <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 29e5dd9a71879437afd0a00d802e5342df244623 by Christoph Cullmann, on behalf of Waqar Ahmed.
Committed on 01/08/2026 at 20:12.
Pushed by cullmann into branch 'master'.

Remove backtracebrowser plugin

I think its not useful now. We have links plugin that can allow you to
browse a backtrace and jump to locations.

M  +0    -1    addons/CMakeLists.txt
D  +0    -21   addons/backtracebrowser/CMakeLists.txt
D  +0    -3    addons/backtracebrowser/Messages.sh
D  +0    -24   addons/backtracebrowser/autotests/CMakeLists.txt
D  +0    -84   addons/backtracebrowser/autotests/btbrowsertest.cpp
D  +0    -24   addons/backtracebrowser/autotests/btbrowsertest.h
D  +0    -108  addons/backtracebrowser/btbrowserwidget.ui
D  +0    -122  addons/backtracebrowser/btconfigwidget.ui
D  +0    -79   addons/backtracebrowser/btdatabase.cpp
D  +0    -38   addons/backtracebrowser/btdatabase.h
D  +0    -80   addons/backtracebrowser/btfileindexer.cpp
D  +0    -39   addons/backtracebrowser/btfileindexer.h
D  +0    -159  addons/backtracebrowser/btparser.cpp
D  +0    -44   addons/backtracebrowser/btparser.h
D  +0    -390  addons/backtracebrowser/katebacktracebrowser.cpp
D  +0    -136  addons/backtracebrowser/katebacktracebrowser.h
D  +0    -88   addons/backtracebrowser/katebacktracebrowserplugin.json

https://invent.kde.org/utilities/kate/-/commit/29e5dd9a71879437afd0a00d802e5342df244623

diff --git a/addons/CMakeLists.txt b/addons/CMakeLists.txt
index cb8178d158..f71fd15ff6 100644
--- a/addons/CMakeLists.txt
+++ b/addons/CMakeLists.txt
@@ -2,7 +2,6 @@ function (kate_add_plugin name)
 kcoreaddons_add_plugin(${name} INSTALL_NAMESPACE "kf6/ktexteditor")
 endfunction()
 
-ecm_optional_add_subdirectory(backtracebrowser)
 ecm_optional_add_subdirectory(close-except-like) # Close all documents except this one (or similar).
 ecm_optional_add_subdirectory(colorpicker) # Inline color preview/picker
 ecm_optional_add_subdirectory(show-nonprintable)
diff --git a/addons/backtracebrowser/CMakeLists.txt b/addons/backtracebrowser/CMakeLists.txt
deleted file mode 100644
index 94884f0800..0000000000
--- a/addons/backtracebrowser/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-kate_add_plugin(katebacktracebrowserplugin)
-target_compile_definitions(katebacktracebrowserplugin PRIVATE TRANSLATION_DOMAIN="katebacktracebrowserplugin")
-target_link_libraries(katebacktracebrowserplugin PRIVATE KF6::I18n KF6::TextEditor KF6::KIOWidgets)
-
-ki18n_wrap_ui(katebacktracebrowserplugin btbrowserwidget.ui btconfigwidget.ui)
-target_sources(
-  katebacktracebrowserplugin
-  PRIVATE
-    katebacktracebrowser.cpp
-    btparser.cpp
-    btfileindexer.cpp
-    btdatabase.cpp
-)
-
-if (ENABLE_PCH)
-    target_precompile_headers(katebacktracebrowserplugin REUSE_FROM katepch)
-endif()
-
-if(BUILD_TESTING)
-  add_subdirectory(autotests)
-endif()
diff --git a/addons/backtracebrowser/Messages.sh b/addons/backtracebrowser/Messages.sh
deleted file mode 100644
index fca0deff0b..0000000000
--- a/addons/backtracebrowser/Messages.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#! /bin/sh
-$EXTRACTRC *.ui >> rc.cpp
-$XGETTEXT *.cpp -o $podir/katebacktracebrowserplugin.pot
diff --git a/addons/backtracebrowser/autotests/CMakeLists.txt b/addons/backtracebrowser/autotests/CMakeLists.txt
deleted file mode 100644
index 5f62ad992f..0000000000
--- a/addons/backtracebrowser/autotests/CMakeLists.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-include(ECMMarkAsTest)
-
-add_executable(btbrowser_test "")
-target_include_directories(btbrowser_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/..)
-
-find_package(Qt6Test ${QT_MIN_VERSION} QUIET REQUIRED)
-target_link_libraries(
-  btbrowser_test 
-  PRIVATE 
-    Qt::Widgets
-    Qt::Test
-)
-
-target_sources(btbrowser_test PRIVATE
-  btbrowsertest.cpp 
-  ${CMAKE_CURRENT_SOURCE_DIR}/../btparser.cpp
-)
-
-if(ENABLE_PCH)
-    target_precompile_headers(btbrowser_test REUSE_FROM katepch_tests)
-endif()
-
-add_test(NAME plugin-btbrowser_test COMMAND btbrowser_test ${OFFSCREEN_QPA})
-ecm_mark_as_test(btbrowser_test)
diff --git a/addons/backtracebrowser/autotests/btbrowsertest.cpp b/addons/backtracebrowser/autotests/btbrowsertest.cpp
deleted file mode 100644
index 4297e6c15e..0000000000
--- a/addons/backtracebrowser/autotests/btbrowsertest.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/* This file is part of the KDE project
- *
- *  SPDX-FileCopyrightText: 2014 Dominik Haumann <[email protected]>
- *
- *  SPDX-License-Identifier: LGPL-2.0-or-later
- */
-
-#include "btbrowsertest.h"
-#include "btparser.h"
-
-#include <QtTestWidgets>
-
-QTEST_MAIN(KateBtBrowserTest)
-
-void KateBtBrowserTest::initTestCase()
-{
-}
-
-void KateBtBrowserTest::cleanupTestCase()
-{
-}
-
-void KateBtBrowserTest::testParser()
-{
-    // make sure the different types of gdb backtraces are parsed correctly
-
-    // 1) #24 0xb688ff8e in QApplication::notify (this=0xbf997e8c, receiver=0x82607e8, e=0xbf997074) at kernel/qapplication.cpp:3115
-    // 2) #39 0xb634211c in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
-    // 3) #41 0x0805e690 in ?? ()
-    // 4) #5  0xffffe410 in __kernel_vsyscall ()
-
-    QString bt = QStringLiteral("#24 0xb688ff8e in QApplication::notify (this=0xbf997e8c, receiver=0x82607e8, e=0xbf997074) at kernel/qapplication.cpp:3115");
-    QList<BtInfo> info = KateBtParser::parseBacktrace(bt);
-
-    QVERIFY(info.size() == 1);
-    QCOMPARE(info[0].type, BtInfo::Source);
-    QCOMPARE(info[0].original, bt);
-    QCOMPARE(info[0].filename, QLatin1String("kernel/qapplication.cpp"));
-    QCOMPARE(info[0].function, QLatin1String("QApplication::notify (this=0xbf997e8c, receiver=0x82607e8, e=0xbf997074)"));
-    QCOMPARE(info[0].address, QLatin1String("0xb688ff8e"));
-    QCOMPARE(info[0].line, 3115);
-    QCOMPARE(info[0].step, 24);
-
-    bt = QStringLiteral("#39 0xb634211c in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0");
-    info = KateBtParser::parseBacktrace(bt);
-    QVERIFY(info.size() == 1);
-    QCOMPARE(info[0].type, BtInfo::Lib);
-    QCOMPARE(info[0].original, bt);
-    QCOMPARE(info[0].filename, QLatin1String("/usr/lib/libglib-2.0.so.0"));
-    QCOMPARE(info[0].function, QLatin1String("g_main_context_dispatch ()"));
-    QCOMPARE(info[0].address, QLatin1String("0xb634211c"));
-    QCOMPARE(info[0].line, -1);
-    QCOMPARE(info[0].step, 39);
-
-    bt = QStringLiteral("#41 0x0805e690 in ?? ()");
-    info = KateBtParser::parseBacktrace(bt);
-    QVERIFY(info.size() == 1);
-    QCOMPARE(info[0].type, BtInfo::Unknown);
-    QCOMPARE(info[0].original, bt);
-    QCOMPARE(info[0].filename, QString());
-    QCOMPARE(info[0].function, QString());
-    QCOMPARE(info[0].address, QLatin1String("0x0805e690"));
-    QCOMPARE(info[0].line, -1);
-    QCOMPARE(info[0].step, 41);
-
-    bt = QStringLiteral("#5  0xffffe410 in __kernel_vsyscall ()");
-    info = KateBtParser::parseBacktrace(bt);
-    QVERIFY(info.size() == 1);
-    QCOMPARE(info[0].type, BtInfo::Unknown);
-    QCOMPARE(info[0].original, bt);
-    QCOMPARE(info[0].filename, QString());
-    QCOMPARE(info[0].function, QLatin1String("__kernel_vsyscall ()"));
-    QCOMPARE(info[0].address, QLatin1String("0xffffe410"));
-    QCOMPARE(info[0].line, -1);
-    QCOMPARE(info[0].step, 5);
-
-    bt = QStringLiteral("    Thread 1 (Thread 0x7fb6ba260780 (LWP 16447)):\n[KCrash Handler]");
-    info = KateBtParser::parseBacktrace(bt);
-    QVERIFY(info.empty());
-}
-
-#include "moc_btbrowsertest.cpp"
-
-// kate: space-indent on; indent-width 4; replace-tabs on;
diff --git a/addons/backtracebrowser/autotests/btbrowsertest.h b/addons/backtracebrowser/autotests/btbrowsertest.h
deleted file mode 100644
index 41072ebd6c..0000000000
--- a/addons/backtracebrowser/autotests/btbrowsertest.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* This file is part of the KDE project
- *
- *  SPDX-FileCopyrightText: 2014 Dominik Haumann <[email protected]>
- *
- *  SPDX-License-Identifier: LGPL-2.0-or-later
- */
-
-#pragma once
-
-#include <QObject>
-
-class KateBtBrowserTest : public QObject
-{
-    Q_OBJECT
-
-public Q_SLOTS:
-    void initTestCase();
-    void cleanupTestCase();
-
-private Q_SLOTS:
-    void testParser();
-};
-
-// kate: space-indent on; indent-width 4; replace-tabs on;
diff --git a/addons/backtracebrowser/btbrowserwidget.ui b/addons/backtracebrowser/btbrowserwidget.ui
deleted file mode 100644
index f76709748d..0000000000
--- a/addons/backtracebrowser/btbrowserwidget.ui
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>BtBrowserWidget</class>
- <widget class="QWidget" name="BtBrowserWidget">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>457</width>
-    <height>232</height>
-   </rect>
-  </property>
-  <layout class="QGridLayout">
-   <property name="margin" stdset="0">
-    <number>0</number>
-   </property>
-   <item row="0" column="0">
-    <widget class="QTreeWidget" name="lstBacktrace">
-     <property name="frameShape">
-      <enum>QFrame::Shape::NoFrame</enum>
-     </property>
-     <property name="horizontalScrollBarPolicy">
-      <enum>Qt::ScrollBarPolicy::ScrollBarAlwaysOff</enum>
-     </property>
-     <property name="rootIsDecorated">
-      <bool>false</bool>
-     </property>
-     <property name="itemsExpandable">
-      <bool>false</bool>
-     </property>
-     <property name="allColumnsShowFocus">
-      <bool>true</bool>
-     </property>
-     <property name="columnCount">
-      <number>4</number>
-     </property>
-     <column>
-      <property name="text">
-       <string>#</string>
-      </property>
-     </column>
-     <column>
-      <property name="text">
-       <string>File</string>
-      </property>
-     </column>
-     <column>
-      <property name="text">
-       <string>Line</string>
-      </property>
-     </column>
-     <column>
-      <property name="text">
-       <string>Function</string>
-      </property>
-     </column>
-    </widget>
-   </item>
-   <item row="1" column="0">
-    <layout class="QHBoxLayout">
-     <item>
-      <widget class="QLabel" name="lblStatus">
-       <property name="text">
-        <string/>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer>
-       <property name="orientation">
-        <enum>Qt::Orientation::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>31</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QPushButton" name="btnConfigure">
-       <property name="text">
-        <string>Configure Paths...</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="btnClipboard">
-       <property name="text">
-        <string>Use Clipboard</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="btnBacktrace">
-       <property name="text">
-        <string>Load File...</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/addons/backtracebrowser/btconfigwidget.ui b/addons/backtracebrowser/btconfigwidget.ui
deleted file mode 100644
index 2ea799c121..0000000000
--- a/addons/backtracebrowser/btconfigwidget.ui
+++ /dev/null
@@ -1,122 +0,0 @@
-<ui version="4.0" >
- <class>BtConfigWidget</class>
- <widget class="QWidget" name="BtConfigWidget" >
-  <layout class="QVBoxLayout" name="verticalLayout_2" >
-   <property name="spacing" >
-    <number>0</number>
-   </property>
-   <property name="margin" >
-    <number>0</number>
-   </property>
-   <item>
-    <widget class="QGroupBox" name="gFolderList" >
-     <property name="title" >
-      <string>Search Folders</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout" >
-      <item>
-       <widget class="QLabel" name="label" >
-        <property name="text" >
-         <string>Please add the source folders in which to search for the files in the backtrace:</string>
-        </property>
-        <property name="textFormat" >
-         <enum>Qt::PlainText</enum>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="KUrlRequester" name="edtUrl" />
-      </item>
-      <item>
-       <widget class="QListWidget" name="lstFolders" >
-        <property name="whatsThis" >
-         <string>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
-p, li { white-space: pre-wrap; }
-&lt;/style>&lt;/head>&lt;body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;">
-&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Insert the source folders here. As example, for KDE development you have to add the Qt and Frameworks source folders:&lt;/p>
-&lt;ul style="-qt-list-indent: 1;">&lt;li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">/path/to/kdelibs&lt;/li>
-&lt;li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">/path/to/qt/src&lt;/li>&lt;/ul>&lt;/body>&lt;/html></string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_2" >
-        <item>
-         <spacer name="horizontalSpacer" >
-          <property name="orientation" >
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0" >
-           <size>
-            <width>218</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-        <item>
-         <widget class="QPushButton" name="btnRemove" >
-          <property name="text" >
-           <string>&amp;Remove</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QPushButton" name="btnAdd" >
-          <property name="text" >
-           <string>&amp;Add</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout" >
-        <item>
-         <widget class="QLabel" name="label_2" >
-          <property name="text" >
-           <string>File types:</string>
-          </property>
-          <property name="textFormat" >
-           <enum>Qt::PlainText</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QLineEdit" name="edtExtensions" >
-          <property name="whatsThis" >
-           <string>List of file extensions. Example: *.cpp, *.h, *.c, etc...</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <spacer name="verticalSpacer" >
-     <property name="orientation" >
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" stdset="0" >
-      <size>
-       <width>20</width>
-       <height>40</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-  </layout>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>KUrlRequester</class>
-   <extends>QFrame</extends>
-   <header>kurlrequester.h</header>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
diff --git a/addons/backtracebrowser/btdatabase.cpp b/addons/backtracebrowser/btdatabase.cpp
deleted file mode 100644
index ad75b1b24c..0000000000
--- a/addons/backtracebrowser/btdatabase.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/* This file is part of the KDE project
-   SPDX-FileCopyrightText: 2008-2014 Dominik Haumann <dhaumann kde org>
-
-   SPDX-License-Identifier: LGPL-2.0-only
-*/
-
-#include "btdatabase.h"
-
-#include <QDataStream>
-#include <QDir>
-#include <QFile>
-
-void KateBtDatabase::loadFromFile(const QString &url)
-{
-    QFile file(url);
-    if (file.open(QIODevice::ReadOnly)) {
-        QMutexLocker locker(&mutex);
-        QDataStream ds(&file);
-        ds >> db;
-    }
-    //     qDebug() << "Number of entries in the backtrace database" << url << ":" << db.size();
-}
-
-void KateBtDatabase::saveToFile(const QString &url) const
-{
-    QFile file(url);
-    if (file.open(QIODevice::WriteOnly)) {
-        QMutexLocker locker(&mutex);
-        QDataStream ds(&file);
-        ds << db;
-    }
-    //     qDebug() << "Saved backtrace database to" << url;
-}
-
-QString KateBtDatabase::value(const QString &key)
-{
-    // key is either of the form "foo/bar.txt" or only "bar.txt"
-    QString file = key;
-    const QStringList split_key = key.split(u'/');
-    if (split_key.size() > 1) {
-        file = split_key[1];
-    }
-
-    QMutexLocker locker(&mutex);
-    if (db.contains(file)) {
-        const QStringList &sl = db.value(file);
-        for (int i = 0; i < sl.size(); ++i) {
-            if (sl[i].indexOf(key) != -1) {
-                return sl[i];
-            }
-        }
-        // try to use the first one
-        if (!sl.empty()) {
-            return sl[0];
-        }
-    }
-
-    return {};
-}
-
-void KateBtDatabase::add(const QString &folder, const QStringList &files)
-{
-    QMutexLocker locker(&mutex);
-    for (const QString &file : files) {
-        QStringList &sl = db[file];
-        QString entry = QDir::fromNativeSeparators(folder + u'/' + file);
-        if (!sl.contains(entry)) {
-            sl << entry;
-        }
-    }
-}
-
-int KateBtDatabase::size() const
-{
-    QMutexLocker locker(&mutex);
-    return db.size();
-}
-
-// kate: space-indent on; indent-width 4; replace-tabs on;
diff --git a/addons/backtracebrowser/btdatabase.h b/addons/backtracebrowser/btdatabase.h
deleted file mode 100644
index 3d604ddb3a..0000000000
--- a/addons/backtracebrowser/btdatabase.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* This file is part of the KDE project
-   SPDX-FileCopyrightText: 2008-2014 Dominik Haumann <dhaumann kde org>
-
-   SPDX-License-Identifier: LGPL-2.0-only
-*/
-
-#pragma once
-
-#include <QHash>
-#include <QMutex>
-#include <QString>
-#include <QStringList>
-
-class KateBtDatabase
-{
-public:
-    KateBtDatabase()
-    {
-    }
-    ~KateBtDatabase()
-    {
-    }
-
-    void loadFromFile(const QString &url);
-    void saveToFile(const QString &url) const;
-
-    QString value(const QString &key);
-
-    void add(const QString &folder, const QStringList &files);
-
-    int size() const;
-
-private:
-    mutable QMutex mutex;
-    QHash<QString, QStringList> db;
-};
-
-// kate: space-indent on; indent-width 4; replace-tabs on;
diff --git a/addons/backtracebrowser/btfileindexer.cpp b/addons/backtracebrowser/btfileindexer.cpp
deleted file mode 100644
index 3a5aa796b3..0000000000
--- a/addons/backtracebrowser/btfileindexer.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/* This file is part of the KDE project
-   SPDX-FileCopyrightText: 2008-2014 Dominik Haumann <dhaumann kde org>
-
-   SPDX-License-Identifier: LGPL-2.0-only
-*/
-
-#include "btfileindexer.h"
-#include "btdatabase.h"
-
-#include <QDir>
-#include <QtCore/qlogging.h>
-
-BtFileIndexer::BtFileIndexer(KateBtDatabase *database)
-    : cancelAsap(false)
-    , db(database)
-{
-}
-
-BtFileIndexer::~BtFileIndexer() = default;
-
-void BtFileIndexer::setSearchPaths(const QStringList &urls)
-{
-    searchPaths.clear();
-    for (const QString &url : urls) {
-        if (!searchPaths.contains(url)) {
-            searchPaths += url;
-        }
-    }
-}
-
-void BtFileIndexer::setFilter(const QStringList &fileFilter)
-{
-    filter = fileFilter;
-    qDebug("filter: %ls", qUtf16Printable(filter.join(u",")));
-}
-
-void BtFileIndexer::run()
-{
-    if (filter.empty()) {
-        qDebug("Filter is empty. Aborting.");
-        return;
-    }
-
-    cancelAsap = false;
-    for (int i = 0; i < searchPaths.size(); ++i) {
-        if (cancelAsap) {
-            break;
-        }
-        indexFiles(searchPaths[i]);
-    }
-    qDebug("Backtrace file database contains %d files", db->size());
-}
-
-void BtFileIndexer::cancel()
-{
-    cancelAsap = true;
-}
-
-void BtFileIndexer::indexFiles(const QString &url)
-{
-    QDir dir(url);
-    if (!dir.exists()) {
-        return;
-    }
-
-    QStringList files = dir.entryList(filter, QDir::Files | QDir::NoSymLinks | QDir::Readable | QDir::NoDotAndDotDot | QDir::CaseSensitive);
-    db->add(url, files);
-
-    QStringList subdirs = dir.entryList(QDir::Dirs | QDir::NoSymLinks | QDir::Readable | QDir::NoDotAndDotDot | QDir::CaseSensitive);
-    for (int i = 0; i < subdirs.size(); ++i) {
-        if (cancelAsap) {
-            break;
-        }
-        indexFiles(url + u'/' + subdirs[i]);
-    }
-}
-
-#include "moc_btfileindexer.cpp"
-
-// kate: space-indent on; indent-width 4; replace-tabs on;
diff --git a/addons/backtracebrowser/btfileindexer.h b/addons/backtracebrowser/btfileindexer.h
deleted file mode 100644
index 252826f49e..0000000000
--- a/addons/backtracebrowser/btfileindexer.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* This file is part of the KDE project
-   SPDX-FileCopyrightText: 2008-2014 Dominik Haumann <dhaumann kde org>
-
-   SPDX-License-Identifier: LGPL-2.0-only
-*/
-
-#pragma once
-
-#include <QString>
-#include <QStringList>
-#include <QThread>
-
-class KateBtDatabase;
-
-class BtFileIndexer : public QThread
-{
-    Q_OBJECT
-public:
-    explicit BtFileIndexer(KateBtDatabase *db);
-    ~BtFileIndexer() override;
-    void setSearchPaths(const QStringList &urls);
-
-    void setFilter(const QStringList &filter);
-
-    void cancel();
-
-protected:
-    void run() override;
-    void indexFiles(const QString &url);
-
-private:
-    bool cancelAsap;
-    QStringList searchPaths;
-    QStringList filter;
-
-    KateBtDatabase *db;
-};
-
-// kate: space-indent on; indent-width 4; replace-tabs on;
diff --git a/addons/backtracebrowser/btparser.cpp b/addons/backtracebrowser/btparser.cpp
deleted file mode 100644
index 5cee8cca95..0000000000
--- a/addons/backtracebrowser/btparser.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/* This file is part of the KDE project
-   SPDX-FileCopyrightText: 2008-2014 Dominik Haumann <dhaumann kde org>
-
-   SPDX-License-Identifier: LGPL-2.0-only
-*/
-
-#include "btparser.h"
-
-#include <QRegularExpression>
-#include <QStringList>
-#include <QtCore/qlogging.h>
-
-static QString eolDelimiter(const QString &str)
-{
-    // find the split character
-    QString separator(u'\n');
-    if (str.indexOf(QLatin1String("\r\n")) != -1) {
-        separator = QStringLiteral("\r\n");
-    } else if (str.indexOf(u'\r') != -1) {
-        separator = u'\r';
-    }
-    return separator;
-}
-
-static bool lineNoLessThan(const QString &lhs, const QString &rhs)
-{
-    static const QRegularExpression rx(QStringLiteral("^#(\\d+)"));
-    QRegularExpressionMatch match = rx.match(lhs);
-    int ilhs = match.capturedStart(0);
-    int lhsLn = match.captured(1).toInt();
-    match = rx.match(rhs);
-    int irhs = match.capturedStart(0);
-    int rhsLn = match.captured(1).toInt();
-    if (ilhs != -1 && irhs != -1) {
-        return lhsLn < rhsLn;
-    } else {
-        return lhs < rhs;
-    }
-}
-
-static QStringList normalizeBt(const QStringList &l)
-{
-    QStringList normalized;
-
-    bool append = false;
-
-    for (int i = 0; i < l.size(); ++i) {
-        QString str = l[i].trimmed();
-        if (str.length()) {
-            if (str[0] == u'#') {
-                normalized << str;
-                append = true;
-            } else if (append) {
-                normalized.last() += u' ' + str;
-            }
-        } else {
-            append = false;
-        }
-    }
-
-    std::sort(normalized.begin(), normalized.end(), lineNoLessThan);
-
-    // now every single line contains a whole backtrace info
-    return normalized;
-}
-
-static BtInfo parseBtLine(const QString &line)
-{
-    // the syntax types we support are
-    // a) #24 0xb688ff8e in QApplication::notify (this=0xbf997e8c, receiver=0x82607e8, e=0xbf997074) at kernel/qapplication.cpp:3115
-    // b) #39 0xb634211c in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
-    // c) #41 0x0805e690 in ?? ()
-    // d) #5  0xffffe410 in __kernel_vsyscall ()
-
-    // try a) cap #number(1), address(2), function(3), filename(4), linenumber(5)
-    static const QRegularExpression rxa(QStringLiteral("^#(\\d+)\\s+(0x\\w+)\\s+in\\s+(.+)\\s+at\\s+(.+):(\\d+)$"));
-    QRegularExpressionMatch match = rxa.match(line);
-    if (match.hasMatch()) {
-        BtInfo info;
-        info.original = line;
-        info.filename = match.captured(4);
-        info.function = match.captured(3);
-        info.address = match.captured(2);
-        info.line = match.captured(5).toInt();
-        info.step = match.captured(1).toInt();
-        info.type = BtInfo::Source;
-        return info;
-    }
-
-    // try b) cap #number(1), address(2), function(3), lib(4)
-    static const QRegularExpression rxb(QStringLiteral("^#(\\d+)\\s+(0x\\w+)\\s+in\\s+(.+)\\s+from\\s+(.+)$"));
-    match = rxb.match(line);
-    if (match.hasMatch()) {
-        BtInfo info;
-        info.original = line;
-        info.filename = match.captured(4);
-        info.function = match.captured(3);
-        info.address = match.captured(2);
-        info.line = -1;
-        info.step = match.captured(1).toInt();
-        info.type = BtInfo::Lib;
-        return info;
-    }
-
-    // try c) #41 0x0805e690 in ?? ()
-    static const QRegularExpression rxc(QStringLiteral("^#(\\d+)\\s+(0x\\w+)\\s+in\\s+\\?\\?\\s+\\(\\)$"));
-    match = rxc.match(line);
-    if (match.hasMatch()) {
-        BtInfo info;
-        info.original = line;
-        info.filename = QString();
-        info.function = QString();
-        info.address = match.captured(2);
-        info.line = -1;
-        info.step = match.captured(1).toInt();
-        info.type = BtInfo::Unknown;
-        return info;
-    }
-
-    // try d) #5  0xffffe410 in __kernel_vsyscall ()
-    static const QRegularExpression rxd(QStringLiteral("^#(\\d+)\\s+(0x\\w+)\\s+in\\s+(.+)$"));
-    match = rxd.match(line);
-    if (match.hasMatch()) {
-        BtInfo info;
-        info.original = line;
-        info.filename = QString();
-        info.function = match.captured(3);
-        info.address = match.captured(2);
-        info.line = -1;
-        info.step = match.captured(1).toInt();
-        info.type = BtInfo::Unknown;
-        return info;
-    }
-
-    qDebug("Unknown backtrace line: %ls", qUtf16Printable(line));
-
-    BtInfo info;
-    info.type = BtInfo::Invalid;
-    return info;
-}
-
-QList<BtInfo> KateBtParser::parseBacktrace(const QString &bt)
-{
-    QStringList l = bt.split(eolDelimiter(bt), Qt::SkipEmptyParts);
-
-    l = normalizeBt(l);
-
-    QList<BtInfo> btList;
-    for (int i = 0; i < l.size(); ++i) {
-        BtInfo info = parseBtLine(l[i]);
-        if (info.type != BtInfo::Invalid) {
-            btList.append(parseBtLine(l[i]));
-        }
-    }
-
-    return btList;
-}
-
-// kate: space-indent on; indent-width 4; replace-tabs on;
diff --git a/addons/backtracebrowser/btparser.h b/addons/backtracebrowser/btparser.h
deleted file mode 100644
index 60771c5ae3..0000000000
--- a/addons/backtracebrowser/btparser.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* This file is part of the KDE project
-   SPDX-FileCopyrightText: 2008-2014 Dominik Haumann <dhaumann kde org>
-
-   SPDX-License-Identifier: LGPL-2.0-only
-*/
-
-#pragma once
-
-#include <QList>
-#include <QString>
-
-class BtInfo
-{
-public:
-    enum Type {
-        Source = 0,
-        Lib,
-        Unknown,
-        Invalid
-    };
-
-    /**
-     * Default constructor => invalid element
-     */
-    BtInfo() = default;
-
-public:
-    QString original;
-    QString filename;
-    QString function;
-    QString address;
-    int step = -1;
-    int line = -1;
-
-    Type type = Invalid;
-};
-
-namespace KateBtParser
-{
-QList<BtInfo> parseBacktrace(const QString &bt);
-
-}
-
-// kate: space-indent on; indent-width 4; replace-tabs on;
diff --git a/addons/backtracebrowser/katebacktracebrowser.cpp b/addons/backtracebrowser/katebacktracebrowser.cpp
deleted file mode 100644
index c94d144a71..0000000000
--- a/addons/backtracebrowser/katebacktracebrowser.cpp
+++ /dev/null
@@ -1,390 +0,0 @@
-/* This file is part of the KDE project
-   SPDX-FileCopyrightText: 2008-2014 Dominik Haumann <dhaumann kde org>
-
-   SPDX-License-Identifier: LGPL-2.0-only
-*/
-
-// BEGIN Includes
-#include "katebacktracebrowser.h"
-
-#include "btparser.h"
-
-#include <KConfigGroup>
-#include <KLineEdit>
-#include <KLocalizedString> // i18n
-#include <KPluginFactory>
-#include <KSharedConfig>
-
-#include <KTextEditor/Cursor>
-#include <KTextEditor/View>
-
-#include <QClipboard>
-#include <QDialogButtonBox>
-#include <QDir>
-#include <QFile>
-#include <QFileDialog>
-#include <QFileInfo>
-#include <QStandardPaths>
-#include <QTreeWidget>
-#include <QUrl>
-// END Includes
-
-K_PLUGIN_FACTORY_WITH_JSON(KateBtBrowserFactory, "katebacktracebrowserplugin.json", registerPlugin<KateBtBrowserPlugin>();)
-
-KateBtBrowserPlugin *KateBtBrowserPlugin::s_self = nullptr;
-
-QStringList fileExtensions()
-{
-    return QStringList{QStringLiteral("*.cpp"),
-                       QStringLiteral("*.cxx"),
-                       QStringLiteral("*.c"),
-                       QStringLiteral("*.cc"),
-                       QStringLiteral("*.h"),
-                       QStringLiteral("*.hpp"),
-                       QStringLiteral("*.hxx"),
-                       QStringLiteral("*.moc")};
-}
-
-KateBtBrowserPlugin::KateBtBrowserPlugin(QObject *parent)
-    : KTextEditor::Plugin(parent)
-    , indexer(&db)
-{
-    s_self = this;
-    db.loadFromFile(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QStringLiteral("/katebtbrowser/backtracedatabase.db"));
-}
-
-KateBtBrowserPlugin::~KateBtBrowserPlugin()
-{
-    if (indexer.isRunning()) {
-        indexer.cancel();
-        indexer.wait();
-    }
-
-    const QString path = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QStringLiteral("/katebtbrowser");
-    QDir().mkpath(path);
-    db.saveToFile(path + QStringLiteral("/backtracedatabase.db"));
-
-    s_self = nullptr;
-}
-
-KateBtBrowserPlugin &KateBtBrowserPlugin::self()
-{
-    return *s_self;
-}
-
-QObject *KateBtBrowserPlugin::createView(KTextEditor::MainWindow *mainWindow)
-{
-    auto *view = new KateBtBrowserPluginView(this, mainWindow);
-    return view;
-}
-
-KateBtDatabase &KateBtBrowserPlugin::database()
-{
-    return db;
-}
-
-BtFileIndexer &KateBtBrowserPlugin::fileIndexer()
-{
-    return indexer;
-}
-
-void KateBtBrowserPlugin::startIndexer()
-{
-    if (indexer.isRunning()) {
-        indexer.cancel();
-        indexer.wait();
-    }
-    KConfigGroup cg(KSharedConfig::openConfig(), QStringLiteral("backtracebrowser"));
-    indexer.setSearchPaths(cg.readEntry("search-folders", QStringList()));
-    indexer.setFilter(cg.readEntry("file-extensions", fileExtensions()));
-    indexer.start();
-    Q_EMIT newStatus(i18n("Indexing files..."));
-}
-
-int KateBtBrowserPlugin::configPages() const
-{
-    return 1;
-}
-
-KTextEditor::ConfigPage *KateBtBrowserPlugin::configPage(int number, QWidget *parent)
-{
-    if (number == 0) {
-        return new KateBtConfigWidget(parent);
-    }
-
-    return nullptr;
-}
-
-KateBtBrowserPluginView::KateBtBrowserPluginView(KateBtBrowserPlugin *plugin, KTextEditor::MainWindow *mainWindow)
-    : QObject(mainWindow)
-{
-    // init console
-    QWidget *toolview = mainWindow->createToolView(plugin,
-                                                   QStringLiteral("kate_private_plugin_katebacktracebrowserplugin"),
-                                                   KTextEditor::MainWindow::Bottom,
-                                                   QIcon::fromTheme(QStringLiteral("tools-report-bug")),
-                                                   i18n("Backtrace"));
-    m_widget = new KateBtBrowserWidget(mainWindow, toolview);
-
-    connect(plugin, &KateBtBrowserPlugin::newStatus, m_widget, &KateBtBrowserWidget::setStatus);
-}
-
-KateBtBrowserPluginView::~KateBtBrowserPluginView()
-{
-    // cleanup, kill toolview + widget
-    auto toolview = m_widget->parent();
-    delete m_widget;
-    delete toolview;
-}
-
-KateBtBrowserWidget::KateBtBrowserWidget(KTextEditor::MainWindow *mainwindow, QWidget *parent)
-    : QWidget(parent)
-    , mw(mainwindow)
-{
-    setupUi(this);
-
-    timer.setSingleShot(true);
-    connect(&timer, &QTimer::timeout, this, &KateBtBrowserWidget::clearStatus);
-    connect(btnBacktrace, &QPushButton::clicked, this, &KateBtBrowserWidget::loadFile);
-    connect(btnClipboard, &QPushButton::clicked, this, &KateBtBrowserWidget::loadClipboard);
-    connect(btnConfigure, &QPushButton::clicked, this, &KateBtBrowserWidget::configure);
-    connect(lstBacktrace, &QTreeWidget::itemActivated, this, &KateBtBrowserWidget::itemActivated);
-}
-
-KateBtBrowserWidget::~KateBtBrowserWidget()
-{
-}
-
-void KateBtBrowserWidget::loadFile()
-{
-    QString url = QFileDialog::getOpenFileName(mw->window(), i18n("Load Backtrace"));
-    QFile f(url);
-    if (f.open(QIODevice::ReadOnly | QIODevice::Text)) {
-        QString str = QString::fromUtf8(f.readAll());
-        loadBacktrace(str);
-    }
-}
-
-void KateBtBrowserWidget::loadClipboard()
-{
-    QString bt = QApplication::clipboard()->text();
-    loadBacktrace(bt);
-}
-
-void KateBtBrowserWidget::loadBacktrace(const QString &bt)
-{
-    const QList<BtInfo> infos = KateBtParser::parseBacktrace(bt);
-
-    lstBacktrace->clear();
-    for (const BtInfo &info : infos) {
-        auto *it = new QTreeWidgetItem(lstBacktrace);
-        it->setData(0, Qt::DisplayRole, QString::number(info.step));
-        it->setData(0, Qt::ToolTipRole, QString::number(info.step));
-        QFileInfo fi(info.filename);
-        it->setData(1, Qt::DisplayRole, fi.fileName());
-        it->setData(1, Qt::ToolTipRole, info.filename);
-
-        if (info.type == BtInfo::Source) {
-            it->setData(2, Qt::DisplayRole, QString::number(info.line));
-            it->setData(2, Qt::ToolTipRole, QString::number(info.line));
-            it->setData(2, Qt::UserRole, QVariant(info.line));
-        }
-        it->setData(3, Qt::DisplayRole, info.function);
-        it->setData(3, Qt::ToolTipRole, info.function);
-
-        lstBacktrace->addTopLevelItem(it);
-    }
-    lstBacktrace->resizeColumnToContents(0);
-    lstBacktrace->resizeColumnToContents(1);
-    lstBacktrace->resizeColumnToContents(2);
-
-    if (lstBacktrace->topLevelItemCount()) {
-        setStatus(i18n("Loading backtrace succeeded"));
-    } else {
-        setStatus(i18n("Loading backtrace failed"));
-    }
-}
-
-void KateBtBrowserWidget::configure()
-{
-    KateBtConfigDialog dlg(mw->window());
-    dlg.exec();
-}
-
-void KateBtBrowserWidget::itemActivated(QTreeWidgetItem *item, int column)
-{
-    Q_UNUSED(column);
-
-    QVariant variant = item->data(2, Qt::UserRole);
-    if (variant.isValid()) {
-        int line = variant.toInt();
-        QString file = QDir::fromNativeSeparators(item->data(1, Qt::ToolTipRole).toString());
-        file = QDir::cleanPath(file);
-
-        QString path = file;
-        // if not absolute path + exists, try to find with index
-        if (!QFile::exists(path)) {
-            // try to match the backtrace forms ".*/foo/bar.txt" and "foo/bar.txt"
-            static const QRegularExpression rx1(QStringLiteral("/([^/]+)/([^/]+)$"));
-            QRegularExpressionMatch match = rx1.match(file);
-            if (match.hasMatch()) {
-                file = match.captured(1) + u'/' + match.captured(2);
-            } else {
-                static const QRegularExpression rx2(QStringLiteral("([^/]+)/([^/]+)$"));
-                if (rx2.match(file).hasMatch()) {
-                    // file is of correct form
-                } else {
-                    qDebug("file pattern did not match: %ls", qUtf16Printable(file));
-                    setStatus(i18n("File not found: %1", file));
-                    return;
-                }
-            }
-            path = KateBtBrowserPlugin::self().database().value(file);
-        }
-
-        if (!path.isEmpty() && QFile::exists(path)) {
-            KTextEditor::View *kv = mw->openUrl(QUrl::fromLocalFile(path));
-            kv->setCursorPosition(KTextEditor::Cursor(line - 1, 0));
-            kv->setFocus();
-            setStatus(i18n("Opened file: %1", file));
-        }
-    } else {
-        setStatus(i18n("No debugging information available"));
-    }
-}
-
-void KateBtBrowserWidget::setStatus(const QString &status)
-{
-    lblStatus->setText(status);
-    timer.start(10 * 1000);
-}
-
-void KateBtBrowserWidget::clearStatus()
-{
-    lblStatus->setText(QString());
-}
-
-KateBtConfigWidget::KateBtConfigWidget(QWidget *parent)
-    : KTextEditor::ConfigPage(parent)
-{
-    setupUi(this);
-    edtUrl->setMode(KFile::Directory);
-    edtUrl->setUrl(QUrl(QDir().absolutePath()));
-
-    reset();
-
-    connect(btnAdd, &QPushButton::clicked, this, &KateBtConfigWidget::add);
-    connect(btnRemove, &QPushButton::clicked, this, &KateBtConfigWidget::remove);
-    connect(edtExtensions, &QLineEdit::textChanged, this, &KateBtConfigWidget::textChanged);
-
-    m_changed = false;
-}
-
-KateBtConfigWidget::~KateBtConfigWidget() = default;
-
-QString KateBtConfigWidget::name() const
-{
-    return i18n("Backtrace");
-}
-
-QString KateBtConfigWidget::fullName() const
-{
-    return i18n("Backtrace Settings");
-}
-
-QIcon KateBtConfigWidget::icon() const
-{
-    return QIcon::fromTheme(QStringLiteral("tools-report-bug"));
-}
-
-void KateBtConfigWidget::apply()
-{
-    if (m_changed) {
-        QStringList sl;
-        for (int i = 0; i < lstFolders->count(); ++i) {
-            sl << lstFolders->item(i)->data(Qt::DisplayRole).toString();
-        }
-        KConfigGroup cg(KSharedConfig::openConfig(), QStringLiteral("backtracebrowser"));
-        cg.writeEntry("search-folders", sl);
-
-        QString filter = edtExtensions->text();
-        filter.replace(u',', u' ').replace(u';', u' ');
-        cg.writeEntry("file-extensions", filter.split(u' ', Qt::SkipEmptyParts));
-
-        KateBtBrowserPlugin::self().startIndexer();
-        m_changed = false;
-    }
-}
-
-void KateBtConfigWidget::reset()
-{
-    KConfigGroup cg(KSharedConfig::openConfig(), QStringLiteral("backtracebrowser"));
-    lstFolders->clear();
-    lstFolders->addItems(cg.readEntry("search-folders", QStringList()));
-    edtExtensions->setText(cg.readEntry("file-extensions", fileExtensions()).join(u' '));
-}
-
-void KateBtConfigWidget::defaults()
-{
-    lstFolders->clear();
-    edtExtensions->setText(fileExtensions().join(u' '));
-
-    m_changed = true;
-}
-
-void KateBtConfigWidget::add()
-{
-    QDir url(edtUrl->lineEdit()->text());
-    if (url.exists()) {
-        if (lstFolders->findItems(url.absolutePath(), Qt::MatchExactly).empty()) {
-            lstFolders->addItem(url.absolutePath());
-            Q_EMIT changed();
-            m_changed = true;
-        }
-    }
-}
-
-void KateBtConfigWidget::remove()
-{
-    QListWidgetItem *item = lstFolders->currentItem();
-    if (item) {
-        delete item;
-        Q_EMIT changed();
-        m_changed = true;
-    }
-}
-
-void KateBtConfigWidget::textChanged()
-{
-    Q_EMIT changed();
-    m_changed = true;
-}
-
-KateBtConfigDialog::KateBtConfigDialog(QWidget *parent)
-    : QDialog(parent)
-{
-    setWindowTitle(i18n("Backtrace Browser Settings"));
-
-    m_configWidget = new KateBtConfigWidget(this);
-
-    auto *layout = new QVBoxLayout(this);
-
-    auto *box = new QDialogButtonBox(this);
-    box->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
-
-    layout->addWidget(m_configWidget);
-    layout->addWidget(box);
-
-    connect(this, &KateBtConfigDialog::accepted, m_configWidget, &KateBtConfigWidget::apply);
-    connect(box, &QDialogButtonBox::accepted, this, &KateBtConfigDialog::accept);
-    connect(box, &QDialogButtonBox::rejected, this, &KateBtConfigDialog::reject);
-}
-
-KateBtConfigDialog::~KateBtConfigDialog()
-{
-}
-
-#include "katebacktracebrowser.moc"
-#include "moc_katebacktracebrowser.cpp"
-
-// kate: space-indent on; indent-width 4; replace-tabs on;
diff --git a/addons/backtracebrowser/katebacktracebrowser.h b/addons/backtracebrowser/katebacktracebrowser.h
deleted file mode 100644
index 1a396b5199..0000000000
--- a/addons/backtracebrowser/katebacktracebrowser.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/* This file is part of the KDE project
-   SPDX-FileCopyrightText: 2008-2014 Dominik Haumann <dhaumann kde org>
-
-   SPDX-License-Identifier: LGPL-2.0-only
-*/
-
-#pragma once
-
-#include <KTextEditor/Plugin>
-#include <ktexteditor/configpage.h>
-#include <ktexteditor/mainwindow.h>
-
-#include "btdatabase.h"
-#include "btfileindexer.h"
-#include "ui_btbrowserwidget.h"
-#include "ui_btconfigwidget.h"
-
-#include <QDialog>
-#include <QString>
-#include <QTimer>
-
-class KateBtConfigWidget;
-class KateBtBrowserWidget;
-
-class KateBtBrowserPlugin : public KTextEditor::Plugin
-{
-    Q_OBJECT
-
-public:
-    explicit KateBtBrowserPlugin(QObject *parent);
-    ~KateBtBrowserPlugin() override;
-
-    static KateBtBrowserPlugin &self();
-
-    QObject *createView(KTextEditor::MainWindow *mainWindow) override;
-
-    KateBtDatabase &database();
-    BtFileIndexer &fileIndexer();
-
-    void startIndexer();
-
-Q_SIGNALS:
-    void newStatus(const QString &);
-
-public:
-    int configPages() const override;
-    KTextEditor::ConfigPage *configPage(int number, QWidget *parent = nullptr) override;
-
-    //
-    // private data
-    //
-private:
-    KateBtDatabase db;
-    BtFileIndexer indexer;
-    static KateBtBrowserPlugin *s_self;
-};
-
-class KateBtBrowserPluginView : public QObject
-{
-    Q_OBJECT
-
-public:
-    KateBtBrowserPluginView(KateBtBrowserPlugin *plugin, KTextEditor::MainWindow *mainWindow);
-
-    /**
-     * Virtual destructor.
-     */
-    ~KateBtBrowserPluginView() override;
-
-private:
-    KateBtBrowserWidget *m_widget;
-};
-
-class KateBtBrowserWidget : public QWidget, public Ui::BtBrowserWidget
-{
-    Q_OBJECT
-
-public:
-    KateBtBrowserWidget(KTextEditor::MainWindow *mainwindow, QWidget *parent);
-
-    ~KateBtBrowserWidget() override;
-
-    void loadBacktrace(const QString &bt);
-
-public Q_SLOTS:
-    void loadFile();
-    void loadClipboard();
-    void configure();
-    void clearStatus();
-    void setStatus(const QString &status);
-
-private Q_SLOTS:
-    void itemActivated(QTreeWidgetItem *item, int column);
-
-private:
-    KTextEditor::MainWindow *mw;
-    QTimer timer;
-};
-
-class KateBtConfigWidget : public KTextEditor::ConfigPage, private Ui::BtConfigWidget
-{
-    Q_OBJECT
-public:
-    explicit KateBtConfigWidget(QWidget *parent = nullptr);
-    ~KateBtConfigWidget() override;
-
-    QString name() const override;
-    QString fullName() const override;
-    QIcon icon() const override;
-
-public Q_SLOTS:
-    void apply() override;
-    void reset() override;
-    void defaults() override;
-
-private Q_SLOTS:
-    void add();
-    void remove();
-    void textChanged();
-
-private:
-    bool m_changed;
-};
-
-class KateBtConfigDialog : public QDialog
-{
-    Q_OBJECT
-public:
-    KateBtConfigDialog(QWidget *parent = nullptr);
-    ~KateBtConfigDialog() override;
-
-private:
-    KateBtConfigWidget *m_configWidget;
-};
-
-// kate: space-indent on; indent-width 4; replace-tabs on;
diff --git a/addons/backtracebrowser/katebacktracebrowserplugin.json b/addons/backtracebrowser/katebacktracebrowserplugin.json
deleted file mode 100644
index 27f35bf21f..0000000000
--- a/addons/backtracebrowser/katebacktracebrowserplugin.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
-    "KPlugin": {
-        "Description": "C/C++ Backtrace navigation tool view",
-        "Description[ar]": "عرض أداة التنقل التتبع الخلفي في لغة سي/سي++",
-        "Description[az]": "C/C++ geri izləmə naviqasiya aləti görünüşü",
-        "Description[bg]": "Изглед с инструменти за навигация на обратно проследяване на C/C++",
-        "Description[ca@valencia]": "Vista d'eina del navegador per a la traça inversa de C/C++",
-        "Description[ca]": "Vista d'eina del navegador per a la traça inversa de C/C++",
-        "Description[cs]": "Nástroj pro procházení backtrace v C/C++",
-        "Description[de]": "Ansicht zur Navigation in C/C++ Backtraces",
-        "Description[el]": "Προβολή εργαλείου πλοήγησης για ανίχνευση προς τα πίσω σε C/C++",
-        "Description[en_GB]": "C/C++ Backtrace navigation tool view",
-        "Description[eo]": "Perspektivo de C/C++ retrospura navigilo",
-        "Description[es]": "Vista de la herramienta de navegación por trazas inversas de C/C++",
-        "Description[eu]": "C/C++ aztarnetan nabigatzeko tresnaren ikuspegia",
-        "Description[fi]": "C/C++-jäljitysnavigointityökalunäkymä",
-        "Description[fr]": "Vue des outils de navigation pour les piles d'appels C / C++",
-        "Description[ga]": "Amharc uirlis nascleanúna Cúl-rianaithe C/C++",
-        "Description[gl]": "Vista da ferramenta de navegación por trazados inversos de C e C++.",
-        "Description[he]": "תצוגת כלי ניווט במעקבי קריאות של C‏/C++‎",
-        "Description[hu]": "C/C++ visszakövetési navigációs eszköznézet",
-        "Description[ia]": "Vista de instrumento de navigation de retraciamento in C/C++",
-        "Description[ie]": "Utensile de navigation de backtraces de C/C++",
-        "Description[it]": "Vista dello strumento di navigazione di backtrace C/C++",
-        "Description[ka]": "C/C++ უკუტრეისის ნავიგაციის ხელსაწყოს ხედი",
-        "Description[ko]": "C/C++ 역추적 탐색기 도구 보기",
-        "Description[lv]": "C/C++ atpakaļceļa navigācijas rīka skats",
-        "Description[my]": "C/C++ နောက်ကြောင်းလိုက်ကိရိယာမြင်ကွင်း",
-        "Description[nb]": "Navigasjonsverktøy for C/C++-tilbakesporing",
-        "Description[nl]": "C/C++ Backtrace hulpmiddel voor navigatieweergave",
-        "Description[nn]": "Navigasjonsverktøy for C-/C++-tilbakeloggar",
-        "Description[pl]": "Narzędzie do poruszania się po śladzie wykonywania C/C++",
-        "Description[pt]": "Ferramenta de navegação de rastreio de pilha de C/C++",
-        "Description[pt_BR]": "Visualização da ferramenta de navegação Backtrace C/C++",
-        "Description[ru]": "Панель навигации по стеку вызовов C/C++",
-        "Description[sa]": "C/C++ Backtrace नेविगेशन टूल दृश्य",
-        "Description[sk]": "Zobrazenie navigačného nástroja C/C++ Backtrace",
-        "Description[sl]": "Orodje za navigacijo pogleda nazaj C/C++",
-        "Description[sv]": "C/C++ navigeringsverktyg med vy av bakåtspårning",
-        "Description[tr]": "C/C++ Geri iz dolaşım araç görünümü",
-        "Description[uk]": "Панель навігації зворотним трасуванням C++",
-        "Description[vi]": "Khung xem công cụ \"điều hướng vết ngăn xếp C/C++\"",
-        "Description[zh_CN]": "C/C++ 回溯导航工具视图",
-        "Description[zh_TW]": "C/C++ 回溯追蹤瀏覽工具檢視",
-        "Name": "Backtrace Browser",
-        "Name[ar]": "متصفّح التّتبّع الخلفيّ",
-        "Name[az]": "Geri izləmə bələdçisi",
-        "Name[bg]": "Проследяване на браузер",
-        "Name[ca@valencia]": "Navegador de traça inversa",
-        "Name[ca]": "Navegador de traça inversa",
-        "Name[cs]": "Prohlížeč backtrace",
-        "Name[de]": "Backtrace-Browser",
-        "Name[el]": "Περιηγητής αντίστροφης ιχνηλάτησης",
-        "Name[en_GB]": "Backtrace Browser",
-        "Name[eo]": "Backtrace Foliumilo",
-        "Name[es]": "Explorador de trazas inversas",
-        "Name[eu]": "Aztarna arakatzailea",
-        "Name[fi]": "Jäljitysselain",
-        "Name[fr]": "Explorateur de piles d'appels",
-        "Name[ga]": "Brabhsálaí Cúl-Rianaithe",
-        "Name[gl]": "Navegador de trazados inversos",
-        "Name[he]": "דפדפן מעקבי קריאות",
-        "Name[hu]": "Visszakövetési böngésző",
-        "Name[ia]": "Backtrace Browser (Navigator de retro tracia)",
-        "Name[ie]": "Explorator de backtraces",
-        "Name[it]": "Navigatore di backtrace",
-        "Name[ka]": "გამოძახებების სტეკის დათვალიერება",
-        "Name[ko]": "역추적 탐색기",
-        "Name[lv]": "Atpakaļceļa pārlūks",
-        "Name[my]": "နောက်ကြောင်းလိုက်ဘရောက်ဇာ",
-        "Name[nb]": "Tilbakesporingsutforsker",
-        "Name[nl]": "Backtrace browser",
-        "Name[nn]": "Tilbakelogg-visar",
-        "Name[pl]": "Przeglądarka śladu",
-        "Name[pt]": "Navegador de rastreio de pilha",
-        "Name[pt_BR]": "Navegador de backtrace",
-        "Name[ru]": "Просмотр стека вызовов",
-        "Name[sa]": "Backtrace ब्राउज़र",
-        "Name[sk]": "Prehliadač Backtrace",
-        "Name[sl]": "Brskalnik sledenja nazaj",
-        "Name[sv]": "Bläddring i bakåtspårning",
-        "Name[tr]": "Geri İz Tarayıcısı",
-        "Name[uk]": "Переглядач зворотного трасування",
-        "Name[vi]": "Trình duyệt vết ngăn xếp",
-        "Name[zh_CN]": "回溯跟踪浏览器",
-        "Name[zh_TW]": "回溯追蹤瀏覽器"
-    }
-}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.