aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOrgad Shaneh <[email protected]>2013-05-22 21:31:46 +0300
committerOrgad Shaneh <[email protected]>2013-05-24 12:29:49 +0200
commit7bfaf7a946b9e1e512463c3a93c65bb396e40c2c (patch)
tree20ef32c99260936cdabcad35de1093511c2c19a6 /src
parenta9d9d444940dcef7076b59772d7f6f92f29b8d6a (diff)
Git: Provide a commit editor for files opened externally
Change-Id: I52fccf36cca032dda36102d4be2654eb7461de64 Reviewed-by: Eike Ziller <[email protected]> Reviewed-by: Tobias Hunger <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/git/Git.mimetypes.xml9
-rw-r--r--src/plugins/git/git.pro2
-rw-r--r--src/plugins/git/git.qbs1
-rw-r--r--src/plugins/git/git.qrc1
-rw-r--r--src/plugins/git/gitconstants.h4
-rw-r--r--src/plugins/git/giteditor.cpp10
-rw-r--r--src/plugins/git/giteditor.h1
-rw-r--r--src/plugins/git/gitplugin.cpp13
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.h2
9 files changed, 40 insertions, 3 deletions
diff --git a/src/plugins/git/Git.mimetypes.xml b/src/plugins/git/Git.mimetypes.xml
new file mode 100644
index 00000000000..c40c30181a9
--- /dev/null
+++ b/src/plugins/git/Git.mimetypes.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
+ <mime-type type="text/vnd.qtcreator.git.commit">
+ <sub-class-of type="text/plain"/>
+ <comment>Git Commit File</comment>
+ <glob pattern="COMMIT_MSG"/>
+ <glob pattern="COMMIT_EDITMSG"/>
+ </mime-type>
+</mime-info>
diff --git a/src/plugins/git/git.pro b/src/plugins/git/git.pro
index 06634276437..0366c953e11 100644
--- a/src/plugins/git/git.pro
+++ b/src/plugins/git/git.pro
@@ -62,4 +62,6 @@ include(gitorious/gitorious.pri)
RESOURCES += \
git.qrc
+OTHER_FILES += Git.mimetypes.xml
+
include(gerrit/gerrit.pri)
diff --git a/src/plugins/git/git.qbs b/src/plugins/git/git.qbs
index 80acf97b6ed..2f8110f8f28 100644
--- a/src/plugins/git/git.qbs
+++ b/src/plugins/git/git.qbs
@@ -14,6 +14,7 @@ QtcPlugin {
Depends { name: "Locator" }
files: [
+ "Git.mimetypes.xml",
"annotationhighlighter.cpp",
"annotationhighlighter.h",
"branchadddialog.cpp",
diff --git a/src/plugins/git/git.qrc b/src/plugins/git/git.qrc
index ae2b2b64707..3371b45cd8f 100644
--- a/src/plugins/git/git.qrc
+++ b/src/plugins/git/git.qrc
@@ -2,5 +2,6 @@
<qresource prefix="/git">
<file>images/git.png</file>
<file>images/gitorious.png</file>
+ <file>Git.mimetypes.xml</file>
</qresource>
</RCC>
diff --git a/src/plugins/git/gitconstants.h b/src/plugins/git/gitconstants.h
index 872bf3022ce..35cf9619562 100644
--- a/src/plugins/git/gitconstants.h
+++ b/src/plugins/git/gitconstants.h
@@ -47,6 +47,9 @@ const char C_GIT_BLAME_EDITOR[] = "Git Annotation Editor";
const char GIT_DIFF_EDITOR_ID[] = "Git Diff Editor";
const char GIT_DIFF_EDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("VCS", "Git Diff Editor");
const char C_GIT_DIFF_EDITOR[] = "Git Diff Editor";
+const char GIT_COMMIT_TEXT_EDITOR_ID[] = "Git Commit Editor";
+const char GIT_COMMIT_TEXT_EDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("VCS", "Git Commit Editor");
+const char C_GIT_COMMIT_TEXT_EDITOR[] = "Git Commit Editor";
const char C_GITSUBMITEDITOR[] = "Git Submit Editor";
const char GITSUBMITEDITOR_ID[] = "Git Submit Editor";
@@ -54,6 +57,7 @@ const char GITSUBMITEDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("VCS", "Git Submit
const char SUBMIT_CURRENT[] = "Git.SubmitCurrentLog";
const char DIFF_SELECTED[] = "Git.DiffSelectedFilesInLog";
const char SUBMIT_MIMETYPE[] = "text/vnd.qtcreator.git.submit";
+const char C_GITEDITORID[] = "Git Editor";
} // namespace Constants
} // namespace Git
diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp
index fb6bea95f9a..2c6062799bf 100644
--- a/src/plugins/git/giteditor.cpp
+++ b/src/plugins/git/giteditor.cpp
@@ -33,9 +33,12 @@
#include "gitplugin.h"
#include "gitclient.h"
#include "gitsettings.h"
+#include "gitsubmiteditorwidget.h"
+#include "gitconstants.h"
#include <utils/qtcassert.h>
#include <vcsbase/vcsbaseoutputwindow.h>
+#include <texteditor/basetextdocument.h>
#include <QDebug>
#include <QFileInfo>
#include <QRegExp>
@@ -225,6 +228,13 @@ void GitEditor::revertChange()
GitPlugin::instance()->gitClient()->synchronousRevert(workingDirectory, m_currentChange);
}
+void GitEditor::init()
+{
+ VcsBase::VcsBaseEditorWidget::init();
+ if (editor()->id() == Git::Constants::GIT_COMMIT_TEXT_EDITOR_ID)
+ new GitSubmitHighlighter(baseTextDocument().data());
+}
+
QString GitEditor::decorateVersion(const QString &revision) const
{
const QFileInfo fi(source());
diff --git a/src/plugins/git/giteditor.h b/src/plugins/git/giteditor.h
index 6af13790506..5010fd81937 100644
--- a/src/plugins/git/giteditor.h
+++ b/src/plugins/git/giteditor.h
@@ -59,6 +59,7 @@ private slots:
void revertChange();
private:
+ void init();
QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 610a060a7b5..ea8ca19f4cb 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -58,6 +58,7 @@
#include <coreplugin/infobar.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h>
+#include <coreplugin/mimedatabase.h>
#include <utils/qtcassert.h>
#include <utils/parameteraction.h>
@@ -81,6 +82,7 @@
#include <QScopedPointer>
static const unsigned minimumRequiredVersion = 0x010702;
+static const char RC_GIT_MIME_XML[] = ":/git/Git.mimetypes.xml";
static const VcsBase::VcsBaseEditorParameters editorParameters[] = {
{
@@ -103,7 +105,12 @@ static const VcsBase::VcsBaseEditorParameters editorParameters[] = {
Git::Constants::GIT_DIFF_EDITOR_ID,
Git::Constants::GIT_DIFF_EDITOR_DISPLAY_NAME,
Git::Constants::C_GIT_DIFF_EDITOR,
- "text/x-patch"}
+ "text/x-patch"},
+{ VcsBase::DiffOutput,
+ Git::Constants::GIT_COMMIT_TEXT_EDITOR_ID,
+ Git::Constants::GIT_COMMIT_TEXT_EDITOR_DISPLAY_NAME,
+ Git::Constants::C_GIT_COMMIT_TEXT_EDITOR,
+ "text/vnd.qtcreator.git.commit"},
};
// Utility to find a parameter set by type
@@ -263,7 +270,6 @@ ActionCommandPair
bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
{
Q_UNUSED(arguments)
- Q_UNUSED(errorMessage)
m_settings.readSettings(Core::ICore::settings());
@@ -656,6 +662,9 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
command = Core::ActionManager::registerAction(m_redoAction, Core::Constants::REDO, submitContext);
+ if (!Core::ICore::mimeDatabase()->addMimeTypes(QLatin1String(RC_GIT_MIME_XML), errorMessage))
+ return false;
+
/* "Gerrit" */
m_gerritPlugin = new Gerrit::Internal::GerritPlugin(this);
const bool ok = m_gerritPlugin->initialize(remoteRepositoryMenu);
diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h
index 5228d16846c..955c194d901 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.h
+++ b/src/plugins/vcsbase/vcsbaseeditor.h
@@ -105,7 +105,7 @@ protected:
void setLogEntryPattern(const QRegExp &pattern);
public:
- void init();
+ virtual void init();
~VcsBaseEditorWidget();