diff --git a/src/plugins/git/Git.mimetypes.xml b/src/plugins/git/Git.mimetypes.xml new file mode 100644 index 0000000000000000000000000000000000000000..c40c30181a93a02c3b19eccfc5cbe9b66874a9f1 --- /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 066342764375e88023cdbf460712d0b76a0cbf33..0366c953e11efcfefeec23c98b5d86ddcf25350a 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 80acf97b6edfba28cfd355f4deff4797b77e5f75..2f8110f8f28301408657cd56f424d9a2ef96c7b7 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 ae2b2b647076805856ebe7a973a6534b238e94c7..3371b45cd8fc7ea88abbeb47f89e0e162b435e17 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 872bf3022ce7c9ae44c45d0240b41c869663b805..35cf9619562694e3313a06733e6955fc0caf751d 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 fb6bea95f9a6f37ba0a6359334febc08b9b97143..2c6062799bfb884b4e800536a302d5af943bd294 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 6af13790506d8b6042f80edbd540a1e23593d46a..5010fd8193709f218eff3d664545ca1509555a83 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 610a060a7b5f134a5b236976bc904a59b4ed86a2..ea8ca19f4cb6a32deec63adc10675b93421b5ed9 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 5228d16846c6ca5fe822ff291f6cec4b632238a3..955c194d901287a349aa9fe44a88b7d2fb7e842d 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();