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 <aggregation/aggregate.h>
|
||||
#include <texteditor/findinfiles.h>
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/async.h>
|
||||
#include <utils/environment.h>
|
||||
#include <utils/fileutils.h>
|
||||
#include <utils/process.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
@@ -25,11 +21,8 @@ using namespace TextEditor;
|
||||
using namespace Utils;
|
||||
|
||||
namespace {
|
||||
const QLatin1String silverSearcherName("Silver Searcher");
|
||||
|
||||
const QString metacharacters = "+()^$.{}[]|\\";
|
||||
|
||||
const QString SearchOptionsString = "SearchOptionsString";
|
||||
const QLatin1String s_metaCharacters = QLatin1String("+()^$.{}[]|\\");
|
||||
const QLatin1String s_searchOptionsString = QLatin1String("SearchOptionsString");
|
||||
|
||||
class SilverSearcherSearchOptions
|
||||
{
|
||||
@@ -37,43 +30,37 @@ public:
|
||||
QString searchOptions;
|
||||
};
|
||||
|
||||
QString convertWildcardToRegex(const QString &wildcard)
|
||||
static QString convertWildcardToRegex(const QString &wildcard)
|
||||
{
|
||||
QString regex;
|
||||
const int wildcardSize = wildcard.size();
|
||||
regex.append('^');
|
||||
for (int i = 0; i < wildcardSize; ++i) {
|
||||
const QChar ch = wildcard[i];
|
||||
if (ch == '*') {
|
||||
if (ch == '*')
|
||||
regex.append(".*");
|
||||
} else if (ch == '?') {
|
||||
else if (ch == '?')
|
||||
regex.append('.');
|
||||
} else if (metacharacters.indexOf(ch) != -1) {
|
||||
regex.append('\\');
|
||||
else if (s_metaCharacters.indexOf(ch) != -1)
|
||||
regex.append('\\' + ch);
|
||||
else
|
||||
regex.append(ch);
|
||||
} else {
|
||||
regex.append(ch);
|
||||
}
|
||||
}
|
||||
regex.append('$');
|
||||
|
||||
return regex;
|
||||
}
|
||||
|
||||
bool isSilverSearcherAvailable()
|
||||
static bool isSilverSearcherAvailable()
|
||||
{
|
||||
Process silverSearcherProcess;
|
||||
silverSearcherProcess.setCommand({"ag", {"--version"}});
|
||||
silverSearcherProcess.start();
|
||||
if (silverSearcherProcess.waitForFinished(1000)) {
|
||||
if (silverSearcherProcess.cleanedStdOut().contains("ag version"))
|
||||
return true;
|
||||
return silverSearcherProcess.waitForFinished(1000)
|
||||
&& silverSearcherProcess.cleanedStdOut().contains("ag version");
|
||||
}
|
||||
|
||||
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());
|
||||
QStringList arguments = {"--parallel", "--ackmate"};
|
||||
@@ -92,14 +79,14 @@ void runSilverSeacher(QPromise<SearchResultItems> &promise, FileFindParameters p
|
||||
for (const QString &filter : std::as_const(parameters.exclusionFilters))
|
||||
arguments << "--ignore" << filter;
|
||||
|
||||
QString nameFiltersAsRegex;
|
||||
QString nameFiltersAsRegExp;
|
||||
for (const QString &filter : std::as_const(parameters.nameFilters))
|
||||
nameFiltersAsRegex += QString("(%1)|").arg(convertWildcardToRegex(filter));
|
||||
nameFiltersAsRegex.remove(nameFiltersAsRegex.length() - 1, 1);
|
||||
nameFiltersAsRegExp += QString("(%1)|").arg(convertWildcardToRegex(filter));
|
||||
nameFiltersAsRegExp.remove(nameFiltersAsRegExp.length() - 1, 1);
|
||||
|
||||
arguments << "-G" << nameFiltersAsRegex;
|
||||
arguments << "-G" << nameFiltersAsRegExp;
|
||||
|
||||
SilverSearcherSearchOptions params = parameters.searchEngineParameters
|
||||
const SilverSearcherSearchOptions params = parameters.searchEngineParameters
|
||||
.value<SilverSearcherSearchOptions>();
|
||||
if (!params.searchOptions.isEmpty())
|
||||
arguments << params.searchOptions.split(' ');
|
||||
@@ -150,6 +137,7 @@ FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent)
|
||||
QTC_ASSERT(findInFiles, return);
|
||||
findInFiles->addSearchEngine(this);
|
||||
|
||||
// TODO: Make disabled by default and run isSilverSearcherAvailable asynchronously
|
||||
setEnabled(isSilverSearcherAvailable());
|
||||
if (!isEnabled()) {
|
||||
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
|
||||
{
|
||||
SilverSearcherSearchOptions silverSearcherSearchOptions;
|
||||
@@ -171,12 +155,12 @@ QVariant FindInFilesSilverSearcher::parameters() const
|
||||
|
||||
QString FindInFilesSilverSearcher::title() const
|
||||
{
|
||||
return silverSearcherName;
|
||||
return "Silver Searcher";
|
||||
}
|
||||
|
||||
QString FindInFilesSilverSearcher::toolTip() const
|
||||
{
|
||||
return QString();
|
||||
return {};
|
||||
}
|
||||
|
||||
QWidget *FindInFilesSilverSearcher::widget() const
|
||||
@@ -186,7 +170,7 @@ QWidget *FindInFilesSilverSearcher::widget() const
|
||||
|
||||
void FindInFilesSilverSearcher::writeSettings(QSettings *settings) const
|
||||
{
|
||||
settings->setValue(SearchOptionsString, m_searchOptionsLineEdit->text());
|
||||
settings->setValue(s_searchOptionsString, m_searchOptionsLineEdit->text());
|
||||
}
|
||||
|
||||
QFuture<SearchResultItems> FindInFilesSilverSearcher::executeSearch(
|
||||
@@ -203,7 +187,7 @@ IEditor *FindInFilesSilverSearcher::openEditor(const SearchResultItem & /*item*/
|
||||
|
||||
void FindInFilesSilverSearcher::readSettings(QSettings *settings)
|
||||
{
|
||||
m_searchOptionsLineEdit->setText(settings->value(SearchOptionsString).toString());
|
||||
m_searchOptionsLineEdit->setText(settings->value(s_searchOptionsString).toString());
|
||||
}
|
||||
|
||||
} // namespace SilverSearcher
|
||||
|
||||
@@ -3,10 +3,9 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <coreplugin/find/ifindsupport.h>
|
||||
#include <texteditor/basefilefind.h>
|
||||
|
||||
#include <utils/fileutils.h>
|
||||
#include <utils/filepath.h>
|
||||
|
||||
#include <QPointer>
|
||||
|
||||
@@ -14,6 +13,8 @@ QT_BEGIN_NAMESPACE
|
||||
class QLineEdit;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Core { class IFindSupport; }
|
||||
|
||||
namespace SilverSearcher {
|
||||
|
||||
class FindInFilesSilverSearcher : public TextEditor::SearchEngine
|
||||
@@ -22,7 +23,6 @@ class FindInFilesSilverSearcher : public TextEditor::SearchEngine
|
||||
|
||||
public:
|
||||
explicit FindInFilesSilverSearcher(QObject *parent);
|
||||
~FindInFilesSilverSearcher() override;
|
||||
|
||||
// TextEditor::FileFindExtension
|
||||
QString title() const override;
|
||||
|
||||
Reference in New Issue
Block a user