diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2019-03-17 08:31:42 +0200 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2019-03-18 08:37:51 +0000 |
commit | feb2db61fcd8d02a03da9293f59c9a45fe326859 (patch) | |
tree | d0e934be7a400c44ed07eed5cba19206d1f03dbe /src/plugins/git | |
parent | d4565be6557fca844dcf4bf427e0ff9c0838df50 (diff) |
Git: Support non-recursive grep
Change-Id: Ib38239e28e8b24d993015e5568df02fe2a67f0e8
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Diffstat (limited to 'src/plugins/git')
-rw-r--r-- | src/plugins/git/gitgrep.cpp | 15 | ||||
-rw-r--r-- | src/plugins/git/gitgrep.h | 3 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/plugins/git/gitgrep.cpp b/src/plugins/git/gitgrep.cpp index e02adf12cc..c6c437af35 100644 --- a/src/plugins/git/gitgrep.cpp +++ b/src/plugins/git/gitgrep.cpp @@ -44,6 +44,7 @@ #include <utils/synchronousprocess.h> #include <utils/textfileformat.h> +#include <QCheckBox> #include <QFuture> #include <QFutureWatcher> #include <QHBoxLayout> @@ -59,6 +60,8 @@ class GitGrepParameters { public: QString ref; + bool recurseSubmodules = false; + QString id() const { return recurseSubmodules ? ref + ".Rec" : ref; } }; using namespace Core; @@ -169,10 +172,10 @@ public: arguments << "-P"; else arguments << "-F"; - if (client->gitVersion() >= 0x021300) - arguments << "--recurse-submodules"; arguments << "-e" << m_parameters.text; GitGrepParameters params = m_parameters.searchEngineParameters.value<GitGrepParameters>(); + if (params.recurseSubmodules) + arguments << "--recurse-submodules"; if (!params.ref.isEmpty()) { arguments << params.ref; m_ref = params.ref + ':'; @@ -245,6 +248,10 @@ GitGrep::GitGrep(QObject *parent) const QRegularExpression refExpression("[\\S]*"); m_treeLineEdit->setValidator(new QRegularExpressionValidator(refExpression, this)); layout->addWidget(m_treeLineEdit); + if (GitPlugin::client()->gitVersion() >= 0x021300) { + m_recurseSubmodules = new QCheckBox(tr("Recurse submodules")); + layout->addWidget(m_recurseSubmodules); + } TextEditor::FindInFiles *findInFiles = TextEditor::FindInFiles::instance(); QTC_ASSERT(findInFiles, return); connect(findInFiles, &TextEditor::FindInFiles::pathChanged, @@ -282,6 +289,8 @@ QVariant GitGrep::parameters() const { GitGrepParameters params; params.ref = m_treeLineEdit->text(); + if (m_recurseSubmodules) + params.recurseSubmodules = m_recurseSubmodules->isChecked(); return qVariantFromValue(params); } @@ -325,7 +334,7 @@ IEditor *GitGrep::openEditor(const SearchResultItem &item, } const QString documentId = QLatin1String(Git::Constants::GIT_PLUGIN) - + QLatin1String(".GitShow.") + params.ref + + QLatin1String(".GitShow.") + params.id() + QLatin1String(".") + relativePath; QString title = tr("Git Show %1:%2").arg(params.ref).arg(relativePath); IEditor *editor = EditorManager::openEditorWithContents(Id(), &title, content, documentId, diff --git a/src/plugins/git/gitgrep.h b/src/plugins/git/gitgrep.h index af7a40ca30..1e4f81ceed 100644 --- a/src/plugins/git/gitgrep.h +++ b/src/plugins/git/gitgrep.h @@ -29,6 +29,8 @@ #include <QCoreApplication> +QT_FORWARD_DECLARE_CLASS(QCheckBox); + namespace Utils { class FancyLineEdit; } namespace Git { @@ -56,6 +58,7 @@ public: private: QWidget *m_widget; Utils::FancyLineEdit *m_treeLineEdit; + QCheckBox *m_recurseSubmodules = nullptr; }; } // namespace Internal |