From 8af6d16b6c2a0a08ee4f49abdfc7b0a503276bde Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 28 Sep 2023 13:22:14 +0200 Subject: [PATCH] TextEditor: Hide LineNumberFilter implementation One of the two non-standard items exposed in the TextEditorPlugin class interface. Change-Id: I89755c6a2b168f31b69d3904d6d043273b462ea6 Reviewed-by: David Schulz --- src/plugins/texteditor/linenumberfilter.cpp | 108 ++++++++++-------- src/plugins/texteditor/linenumberfilter.h | 13 +-- .../texteditor/texteditoractionhandler.cpp | 3 +- src/plugins/texteditor/texteditorplugin.cpp | 6 - src/plugins/texteditor/texteditorplugin.h | 3 - 5 files changed, 63 insertions(+), 70 deletions(-) diff --git a/src/plugins/texteditor/linenumberfilter.cpp b/src/plugins/texteditor/linenumberfilter.cpp index b718e5b4331..245d8565190 100644 --- a/src/plugins/texteditor/linenumberfilter.cpp +++ b/src/plugins/texteditor/linenumberfilter.cpp @@ -1,69 +1,79 @@ // 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 "linenumberfilter.h" - #include "texteditortr.h" #include +#include using namespace Core; using namespace Utils; namespace TextEditor::Internal { -LineNumberFilter::LineNumberFilter() +class LineNumberFilter : public 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); + } -LocatorMatcherTasks LineNumberFilter::matchers() -{ - using namespace Tasking; +private: + LocatorMatcherTasks matchers() final + { + using namespace Tasking; - TreeStorage storage; + TreeStorage 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) + 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(); - EditorManager::addCurrentPositionToNavigationHistory(); - editor->gotoLine(line < 1 ? editor->currentLine() : line, targetColumn); - EditorManager::activateEditor(editor); - return AcceptResult(); - }; - storage->reportOutput({entry}); - } - }; - return {{Sync(onSetup), storage}}; + }; + storage->reportOutput({entry}); + } + }; + return {{Sync(onSetup), storage}}; + } +}; + +ILocatorFilter *lineNumberFilter() +{ + static LineNumberFilter theLineNumberFilter; + return &theLineNumberFilter; } } // namespace TextEditor::Internal diff --git a/src/plugins/texteditor/linenumberfilter.h b/src/plugins/texteditor/linenumberfilter.h index ec72c1bb029..cbae14ea014 100644 --- a/src/plugins/texteditor/linenumberfilter.h +++ b/src/plugins/texteditor/linenumberfilter.h @@ -3,17 +3,10 @@ #pragma once -#include +namespace Core { class ILocatorFilter; } namespace TextEditor::Internal { -class LineNumberFilter : public Core::ILocatorFilter -{ -public: - LineNumberFilter(); +Core::ILocatorFilter *lineNumberFilter(); -private: - Core::LocatorMatcherTasks matchers() final; -}; - -} // namespace TextEditor::Internal +} // TextEditor::Internal diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp index 49b83b8a756..c105a26cc4a 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" @@ -180,7 +179,7 @@ void TextEditorActionHandlerPrivate::createActions() registerAction(SELECTALL, [] (TextEditorWidget *w) { w->selectAll(); }, true); registerAction(GOTO, [] (TextEditorWidget *) { - Core::LocatorManager::showFilter(TextEditorPlugin::lineNumberFilter()); + Core::LocatorManager::showFilter(lineNumberFilter()); }); m_modifyingActions << registerAction(PRINT, [] (TextEditorWidget *widget) { widget->print(Core::ICore::printer()); }); diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index f8de8503937..7746ddb4491 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -99,7 +99,6 @@ public: FilePath m_marginActionFileName; TextEditorSettings settings; - LineNumberFilter lineNumberFilter; // Goto line functionality for quick open OutlineFactory outlineFactory; FindInFiles findInFilesFilter; @@ -426,11 +425,6 @@ void TextEditorPlugin::extensionsInitialized() }); } -LineNumberFilter *TextEditorPlugin::lineNumberFilter() -{ - return &m_instance->d->lineNumberFilter; -} - ExtensionSystem::IPlugin::ShutdownFlag TextEditorPlugin::aboutToShutdown() { Highlighter::handleShutdown(); diff --git a/src/plugins/texteditor/texteditorplugin.h b/src/plugins/texteditor/texteditorplugin.h index f5725061950..3f21b7ce2f5 100644 --- a/src/plugins/texteditor/texteditorplugin.h +++ b/src/plugins/texteditor/texteditorplugin.h @@ -8,8 +8,6 @@ namespace TextEditor { namespace Internal { -class LineNumberFilter; - class TextEditorPlugin final : public ExtensionSystem::IPlugin { Q_OBJECT @@ -20,7 +18,6 @@ public: ~TextEditorPlugin() final; static TextEditorPlugin *instance(); - static LineNumberFilter *lineNumberFilter(); ShutdownFlag aboutToShutdown() override;