diff options
author | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2018-10-28 20:54:40 +0100 |
---|---|---|
committer | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2018-12-02 18:56:34 +0000 |
commit | 0d43ce1373e9f641db016ec8ce28f30a81f3f727 (patch) | |
tree | 68fc3def3a9b37a016e58a018f7e38225bd08e00 /src/plugins/silversearcher | |
parent | d0756657f449d2bf835475c3686e89435a63006a (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.cpp | 48 | ||||
-rw-r--r-- | src/plugins/silversearcher/findinfilessilversearcher.h | 3 |
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; }; |