forked from qt-creator/qt-creator
SilverSearcher: Do some cleanup
Remove unneeded includes. Code style corrections. Make global functions in cpp static. Fix const correctness. Fix nameFiltersAsRegExp variable name. Remove unneeded d'tor. Change-Id: Ia8aef3701bc8853905a3661242b33351ce319004 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -3,12 +3,8 @@
|
|||||||
|
|
||||||
#include "findinfilessilversearcher.h"
|
#include "findinfilessilversearcher.h"
|
||||||
|
|
||||||
#include <aggregation/aggregate.h>
|
|
||||||
#include <texteditor/findinfiles.h>
|
#include <texteditor/findinfiles.h>
|
||||||
#include <utils/algorithm.h>
|
|
||||||
#include <utils/async.h>
|
#include <utils/async.h>
|
||||||
#include <utils/environment.h>
|
|
||||||
#include <utils/fileutils.h>
|
|
||||||
#include <utils/process.h>
|
#include <utils/process.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
@@ -25,11 +21,8 @@ using namespace TextEditor;
|
|||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
const QLatin1String silverSearcherName("Silver Searcher");
|
const QLatin1String s_metaCharacters = QLatin1String("+()^$.{}[]|\\");
|
||||||
|
const QLatin1String s_searchOptionsString = QLatin1String("SearchOptionsString");
|
||||||
const QString metacharacters = "+()^$.{}[]|\\";
|
|
||||||
|
|
||||||
const QString SearchOptionsString = "SearchOptionsString";
|
|
||||||
|
|
||||||
class SilverSearcherSearchOptions
|
class SilverSearcherSearchOptions
|
||||||
{
|
{
|
||||||
@@ -37,43 +30,37 @@ public:
|
|||||||
QString searchOptions;
|
QString searchOptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
QString convertWildcardToRegex(const QString &wildcard)
|
static QString convertWildcardToRegex(const QString &wildcard)
|
||||||
{
|
{
|
||||||
QString regex;
|
QString regex;
|
||||||
const int wildcardSize = wildcard.size();
|
const int wildcardSize = wildcard.size();
|
||||||
regex.append('^');
|
regex.append('^');
|
||||||
for (int i = 0; i < wildcardSize; ++i) {
|
for (int i = 0; i < wildcardSize; ++i) {
|
||||||
const QChar ch = wildcard[i];
|
const QChar ch = wildcard[i];
|
||||||
if (ch == '*') {
|
if (ch == '*')
|
||||||
regex.append(".*");
|
regex.append(".*");
|
||||||
} else if (ch == '?') {
|
else if (ch == '?')
|
||||||
regex.append('.');
|
regex.append('.');
|
||||||
} else if (metacharacters.indexOf(ch) != -1) {
|
else if (s_metaCharacters.indexOf(ch) != -1)
|
||||||
regex.append('\\');
|
regex.append('\\' + ch);
|
||||||
|
else
|
||||||
regex.append(ch);
|
regex.append(ch);
|
||||||
} else {
|
|
||||||
regex.append(ch);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
regex.append('$');
|
regex.append('$');
|
||||||
|
|
||||||
return regex;
|
return regex;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isSilverSearcherAvailable()
|
static bool isSilverSearcherAvailable()
|
||||||
{
|
{
|
||||||
Process silverSearcherProcess;
|
Process silverSearcherProcess;
|
||||||
silverSearcherProcess.setCommand({"ag", {"--version"}});
|
silverSearcherProcess.setCommand({"ag", {"--version"}});
|
||||||
silverSearcherProcess.start();
|
silverSearcherProcess.start();
|
||||||
if (silverSearcherProcess.waitForFinished(1000)) {
|
return silverSearcherProcess.waitForFinished(1000)
|
||||||
if (silverSearcherProcess.cleanedStdOut().contains("ag version"))
|
&& silverSearcherProcess.cleanedStdOut().contains("ag version");
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void runSilverSeacher(QPromise<SearchResultItems> &promise, FileFindParameters parameters)
|
static void runSilverSeacher(QPromise<SearchResultItems> &promise,
|
||||||
|
const FileFindParameters ¶meters)
|
||||||
{
|
{
|
||||||
const FilePath directory = FilePath::fromUserInput(parameters.additionalParameters.toString());
|
const FilePath directory = FilePath::fromUserInput(parameters.additionalParameters.toString());
|
||||||
QStringList arguments = {"--parallel", "--ackmate"};
|
QStringList arguments = {"--parallel", "--ackmate"};
|
||||||
@@ -92,15 +79,15 @@ void runSilverSeacher(QPromise<SearchResultItems> &promise, FileFindParameters p
|
|||||||
for (const QString &filter : std::as_const(parameters.exclusionFilters))
|
for (const QString &filter : std::as_const(parameters.exclusionFilters))
|
||||||
arguments << "--ignore" << filter;
|
arguments << "--ignore" << filter;
|
||||||
|
|
||||||
QString nameFiltersAsRegex;
|
QString nameFiltersAsRegExp;
|
||||||
for (const QString &filter : std::as_const(parameters.nameFilters))
|
for (const QString &filter : std::as_const(parameters.nameFilters))
|
||||||
nameFiltersAsRegex += QString("(%1)|").arg(convertWildcardToRegex(filter));
|
nameFiltersAsRegExp += QString("(%1)|").arg(convertWildcardToRegex(filter));
|
||||||
nameFiltersAsRegex.remove(nameFiltersAsRegex.length() - 1, 1);
|
nameFiltersAsRegExp.remove(nameFiltersAsRegExp.length() - 1, 1);
|
||||||
|
|
||||||
arguments << "-G" << nameFiltersAsRegex;
|
arguments << "-G" << nameFiltersAsRegExp;
|
||||||
|
|
||||||
SilverSearcherSearchOptions params = parameters.searchEngineParameters
|
const SilverSearcherSearchOptions params = parameters.searchEngineParameters
|
||||||
.value<SilverSearcherSearchOptions>();
|
.value<SilverSearcherSearchOptions>();
|
||||||
if (!params.searchOptions.isEmpty())
|
if (!params.searchOptions.isEmpty())
|
||||||
arguments << params.searchOptions.split(' ');
|
arguments << params.searchOptions.split(' ');
|
||||||
|
|
||||||
@@ -150,6 +137,7 @@ FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent)
|
|||||||
QTC_ASSERT(findInFiles, return);
|
QTC_ASSERT(findInFiles, return);
|
||||||
findInFiles->addSearchEngine(this);
|
findInFiles->addSearchEngine(this);
|
||||||
|
|
||||||
|
// TODO: Make disabled by default and run isSilverSearcherAvailable asynchronously
|
||||||
setEnabled(isSilverSearcherAvailable());
|
setEnabled(isSilverSearcherAvailable());
|
||||||
if (!isEnabled()) {
|
if (!isEnabled()) {
|
||||||
QLabel *label = new QLabel(Tr::tr("Silver Searcher is not available on the system."));
|
QLabel *label = new QLabel(Tr::tr("Silver Searcher is not available on the system."));
|
||||||
@@ -158,10 +146,6 @@ FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FindInFilesSilverSearcher::~FindInFilesSilverSearcher()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant FindInFilesSilverSearcher::parameters() const
|
QVariant FindInFilesSilverSearcher::parameters() const
|
||||||
{
|
{
|
||||||
SilverSearcherSearchOptions silverSearcherSearchOptions;
|
SilverSearcherSearchOptions silverSearcherSearchOptions;
|
||||||
@@ -171,12 +155,12 @@ QVariant FindInFilesSilverSearcher::parameters() const
|
|||||||
|
|
||||||
QString FindInFilesSilverSearcher::title() const
|
QString FindInFilesSilverSearcher::title() const
|
||||||
{
|
{
|
||||||
return silverSearcherName;
|
return "Silver Searcher";
|
||||||
}
|
}
|
||||||
|
|
||||||
QString FindInFilesSilverSearcher::toolTip() const
|
QString FindInFilesSilverSearcher::toolTip() const
|
||||||
{
|
{
|
||||||
return QString();
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *FindInFilesSilverSearcher::widget() const
|
QWidget *FindInFilesSilverSearcher::widget() const
|
||||||
@@ -186,7 +170,7 @@ QWidget *FindInFilesSilverSearcher::widget() const
|
|||||||
|
|
||||||
void FindInFilesSilverSearcher::writeSettings(QSettings *settings) const
|
void FindInFilesSilverSearcher::writeSettings(QSettings *settings) const
|
||||||
{
|
{
|
||||||
settings->setValue(SearchOptionsString, m_searchOptionsLineEdit->text());
|
settings->setValue(s_searchOptionsString, m_searchOptionsLineEdit->text());
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<SearchResultItems> FindInFilesSilverSearcher::executeSearch(
|
QFuture<SearchResultItems> FindInFilesSilverSearcher::executeSearch(
|
||||||
@@ -203,7 +187,7 @@ IEditor *FindInFilesSilverSearcher::openEditor(const SearchResultItem & /*item*/
|
|||||||
|
|
||||||
void FindInFilesSilverSearcher::readSettings(QSettings *settings)
|
void FindInFilesSilverSearcher::readSettings(QSettings *settings)
|
||||||
{
|
{
|
||||||
m_searchOptionsLineEdit->setText(settings->value(SearchOptionsString).toString());
|
m_searchOptionsLineEdit->setText(settings->value(s_searchOptionsString).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace SilverSearcher
|
} // namespace SilverSearcher
|
||||||
|
|||||||
@@ -3,10 +3,9 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <coreplugin/find/ifindsupport.h>
|
|
||||||
#include <texteditor/basefilefind.h>
|
#include <texteditor/basefilefind.h>
|
||||||
|
|
||||||
#include <utils/fileutils.h>
|
#include <utils/filepath.h>
|
||||||
|
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
|
|
||||||
@@ -14,6 +13,8 @@ QT_BEGIN_NAMESPACE
|
|||||||
class QLineEdit;
|
class QLineEdit;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
namespace Core { class IFindSupport; }
|
||||||
|
|
||||||
namespace SilverSearcher {
|
namespace SilverSearcher {
|
||||||
|
|
||||||
class FindInFilesSilverSearcher : public TextEditor::SearchEngine
|
class FindInFilesSilverSearcher : public TextEditor::SearchEngine
|
||||||
@@ -22,7 +23,6 @@ class FindInFilesSilverSearcher : public TextEditor::SearchEngine
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit FindInFilesSilverSearcher(QObject *parent);
|
explicit FindInFilesSilverSearcher(QObject *parent);
|
||||||
~FindInFilesSilverSearcher() override;
|
|
||||||
|
|
||||||
// TextEditor::FileFindExtension
|
// TextEditor::FileFindExtension
|
||||||
QString title() const override;
|
QString title() const override;
|
||||||
|
|||||||
Reference in New Issue
Block a user