aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/silversearcher
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2018-10-28 20:54:40 +0100
committerPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2018-12-02 18:56:34 +0000
commit0d43ce1373e9f641db016ec8ce28f30a81f3f727 (patch)
tree68fc3def3a9b37a016e58a018f7e38225bd08e00 /src/plugins/silversearcher
parentd0756657f449d2bf835475c3686e89435a63006a (diff)
SilverSearcherPlugin: add possibility to set additional search options
Change-Id: Ia6dd11e4c7b68dba16e42fd80d1ac9878fafc220 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/silversearcher')
-rw-r--r--src/plugins/silversearcher/findinfilessilversearcher.cpp48
-rw-r--r--src/plugins/silversearcher/findinfilessilversearcher.h3
2 files changed, 41 insertions, 10 deletions
diff --git a/src/plugins/silversearcher/findinfilessilversearcher.cpp b/src/plugins/silversearcher/findinfilessilversearcher.cpp
index 3c8f19bc487..fc65d06a07c 100644
--- a/src/plugins/silversearcher/findinfilessilversearcher.cpp
+++ b/src/plugins/silversearcher/findinfilessilversearcher.cpp
@@ -35,9 +35,11 @@
#include "silversearcheroutputparser.h"
-#include <QProcess>
#include <QHBoxLayout>
#include <QLabel>
+#include <QLineEdit>
+#include <QProcess>
+#include <QSettings>
using namespace Core;
using namespace TextEditor;
@@ -50,6 +52,14 @@ using FutureInterfaceType = QFutureInterface<FileSearchResultList>;
const QString metacharacters = "+()^$.{}[]|\\";
+const QString SearchOptionsString = "SearchOptionsString";
+
+class SilverSearcherSearchOptions
+{
+public:
+ QString searchOptions;
+};
+
QString convertWildcardToRegex(const QString &wildcard)
{
QString regex;
@@ -112,6 +122,11 @@ void runSilverSeacher(FutureInterfaceType &fi, FileFindParameters parameters)
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));
arguments << "--" << parameters.text << path.toString();
@@ -121,9 +136,10 @@ void runSilverSeacher(FutureInterfaceType &fi, FileFindParameters parameters)
typedef QList<FileSearchResult> FileSearchResultList;
QRegularExpression regexp;
if (parameters.flags & FindRegularExpression) {
- const QRegularExpression::PatternOptions patternOptions =
- (parameters.flags & FindCaseSensitively)
- ? QRegularExpression::NoPatternOption : QRegularExpression::CaseInsensitiveOption;
+ const QRegularExpression::PatternOptions patternOptions
+ = (parameters.flags & FindCaseSensitively)
+ ? QRegularExpression::NoPatternOption
+ : QRegularExpression::CaseInsensitiveOption;
regexp.setPattern(parameters.text);
regexp.setPatternOptions(patternOptions);
}
@@ -138,14 +154,22 @@ void runSilverSeacher(FutureInterfaceType &fi, FileFindParameters parameters)
} // namespace
+Q_DECLARE_METATYPE(SilverSearcherSearchOptions)
+
namespace SilverSearcher {
FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent)
- : SearchEngine(parent),
- m_path("ag"),
- m_toolName("SilverSearcher")
+ : SearchEngine(parent)
+ , m_path("ag")
+ , m_toolName("SilverSearcher")
{
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();
QTC_ASSERT(findInFiles, return);
findInFiles->addSearchEngine(this);
@@ -166,7 +190,9 @@ FindInFilesSilverSearcher::~FindInFilesSilverSearcher()
QVariant FindInFilesSilverSearcher::parameters() const
{
- return QVariant();
+ SilverSearcherSearchOptions silverSearcherSearchOptions;
+ silverSearcherSearchOptions.searchOptions = m_searchOptionsLineEdit->text();
+ return qVariantFromValue(silverSearcherSearchOptions);
}
QString FindInFilesSilverSearcher::title() const
@@ -184,8 +210,9 @@ QWidget *FindInFilesSilverSearcher::widget() const
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(
@@ -200,8 +227,9 @@ IEditor *FindInFilesSilverSearcher::openEditor(const SearchResultItem & /*item*/
return nullptr;
}
-void FindInFilesSilverSearcher::readSettings(QSettings * /*settings*/)
+void FindInFilesSilverSearcher::readSettings(QSettings *settings)
{
+ m_searchOptionsLineEdit->setText(settings->value(SearchOptionsString).toString());
}
} // namespace SilverSearcher
diff --git a/src/plugins/silversearcher/findinfilessilversearcher.h b/src/plugins/silversearcher/findinfilessilversearcher.h
index d2d6790c1b7..6c38f14fa38 100644
--- a/src/plugins/silversearcher/findinfilessilversearcher.h
+++ b/src/plugins/silversearcher/findinfilessilversearcher.h
@@ -32,6 +32,8 @@
#include <QPointer>
+class QLineEdit;
+
namespace SilverSearcher {
class FindInFilesSilverSearcher : public TextEditor::SearchEngine
@@ -59,6 +61,7 @@ private:
Utils::FileName m_directorySetting;
QPointer<QWidget> m_widget;
+ QPointer<QLineEdit> m_searchOptionsLineEdit;
QString m_path;
QString m_toolName;
};