From fca33684a73c41a908d4c168954e60a80e621bcd Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 17 Jan 2024 10:27:33 +0100 Subject: [PATCH] TextEditor: Simplify setup of line number filter Change-Id: Ida977fc959f3fe6052151ba8e2461a64699d0a41 Reviewed-by: Jarek Kobus Reviewed-by: --- src/plugins/texteditor/CMakeLists.txt | 2 +- src/plugins/texteditor/linenumberfilter.cpp | 112 ++++++++++-------- src/plugins/texteditor/linenumberfilter.h | 9 +- .../texteditor/plaintexteditorfactory.cpp | 1 - .../texteditor/snippets/snippetprovider.cpp | 2 - src/plugins/texteditor/texteditor.qbs | 1 - .../texteditor/texteditoractionhandler.cpp | 1 - src/plugins/texteditor/texteditorplugin.cpp | 9 +- src/plugins/texteditor/texteditorplugin.h | 13 -- src/plugins/texteditor/textmark.cpp | 1 - 10 files changed, 68 insertions(+), 83 deletions(-) delete mode 100644 src/plugins/texteditor/texteditorplugin.h diff --git a/src/plugins/texteditor/CMakeLists.txt b/src/plugins/texteditor/CMakeLists.txt index b13823b6ce1..886b98390ce 100644 --- a/src/plugins/texteditor/CMakeLists.txt +++ b/src/plugins/texteditor/CMakeLists.txt @@ -108,7 +108,7 @@ add_qtc_plugin(TextEditor texteditoractionhandler.cpp texteditoractionhandler.h texteditorconstants.cpp texteditorconstants.h texteditoroverlay.cpp texteditoroverlay.h - texteditorplugin.cpp texteditorplugin.h + texteditorplugin.cpp texteditorsettings.cpp texteditorsettings.h textindenter.cpp textindenter.h textmark.cpp textmark.h diff --git a/src/plugins/texteditor/linenumberfilter.cpp b/src/plugins/texteditor/linenumberfilter.cpp index 0ac0a83ee68..b532313330c 100644 --- a/src/plugins/texteditor/linenumberfilter.cpp +++ b/src/plugins/texteditor/linenumberfilter.cpp @@ -12,58 +12,74 @@ using namespace Utils; namespace TextEditor::Internal { -LineNumberFilter::LineNumberFilter() +class LineNumberFilter final : public Core::ILocatorFilter { - setId("Line in current document"); - setDisplayName(Tr::tr("Line in Current Document")); - setDescription(Tr::tr("Jumps to the given line in the current document.")); - setDefaultSearchText(Tr::tr(":")); - setPriority(High); - setDefaultShortcutString("l"); - setDefaultIncludedByDefault(true); +public: + LineNumberFilter() + { + setId("Line in current document"); + setDisplayName(Tr::tr("Line in Current Document")); + setDescription(Tr::tr("Jumps to the given line in the current document.")); + setDefaultSearchText(Tr::tr(":")); + setPriority(High); + setDefaultShortcutString("l"); + setDefaultIncludedByDefault(true); + } + +private: + LocatorMatcherTasks matchers() final + { + using namespace Tasking; + + Storage storage; + + const auto onSetup = [storage] { + const QStringList lineAndColumn = storage->input().split(':'); + int sectionCount = lineAndColumn.size(); + int line = 0; + int column = 0; + bool ok = false; + if (sectionCount > 0) + line = lineAndColumn.at(0).toInt(&ok); + if (ok && sectionCount > 1) + column = lineAndColumn.at(1).toInt(&ok); + if (!ok) + return; + if (EditorManager::currentEditor() && (line > 0 || column > 0)) { + QString text; + if (line > 0 && column > 0) + text = Tr::tr("Line %1, Column %2").arg(line).arg(column); + else if (line > 0) + text = Tr::tr("Line %1").arg(line); + else + text = Tr::tr("Column %1").arg(column); + LocatorFilterEntry entry; + entry.displayName = text; + entry.acceptor = [line, targetColumn = column - 1] { + IEditor *editor = EditorManager::currentEditor(); + if (!editor) + return AcceptResult(); + EditorManager::addCurrentPositionToNavigationHistory(); + editor->gotoLine(line < 1 ? editor->currentLine() : line, targetColumn); + EditorManager::activateEditor(editor); + return AcceptResult(); + }; + storage->reportOutput({entry}); + } + }; + return {{Sync(onSetup), storage}}; + } +}; + +ILocatorFilter *lineNumberFilter() +{ + static LineNumberFilter theLineNumberFilter; + return &theLineNumberFilter; } -LocatorMatcherTasks LineNumberFilter::matchers() +void setupLineNumberFilter() { - using namespace Tasking; - - Storage storage; - - const auto onSetup = [storage] { - const QStringList lineAndColumn = storage->input().split(':'); - int sectionCount = lineAndColumn.size(); - int line = 0; - int column = 0; - bool ok = false; - if (sectionCount > 0) - line = lineAndColumn.at(0).toInt(&ok); - if (ok && sectionCount > 1) - column = lineAndColumn.at(1).toInt(&ok); - if (!ok) - return; - if (EditorManager::currentEditor() && (line > 0 || column > 0)) { - QString text; - if (line > 0 && column > 0) - text = Tr::tr("Line %1, Column %2").arg(line).arg(column); - else if (line > 0) - text = Tr::tr("Line %1").arg(line); - else - text = Tr::tr("Column %1").arg(column); - LocatorFilterEntry entry; - entry.displayName = text; - entry.acceptor = [line, targetColumn = column - 1] { - IEditor *editor = EditorManager::currentEditor(); - if (!editor) - return AcceptResult(); - EditorManager::addCurrentPositionToNavigationHistory(); - editor->gotoLine(line < 1 ? editor->currentLine() : line, targetColumn); - EditorManager::activateEditor(editor); - return AcceptResult(); - }; - storage->reportOutput({entry}); - } - }; - return {{Sync(onSetup), storage}}; + (void) lineNumberFilter(); // Instantiate it. } } // namespace TextEditor::Internal diff --git a/src/plugins/texteditor/linenumberfilter.h b/src/plugins/texteditor/linenumberfilter.h index ec72c1bb029..6f943ab9275 100644 --- a/src/plugins/texteditor/linenumberfilter.h +++ b/src/plugins/texteditor/linenumberfilter.h @@ -7,13 +7,8 @@ namespace TextEditor::Internal { -class LineNumberFilter : public Core::ILocatorFilter -{ -public: - LineNumberFilter(); +Core::ILocatorFilter *lineNumberFilter(); -private: - Core::LocatorMatcherTasks matchers() final; -}; +void setupLineNumberFilter(); } // namespace TextEditor::Internal diff --git a/src/plugins/texteditor/plaintexteditorfactory.cpp b/src/plugins/texteditor/plaintexteditorfactory.cpp index fd6b8d96b9b..e1c85bd466a 100644 --- a/src/plugins/texteditor/plaintexteditorfactory.cpp +++ b/src/plugins/texteditor/plaintexteditorfactory.cpp @@ -7,7 +7,6 @@ #include "texteditor.h" #include "texteditoractionhandler.h" #include "texteditorconstants.h" -#include "texteditorplugin.h" #include "texteditorsettings.h" #include "textindenter.h" diff --git a/src/plugins/texteditor/snippets/snippetprovider.cpp b/src/plugins/texteditor/snippets/snippetprovider.cpp index a6ee7f1542f..18638529fe4 100644 --- a/src/plugins/texteditor/snippets/snippetprovider.cpp +++ b/src/plugins/texteditor/snippets/snippetprovider.cpp @@ -3,8 +3,6 @@ #include "snippetprovider.h" -#include - #include using namespace TextEditor; diff --git a/src/plugins/texteditor/texteditor.qbs b/src/plugins/texteditor/texteditor.qbs index 7bbe6716c85..821d9a4a479 100644 --- a/src/plugins/texteditor/texteditor.qbs +++ b/src/plugins/texteditor/texteditor.qbs @@ -145,7 +145,6 @@ QtcPlugin { "texteditoroverlay.cpp", "texteditoroverlay.h", "texteditorplugin.cpp", - "texteditorplugin.h", "texteditorsettings.cpp", "texteditorsettings.h", "textindenter.cpp", diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp index 0ad6a126358..2e48670bf4d 100644 --- a/src/plugins/texteditor/texteditoractionhandler.cpp +++ b/src/plugins/texteditor/texteditoractionhandler.cpp @@ -7,7 +7,6 @@ #include "displaysettings.h" #include "fontsettings.h" #include "linenumberfilter.h" -#include "texteditorplugin.h" #include "texteditortr.h" #include "texteditorsettings.h" diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index f5272a81a29..c416434693f 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -1,8 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 -#include "texteditorplugin.h" - #include "bookmarkfilter.h" #include "bookmarkmanager.h" #include "findincurrentfile.h" @@ -103,7 +101,6 @@ public: FilePath m_marginActionFileName; TextEditorSettings settings; - LineNumberFilter lineNumberFilter; // Goto line functionality for quick open FindInFiles findInFilesFilter; FindInCurrentFile findInCurrentFileFilter; @@ -303,6 +300,7 @@ void TextEditorPlugin::initialize() setupTextMarkRegistry(this); setupOutlineFactory(); + setupLineNumberFilter(); // Goto line functionality for quick open d = new TextEditorPluginPrivate; @@ -449,11 +447,6 @@ void TextEditorPlugin::extensionsInitialized() }); } -LineNumberFilter *lineNumberFilter() -{ - return &m_instance->d->lineNumberFilter; -} - ExtensionSystem::IPlugin::ShutdownFlag TextEditorPlugin::aboutToShutdown() { HighlighterHelper::handleShutdown(); diff --git a/src/plugins/texteditor/texteditorplugin.h b/src/plugins/texteditor/texteditorplugin.h deleted file mode 100644 index 3a3f61fb46d..00000000000 --- a/src/plugins/texteditor/texteditorplugin.h +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include - -namespace TextEditor::Internal { - -class LineNumberFilter; -LineNumberFilter *lineNumberFilter(); - -} // TextEditor::Internal diff --git a/src/plugins/texteditor/textmark.cpp b/src/plugins/texteditor/textmark.cpp index d988fdb5c23..6a0646972be 100644 --- a/src/plugins/texteditor/textmark.cpp +++ b/src/plugins/texteditor/textmark.cpp @@ -6,7 +6,6 @@ #include "fontsettings.h" #include "textdocument.h" #include "texteditor.h" -#include "texteditorplugin.h" #include "texteditortr.h" #include