forked from qt-creator/qt-creator
SilverSearcherPlugin: add possibility to set additional search options
Change-Id: Ia6dd11e4c7b68dba16e42fd80d1ac9878fafc220 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -35,9 +35,11 @@
|
|||||||
|
|
||||||
#include "silversearcheroutputparser.h"
|
#include "silversearcheroutputparser.h"
|
||||||
|
|
||||||
#include <QProcess>
|
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QProcess>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
using namespace Core;
|
using namespace Core;
|
||||||
using namespace TextEditor;
|
using namespace TextEditor;
|
||||||
@@ -50,6 +52,14 @@ using FutureInterfaceType = QFutureInterface<FileSearchResultList>;
|
|||||||
|
|
||||||
const QString metacharacters = "+()^$.{}[]|\\";
|
const QString metacharacters = "+()^$.{}[]|\\";
|
||||||
|
|
||||||
|
const QString SearchOptionsString = "SearchOptionsString";
|
||||||
|
|
||||||
|
class SilverSearcherSearchOptions
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QString searchOptions;
|
||||||
|
};
|
||||||
|
|
||||||
QString convertWildcardToRegex(const QString &wildcard)
|
QString convertWildcardToRegex(const QString &wildcard)
|
||||||
{
|
{
|
||||||
QString regex;
|
QString regex;
|
||||||
@@ -112,6 +122,11 @@ void runSilverSeacher(FutureInterfaceType &fi, FileFindParameters parameters)
|
|||||||
|
|
||||||
arguments << "-G" << nameFiltersAsRegex;
|
arguments << "-G" << nameFiltersAsRegex;
|
||||||
|
|
||||||
|
SilverSearcherSearchOptions params = parameters.searchEngineParameters
|
||||||
|
.value<SilverSearcherSearchOptions>();
|
||||||
|
if (!params.searchOptions.isEmpty())
|
||||||
|
arguments << params.searchOptions.split(' ');
|
||||||
|
|
||||||
const FileName path = FileName::fromUserInput(FileUtils::normalizePathName(directory));
|
const FileName path = FileName::fromUserInput(FileUtils::normalizePathName(directory));
|
||||||
arguments << "--" << parameters.text << path.toString();
|
arguments << "--" << parameters.text << path.toString();
|
||||||
|
|
||||||
@@ -121,9 +136,10 @@ void runSilverSeacher(FutureInterfaceType &fi, FileFindParameters parameters)
|
|||||||
typedef QList<FileSearchResult> FileSearchResultList;
|
typedef QList<FileSearchResult> FileSearchResultList;
|
||||||
QRegularExpression regexp;
|
QRegularExpression regexp;
|
||||||
if (parameters.flags & FindRegularExpression) {
|
if (parameters.flags & FindRegularExpression) {
|
||||||
const QRegularExpression::PatternOptions patternOptions =
|
const QRegularExpression::PatternOptions patternOptions
|
||||||
(parameters.flags & FindCaseSensitively)
|
= (parameters.flags & FindCaseSensitively)
|
||||||
? QRegularExpression::NoPatternOption : QRegularExpression::CaseInsensitiveOption;
|
? QRegularExpression::NoPatternOption
|
||||||
|
: QRegularExpression::CaseInsensitiveOption;
|
||||||
regexp.setPattern(parameters.text);
|
regexp.setPattern(parameters.text);
|
||||||
regexp.setPatternOptions(patternOptions);
|
regexp.setPatternOptions(patternOptions);
|
||||||
}
|
}
|
||||||
@@ -138,14 +154,22 @@ void runSilverSeacher(FutureInterfaceType &fi, FileFindParameters parameters)
|
|||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
Q_DECLARE_METATYPE(SilverSearcherSearchOptions)
|
||||||
|
|
||||||
namespace SilverSearcher {
|
namespace SilverSearcher {
|
||||||
|
|
||||||
FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent)
|
FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent)
|
||||||
: SearchEngine(parent),
|
: SearchEngine(parent)
|
||||||
m_path("ag"),
|
, m_path("ag")
|
||||||
m_toolName("SilverSearcher")
|
, m_toolName("SilverSearcher")
|
||||||
{
|
{
|
||||||
m_widget = new QWidget;
|
m_widget = new QWidget;
|
||||||
|
auto layout = new QHBoxLayout(m_widget);
|
||||||
|
layout->setMargin(0);
|
||||||
|
m_searchOptionsLineEdit = new QLineEdit;
|
||||||
|
m_searchOptionsLineEdit->setPlaceholderText(tr("Search Options (optional)"));
|
||||||
|
layout->addWidget(m_searchOptionsLineEdit);
|
||||||
|
|
||||||
FindInFiles *findInFiles = FindInFiles::instance();
|
FindInFiles *findInFiles = FindInFiles::instance();
|
||||||
QTC_ASSERT(findInFiles, return);
|
QTC_ASSERT(findInFiles, return);
|
||||||
findInFiles->addSearchEngine(this);
|
findInFiles->addSearchEngine(this);
|
||||||
@@ -166,7 +190,9 @@ FindInFilesSilverSearcher::~FindInFilesSilverSearcher()
|
|||||||
|
|
||||||
QVariant FindInFilesSilverSearcher::parameters() const
|
QVariant FindInFilesSilverSearcher::parameters() const
|
||||||
{
|
{
|
||||||
return QVariant();
|
SilverSearcherSearchOptions silverSearcherSearchOptions;
|
||||||
|
silverSearcherSearchOptions.searchOptions = m_searchOptionsLineEdit->text();
|
||||||
|
return qVariantFromValue(silverSearcherSearchOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString FindInFilesSilverSearcher::title() const
|
QString FindInFilesSilverSearcher::title() const
|
||||||
@@ -184,8 +210,9 @@ QWidget *FindInFilesSilverSearcher::widget() const
|
|||||||
return m_widget;
|
return m_widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindInFilesSilverSearcher::writeSettings(QSettings * /*settings*/) const
|
void FindInFilesSilverSearcher::writeSettings(QSettings *settings) const
|
||||||
{
|
{
|
||||||
|
settings->setValue(SearchOptionsString, m_searchOptionsLineEdit->text());
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<FileSearchResultList> FindInFilesSilverSearcher::executeSearch(
|
QFuture<FileSearchResultList> FindInFilesSilverSearcher::executeSearch(
|
||||||
@@ -200,8 +227,9 @@ IEditor *FindInFilesSilverSearcher::openEditor(const SearchResultItem & /*item*/
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindInFilesSilverSearcher::readSettings(QSettings * /*settings*/)
|
void FindInFilesSilverSearcher::readSettings(QSettings *settings)
|
||||||
{
|
{
|
||||||
|
m_searchOptionsLineEdit->setText(settings->value(SearchOptionsString).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace SilverSearcher
|
} // namespace SilverSearcher
|
||||||
|
@@ -32,6 +32,8 @@
|
|||||||
|
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
|
|
||||||
|
class QLineEdit;
|
||||||
|
|
||||||
namespace SilverSearcher {
|
namespace SilverSearcher {
|
||||||
|
|
||||||
class FindInFilesSilverSearcher : public TextEditor::SearchEngine
|
class FindInFilesSilverSearcher : public TextEditor::SearchEngine
|
||||||
@@ -59,6 +61,7 @@ private:
|
|||||||
|
|
||||||
Utils::FileName m_directorySetting;
|
Utils::FileName m_directorySetting;
|
||||||
QPointer<QWidget> m_widget;
|
QPointer<QWidget> m_widget;
|
||||||
|
QPointer<QLineEdit> m_searchOptionsLineEdit;
|
||||||
QString m_path;
|
QString m_path;
|
||||||
QString m_toolName;
|
QString m_toolName;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user