aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/git
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2019-03-17 08:31:42 +0200
committerOrgad Shaneh <orgads@gmail.com>2019-03-18 08:37:51 +0000
commitfeb2db61fcd8d02a03da9293f59c9a45fe326859 (patch)
treed0e934be7a400c44ed07eed5cba19206d1f03dbe /src/plugins/git
parentd4565be6557fca844dcf4bf427e0ff9c0838df50 (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.cpp15
-rw-r--r--src/plugins/git/gitgrep.h3
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