forked from qt-creator/qt-creator
Beautifier: Let tools self-register centrally
Change-Id: Id9140747e7c7f7c7ef3a0a957570863de7a628d1 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -76,12 +76,6 @@ public:
|
|||||||
ArtisticStyle artisticStyleBeautifier;
|
ArtisticStyle artisticStyleBeautifier;
|
||||||
ClangFormat clangFormatBeautifier;
|
ClangFormat clangFormatBeautifier;
|
||||||
Uncrustify uncrustifyBeautifier;
|
Uncrustify uncrustifyBeautifier;
|
||||||
|
|
||||||
BeautifierTool *m_tools[3] {
|
|
||||||
&artisticStyleBeautifier,
|
|
||||||
&uncrustifyBeautifier,
|
|
||||||
&clangFormatBeautifier
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static BeautifierPluginPrivate *dd = nullptr;
|
static BeautifierPluginPrivate *dd = nullptr;
|
||||||
@@ -108,7 +102,7 @@ ExtensionSystem::IPlugin::ShutdownFlag BeautifierPlugin::aboutToShutdown()
|
|||||||
|
|
||||||
BeautifierPluginPrivate::BeautifierPluginPrivate()
|
BeautifierPluginPrivate::BeautifierPluginPrivate()
|
||||||
{
|
{
|
||||||
for (BeautifierTool *tool : m_tools)
|
for (BeautifierTool *tool : BeautifierTool::allTools())
|
||||||
generalSettings.autoFormatTools.addOption(tool->id());
|
generalSettings.autoFormatTools.addOption(tool->id());
|
||||||
|
|
||||||
updateActions();
|
updateActions();
|
||||||
@@ -122,7 +116,7 @@ BeautifierPluginPrivate::BeautifierPluginPrivate()
|
|||||||
|
|
||||||
void BeautifierPluginPrivate::updateActions(Core::IEditor *editor)
|
void BeautifierPluginPrivate::updateActions(Core::IEditor *editor)
|
||||||
{
|
{
|
||||||
for (BeautifierTool *tool : m_tools)
|
for (BeautifierTool *tool : BeautifierTool::allTools())
|
||||||
tool->updateActions(editor);
|
tool->updateActions(editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,9 +143,10 @@ void BeautifierPluginPrivate::autoFormatOnSave(Core::IDocument *document)
|
|||||||
|
|
||||||
// Find tool to use by id and format file!
|
// Find tool to use by id and format file!
|
||||||
const QString id = generalSettings.autoFormatTools.stringValue();
|
const QString id = generalSettings.autoFormatTools.stringValue();
|
||||||
auto tool = std::find_if(std::begin(m_tools), std::end(m_tools),
|
const QList<BeautifierTool *> &tools = BeautifierTool::allTools();
|
||||||
|
auto tool = std::find_if(std::begin(tools), std::end(tools),
|
||||||
[&id](const BeautifierTool *t){return t->id() == id;});
|
[&id](const BeautifierTool *t){return t->id() == id;});
|
||||||
if (tool != std::end(m_tools)) {
|
if (tool != std::end(tools)) {
|
||||||
if (!(*tool)->isApplicable(document))
|
if (!(*tool)->isApplicable(document))
|
||||||
return;
|
return;
|
||||||
const TextEditor::Command command = (*tool)->command();
|
const TextEditor::Command command = (*tool)->command();
|
||||||
|
@@ -25,6 +25,22 @@ using namespace Utils;
|
|||||||
|
|
||||||
namespace Beautifier::Internal {
|
namespace Beautifier::Internal {
|
||||||
|
|
||||||
|
static QList<BeautifierTool *> &theTools()
|
||||||
|
{
|
||||||
|
static QList<BeautifierTool *> tools;
|
||||||
|
return tools;
|
||||||
|
}
|
||||||
|
|
||||||
|
BeautifierTool::BeautifierTool()
|
||||||
|
{
|
||||||
|
theTools().append(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
const QList<BeautifierTool *> &BeautifierTool::allTools()
|
||||||
|
{
|
||||||
|
return theTools();
|
||||||
|
}
|
||||||
|
|
||||||
void BeautifierTool::showError(const QString &error)
|
void BeautifierTool::showError(const QString &error)
|
||||||
{
|
{
|
||||||
Core::MessageManager::writeFlashing(Tr::tr("Error in Beautifier: %1").arg(error.trimmed()));
|
Core::MessageManager::writeFlashing(Tr::tr("Error in Beautifier: %1").arg(error.trimmed()));
|
||||||
|
@@ -29,7 +29,9 @@ namespace Beautifier::Internal {
|
|||||||
class BeautifierTool : public QObject
|
class BeautifierTool : public QObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BeautifierTool() = default;
|
BeautifierTool();
|
||||||
|
|
||||||
|
static const QList<BeautifierTool *> &allTools();
|
||||||
|
|
||||||
virtual QString id() const = 0;
|
virtual QString id() const = 0;
|
||||||
virtual void updateActions(Core::IEditor *editor) = 0;
|
virtual void updateActions(Core::IEditor *editor) = 0;
|
||||||
|
Reference in New Issue
Block a user