Move completion settings page to TextEditor plugin.

Change-Id: I12b7828d23d599e5903237d0cc2a3c0440e1b07d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
This commit is contained in:
David Schulz
2016-05-19 12:25:16 +02:00
parent 702fd2e62c
commit c422b81316
21 changed files with 166 additions and 158 deletions

View File

@@ -28,9 +28,10 @@
#include "cppautocompleter.h" #include "cppautocompleter.h"
#include <cpptools/cpptoolssettings.h> #include <cpptools/cpptoolssettings.h>
#include <cpptools/commentssettings.h>
#include <cpptools/doxygengenerator.h> #include <cpptools/doxygengenerator.h>
#include <texteditor/commentssettings.h>
#include <texteditor/texteditor.h> #include <texteditor/texteditor.h>
#include <texteditor/texteditorsettings.h>
#include <texteditor/textdocument.h> #include <texteditor/textdocument.h>
#include <cplusplus/MatchingText.h> #include <cplusplus/MatchingText.h>
@@ -272,7 +273,7 @@ namespace Internal {
bool trySplitComment(TextEditor::TextEditorWidget *editorWidget, bool trySplitComment(TextEditor::TextEditorWidget *editorWidget,
const CPlusPlus::Snapshot &snapshot) const CPlusPlus::Snapshot &snapshot)
{ {
const CommentsSettings &settings = CppToolsSettings::instance()->commentsSettings(); const TextEditor::CommentsSettings &settings = CppToolsSettings::instance()->commentsSettings();
if (!settings.m_enableDoxygen && !settings.m_leadingAsterisks) if (!settings.m_enableDoxygen && !settings.m_leadingAsterisks)
return false; return false;

View File

@@ -339,7 +339,7 @@ void DoxygenTest::testNoLeadingAsterisks()
QFETCH(QByteArray, given); QFETCH(QByteArray, given);
QFETCH(QByteArray, expected); QFETCH(QByteArray, expected);
CppTools::CommentsSettings injection; TextEditor::CommentsSettings injection;
injection.m_enableDoxygen = true; injection.m_enableDoxygen = true;
injection.m_leadingAsterisks = false; injection.m_leadingAsterisks = false;
@@ -356,7 +356,7 @@ void DoxygenTest::verifyCleanState() const
/// The '|' in the input denotes the cursor position. /// The '|' in the input denotes the cursor position.
void DoxygenTest::runTest(const QByteArray &original, void DoxygenTest::runTest(const QByteArray &original,
const QByteArray &expected, const QByteArray &expected,
CppTools::CommentsSettings *settings, TextEditor::CommentsSettings *settings,
const TestDocuments &includedHeaderDocuments) const TestDocuments &includedHeaderDocuments)
{ {
// Write files to disk // Write files to disk
@@ -381,7 +381,7 @@ void DoxygenTest::runTest(const QByteArray &original,
if (settings) { if (settings) {
auto *cts = CppTools::CppToolsSettings::instance(); auto *cts = CppTools::CppToolsSettings::instance();
oldSettings.reset(new CppTools::CommentsSettings(cts->commentsSettings())); oldSettings.reset(new TextEditor::CommentsSettings(cts->commentsSettings()));
cts->setCommentsSettings(*settings); cts->setCommentsSettings(*settings);
} }

View File

@@ -27,7 +27,7 @@
#include "cppeditortestcase.h" #include "cppeditortestcase.h"
#include <cpptools/commentssettings.h> #include <texteditor/commentssettings.h>
#include <QObject> #include <QObject>
#include <QScopedPointer> #include <QScopedPointer>
@@ -58,10 +58,10 @@ private:
void verifyCleanState() const; void verifyCleanState() const;
void runTest(const QByteArray &original, void runTest(const QByteArray &original,
const QByteArray &expected, const QByteArray &expected,
CppTools::CommentsSettings *settings = 0, TextEditor::CommentsSettings *settings = 0,
const TestDocuments &includedHeaderDocuments = TestDocuments()); const TestDocuments &includedHeaderDocuments = TestDocuments());
QScopedPointer<CppTools::CommentsSettings> oldSettings; QScopedPointer<TextEditor::CommentsSettings> oldSettings;
}; };
} // namespace Tests } // namespace Tests

View File

@@ -12,8 +12,6 @@ HEADERS += \
clangdiagnosticconfig.h \ clangdiagnosticconfig.h \
clangdiagnosticconfigsmodel.h \ clangdiagnosticconfigsmodel.h \
clangdiagnosticconfigswidget.h \ clangdiagnosticconfigswidget.h \
commentssettings.h \
completionsettingspage.h \
cppchecksymbols.h \ cppchecksymbols.h \
cppclassesfilter.h \ cppclassesfilter.h \
cppcodeformatter.h \ cppcodeformatter.h \
@@ -90,8 +88,6 @@ SOURCES += \
clangdiagnosticconfig.cpp \ clangdiagnosticconfig.cpp \
clangdiagnosticconfigsmodel.cpp \ clangdiagnosticconfigsmodel.cpp \
clangdiagnosticconfigswidget.cpp \ clangdiagnosticconfigswidget.cpp \
commentssettings.cpp \
completionsettingspage.cpp \
cppchecksymbols.cpp \ cppchecksymbols.cpp \
cppclassesfilter.cpp \ cppclassesfilter.cpp \
cppcodeformatter.cpp \ cppcodeformatter.cpp \
@@ -156,7 +152,6 @@ SOURCES += \
FORMS += \ FORMS += \
clangdiagnosticconfigswidget.ui \ clangdiagnosticconfigswidget.ui \
completionsettingspage.ui \
cppcodemodelsettingspage.ui \ cppcodemodelsettingspage.ui \
cppcodestylesettingspage.ui \ cppcodestylesettingspage.ui \
cppfilesettingspage.ui cppfilesettingspage.ui

View File

@@ -36,8 +36,6 @@ QtcPlugin {
"clangdiagnosticconfigswidget.cpp", "clangdiagnosticconfigswidget.h", "clangdiagnosticconfigswidget.cpp", "clangdiagnosticconfigswidget.h",
"clangdiagnosticconfigswidget.ui", "clangdiagnosticconfigswidget.ui",
"compileroptionsbuilder.cpp", "compileroptionsbuilder.h", "compileroptionsbuilder.cpp", "compileroptionsbuilder.h",
"commentssettings.cpp", "commentssettings.h",
"completionsettingspage.cpp", "completionsettingspage.h", "completionsettingspage.ui",
"cppchecksymbols.cpp", "cppchecksymbols.h", "cppchecksymbols.cpp", "cppchecksymbols.h",
"cppclassesfilter.cpp", "cppclassesfilter.h", "cppclassesfilter.cpp", "cppclassesfilter.h",
"cppcodeformatter.cpp", "cppcodeformatter.h", "cppcodeformatter.cpp", "cppcodeformatter.h",

View File

@@ -28,10 +28,10 @@
#include "cpptoolsconstants.h" #include "cpptoolsconstants.h"
#include "cppcodestylepreferences.h" #include "cppcodestylepreferences.h"
#include "cppcodestylepreferencesfactory.h" #include "cppcodestylepreferencesfactory.h"
#include "commentssettings.h"
#include "completionsettingspage.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <texteditor/commentssettings.h>
#include <texteditor/completionsettingspage.h>
#include <texteditor/codestylepool.h> #include <texteditor/codestylepool.h>
#include <texteditor/tabsettings.h> #include <texteditor/tabsettings.h>
#include <texteditor/texteditorsettings.h> #include <texteditor/texteditorsettings.h>
@@ -57,12 +57,10 @@ class CppToolsSettingsPrivate
public: public:
CppToolsSettingsPrivate() CppToolsSettingsPrivate()
: m_globalCodeStyle(0) : m_globalCodeStyle(0)
, m_completionSettingsPage(0)
{} {}
CommentsSettings m_commentsSettings; CommentsSettings m_commentsSettings;
CppCodeStylePreferences *m_globalCodeStyle; CppCodeStylePreferences *m_globalCodeStyle;
CompletionSettingsPage *m_completionSettingsPage;
}; };
} // namespace Internal } // namespace Internal
@@ -79,10 +77,9 @@ CppToolsSettings::CppToolsSettings(QObject *parent)
qRegisterMetaType<CppTools::CppCodeStyleSettings>("CppTools::CppCodeStyleSettings"); qRegisterMetaType<CppTools::CppCodeStyleSettings>("CppTools::CppCodeStyleSettings");
QSettings *s = ICore::settings(); d->m_commentsSettings = TextEditorSettings::commentsSettings();
d->m_commentsSettings.fromSettings(QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP), s); connect(TextEditorSettings::instance(), &TextEditorSettings::commentsSettingsChanged,
d->m_completionSettingsPage = new CompletionSettingsPage(this); this, &CppToolsSettings::setCommentsSettings);
ExtensionSystem::PluginManager::addObject(d->m_completionSettingsPage);
// code style factory // code style factory
ICodeStylePreferencesFactory *factory = new CppCodeStylePreferencesFactory(); ICodeStylePreferencesFactory *factory = new CppCodeStylePreferencesFactory();
@@ -163,6 +160,7 @@ CppToolsSettings::CppToolsSettings(QObject *parent)
pool->loadCustomCodeStyles(); pool->loadCustomCodeStyles();
QSettings *s = ICore::settings();
// load global settings (after built-in settings are added to the pool) // load global settings (after built-in settings are added to the pool)
d->m_globalCodeStyle->fromSettings(QLatin1String(CppTools::Constants::CPP_SETTINGS_ID), s); d->m_globalCodeStyle->fromSettings(QLatin1String(CppTools::Constants::CPP_SETTINGS_ID), s);
@@ -223,8 +221,6 @@ CppToolsSettings::CppToolsSettings(QObject *parent)
CppToolsSettings::~CppToolsSettings() CppToolsSettings::~CppToolsSettings()
{ {
ExtensionSystem::PluginManager::removeObject(d->m_completionSettingsPage);
TextEditorSettings::unregisterCodeStyle(Constants::CPP_SETTINGS_ID); TextEditorSettings::unregisterCodeStyle(Constants::CPP_SETTINGS_ID);
TextEditorSettings::unregisterCodeStylePool(Constants::CPP_SETTINGS_ID); TextEditorSettings::unregisterCodeStylePool(Constants::CPP_SETTINGS_ID);
TextEditorSettings::unregisterCodeStyleFactory(Constants::CPP_SETTINGS_ID); TextEditorSettings::unregisterCodeStyleFactory(Constants::CPP_SETTINGS_ID);
@@ -251,12 +247,7 @@ const CommentsSettings &CppToolsSettings::commentsSettings() const
void CppToolsSettings::setCommentsSettings(const CommentsSettings &commentsSettings) void CppToolsSettings::setCommentsSettings(const CommentsSettings &commentsSettings)
{ {
if (d->m_commentsSettings == commentsSettings)
return;
d->m_commentsSettings = commentsSettings; d->m_commentsSettings = commentsSettings;
d->m_commentsSettings.toSettings(QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP),
ICore::settings());
} }
static QString sortEditorDocumentOutlineKey() static QString sortEditorDocumentOutlineKey()

View File

@@ -29,10 +29,13 @@
#include <QObject> #include <QObject>
namespace TextEditor {
class CommentsSettings;
}
namespace CppTools namespace CppTools
{ {
class CppCodeStylePreferences; class CppCodeStylePreferences;
class CommentsSettings;
namespace Internal namespace Internal
{ {
@@ -54,8 +57,8 @@ public:
CppCodeStylePreferences *cppCodeStyle() const; CppCodeStylePreferences *cppCodeStyle() const;
const CommentsSettings &commentsSettings() const; const TextEditor::CommentsSettings &commentsSettings() const;
void setCommentsSettings(const CommentsSettings &commentsSettings); void setCommentsSettings(const TextEditor::CommentsSettings &commentsSettings);
bool sortedEditorDocumentOutline() const; bool sortedEditorDocumentOutline() const;
void setSortedEditorDocumentOutline(bool sorted); void setSortedEditorDocumentOutline(bool sorted);

View File

@@ -127,6 +127,7 @@ CodeAssistantPrivate::CodeAssistantPrivate(CodeAssistant *assistant)
connect(&m_automaticProposalTimer, &QTimer::timeout, connect(&m_automaticProposalTimer, &QTimer::timeout,
this, &CodeAssistantPrivate::automaticProposalTimeout); this, &CodeAssistantPrivate::automaticProposalTimeout);
m_settings = TextEditorSettings::completionSettings();
connect(TextEditorSettings::instance(), &TextEditorSettings::completionSettingsChanged, connect(TextEditorSettings::instance(), &TextEditorSettings::completionSettingsChanged,
this, &CodeAssistantPrivate::updateFromCompletionSettings); this, &CodeAssistantPrivate::updateFromCompletionSettings);
@@ -514,11 +515,6 @@ void CodeAssistant::configure(TextEditorWidget *editorWidget)
d->configure(editorWidget); d->configure(editorWidget);
} }
void CodeAssistant::updateFromCompletionSettings(const CompletionSettings &settings)
{
d->updateFromCompletionSettings(settings);
}
void CodeAssistant::process() void CodeAssistant::process()
{ {
d->process(); d->process();

View File

@@ -47,7 +47,6 @@ public:
~CodeAssistant(); ~CodeAssistant();
void configure(TextEditorWidget *editorWidget); void configure(TextEditorWidget *editorWidget);
void updateFromCompletionSettings(const TextEditor::CompletionSettings &settings);
void process(); void process();
void notifyChange(); void notifyChange();

View File

@@ -27,11 +27,11 @@
#include <QSettings> #include <QSettings>
using namespace CppTools; using namespace TextEditor;
namespace { namespace {
const char kDocumentationCommentsGroup[] = "DocumentationComments"; const char kDocumentationCommentsGroup[] = "CppToolsDocumentationComments";
const char kEnableDoxygenBlocks[] = "EnableDoxygenBlocks"; const char kEnableDoxygenBlocks[] = "EnableDoxygenBlocks";
const char kGenerateBrief[] = "GenerateBrief"; const char kGenerateBrief[] = "GenerateBrief";
const char kAddLeadingAsterisks[] = "AddLeadingAsterisks"; const char kAddLeadingAsterisks[] = "AddLeadingAsterisks";
@@ -44,22 +44,21 @@ CommentsSettings::CommentsSettings()
, m_leadingAsterisks(true) , m_leadingAsterisks(true)
{} {}
void CommentsSettings::toSettings(const QString &category, QSettings *s) const void CommentsSettings::toSettings(QSettings *s) const
{ {
s->beginGroup(category + QLatin1String(kDocumentationCommentsGroup)); s->beginGroup(kDocumentationCommentsGroup);
s->setValue(QLatin1String(kEnableDoxygenBlocks), m_enableDoxygen); s->setValue(kEnableDoxygenBlocks, m_enableDoxygen);
s->setValue(QLatin1String(kGenerateBrief), m_generateBrief); s->setValue(kGenerateBrief, m_generateBrief);
s->setValue(QLatin1String(kAddLeadingAsterisks), m_leadingAsterisks); s->setValue(kAddLeadingAsterisks, m_leadingAsterisks);
s->endGroup(); s->endGroup();
} }
void CommentsSettings::fromSettings(const QString &category, QSettings *s) void CommentsSettings::fromSettings(QSettings *s)
{ {
s->beginGroup(category + QLatin1String(kDocumentationCommentsGroup)); s->beginGroup(kDocumentationCommentsGroup);
m_enableDoxygen = s->value(QLatin1String(kEnableDoxygenBlocks), true).toBool(); m_enableDoxygen = s->value(kEnableDoxygenBlocks, true).toBool();
m_generateBrief = m_enableDoxygen m_generateBrief = m_enableDoxygen && s->value(kGenerateBrief, true).toBool();
&& s->value(QLatin1String(kGenerateBrief), true).toBool(); m_leadingAsterisks = s->value(kAddLeadingAsterisks, true).toBool();
m_leadingAsterisks = s->value(QLatin1String(kAddLeadingAsterisks), true).toBool();
s->endGroup(); s->endGroup();
} }

View File

@@ -25,21 +25,21 @@
#pragma once #pragma once
#include "cpptools_global.h" #include "texteditor_global.h"
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QSettings; class QSettings;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace CppTools { namespace TextEditor {
class CPPTOOLS_EXPORT CommentsSettings class TEXTEDITOR_EXPORT CommentsSettings
{ {
public: public:
CommentsSettings(); CommentsSettings();
void toSettings(const QString &category, QSettings *s) const; void toSettings(QSettings *s) const;
void fromSettings(const QString &category, QSettings *s); void fromSettings(QSettings *s);
bool equals(const CommentsSettings &other) const; bool equals(const CommentsSettings &other) const;
@@ -54,4 +54,4 @@ inline bool operator==(const CommentsSettings &a, const CommentsSettings &b)
inline bool operator!=(const CommentsSettings &a, const CommentsSettings &b) inline bool operator!=(const CommentsSettings &a, const CommentsSettings &b)
{ return !(a == b); } { return !(a == b); }
} // namespace CppTools } // namespace TextEditor

View File

@@ -27,7 +27,7 @@
#include <QSettings> #include <QSettings>
static const char groupPostfix[] = "Completion"; static const char settingsGroup[] = "CppTools/Completion";
static const char caseSensitivityKey[] = "CaseSensitivity"; static const char caseSensitivityKey[] = "CaseSensitivity";
static const char completionTriggerKey[] = "CompletionTrigger"; static const char completionTriggerKey[] = "CompletionTrigger";
static const char automaticProposalTimeoutKey[] = "AutomaticProposalTimeout"; static const char automaticProposalTimeoutKey[] = "AutomaticProposalTimeout";
@@ -41,13 +41,9 @@ static const char autoSplitStringsKey[] = "AutoSplitStrings";
using namespace TextEditor; using namespace TextEditor;
void CompletionSettings::toSettings(const QString &category, QSettings *s) const void CompletionSettings::toSettings(QSettings *s) const
{ {
QString group(groupPostfix); s->beginGroup(settingsGroup);
if (!category.isEmpty())
group.insert(0, category);
s->beginGroup(group);
s->setValue(caseSensitivityKey, (int) m_caseSensitivity); s->setValue(caseSensitivityKey, (int) m_caseSensitivity);
s->setValue(completionTriggerKey, (int) m_completionTrigger); s->setValue(completionTriggerKey, (int) m_completionTrigger);
s->setValue(automaticProposalTimeoutKey, m_automaticProposalTimeoutInMs); s->setValue(automaticProposalTimeoutKey, m_automaticProposalTimeoutInMs);
@@ -61,35 +57,32 @@ void CompletionSettings::toSettings(const QString &category, QSettings *s) const
s->endGroup(); s->endGroup();
} }
void CompletionSettings::fromSettings(const QString &category, const QSettings *s) void CompletionSettings::fromSettings(QSettings *s)
{ {
QString group(groupPostfix);
if (!category.isEmpty())
group.insert(0, category);
group += '/';
*this = CompletionSettings(); // Assign defaults *this = CompletionSettings(); // Assign defaults
s->beginGroup(settingsGroup);
m_caseSensitivity = (CaseSensitivity) m_caseSensitivity = (CaseSensitivity)
s->value(group + caseSensitivityKey, m_caseSensitivity).toInt(); s->value(caseSensitivityKey, m_caseSensitivity).toInt();
m_completionTrigger = (CompletionTrigger) m_completionTrigger = (CompletionTrigger)
s->value(group + completionTriggerKey, m_completionTrigger).toInt(); s->value(completionTriggerKey, m_completionTrigger).toInt();
m_automaticProposalTimeoutInMs = m_automaticProposalTimeoutInMs =
s->value(group + automaticProposalTimeoutKey, m_automaticProposalTimeoutInMs).toInt(); s->value(automaticProposalTimeoutKey, m_automaticProposalTimeoutInMs).toInt();
m_autoInsertBrackets = m_autoInsertBrackets =
s->value(group + autoInsertBracesKey, m_autoInsertBrackets).toBool(); s->value(autoInsertBracesKey, m_autoInsertBrackets).toBool();
m_surroundingAutoBrackets = m_surroundingAutoBrackets =
s->value(group + surroundingAutoBracketsKey, m_surroundingAutoBrackets).toBool(); s->value(surroundingAutoBracketsKey, m_surroundingAutoBrackets).toBool();
m_autoInsertQuotes = m_autoInsertQuotes =
s->value(group + autoInsertQuotesKey, m_autoInsertQuotes).toBool(); s->value(autoInsertQuotesKey, m_autoInsertQuotes).toBool();
m_surroundingAutoQuotes = m_surroundingAutoQuotes =
s->value(group + surroundingAutoQuotesKey, m_surroundingAutoQuotes).toBool(); s->value(surroundingAutoQuotesKey, m_surroundingAutoQuotes).toBool();
m_partiallyComplete = m_partiallyComplete =
s->value(group + partiallyCompleteKey, m_partiallyComplete).toBool(); s->value(partiallyCompleteKey, m_partiallyComplete).toBool();
m_spaceAfterFunctionName = m_spaceAfterFunctionName =
s->value(group + spaceAfterFunctionNameKey, m_spaceAfterFunctionName).toBool(); s->value(spaceAfterFunctionNameKey, m_spaceAfterFunctionName).toBool();
m_autoSplitStrings = m_autoSplitStrings =
s->value(group + autoSplitStringsKey, m_autoSplitStrings).toBool(); s->value(autoSplitStringsKey, m_autoSplitStrings).toBool();
s->endGroup();
} }
bool CompletionSettings::equals(const CompletionSettings &cs) const bool CompletionSettings::equals(const CompletionSettings &cs) const

View File

@@ -51,8 +51,8 @@ enum CompletionTrigger {
class TEXTEDITOR_EXPORT CompletionSettings class TEXTEDITOR_EXPORT CompletionSettings
{ {
public: public:
void toSettings(const QString &category, QSettings *s) const; void toSettings(QSettings *s) const;
void fromSettings(const QString &category, const QSettings *s); void fromSettings(QSettings *s);
bool equals(const CompletionSettings &bs) const; bool equals(const CompletionSettings &bs) const;

View File

@@ -25,16 +25,17 @@
#include "completionsettingspage.h" #include "completionsettingspage.h"
#include "ui_completionsettingspage.h" #include "ui_completionsettingspage.h"
#include "texteditorsettings.h"
#include "cpptoolssettings.h" #include <cpptools/cpptoolssettings.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <texteditor/texteditorsettings.h>
#include <QTextStream> #include <QTextStream>
using namespace TextEditor;
using namespace TextEditor::Internal;
using namespace CppTools; using namespace CppTools;
using namespace CppTools::Internal;
CompletionSettingsPage::CompletionSettingsPage(QObject *parent) CompletionSettingsPage::CompletionSettingsPage(QObject *parent)
: TextEditor::TextEditorOptionsPage(parent) : TextEditor::TextEditorOptionsPage(parent)
@@ -42,6 +43,10 @@ CompletionSettingsPage::CompletionSettingsPage(QObject *parent)
{ {
setId("P.Completion"); setId("P.Completion");
setDisplayName(tr("Completion")); setDisplayName(tr("Completion"));
QSettings *s = Core::ICore::settings();
m_completionSettings.fromSettings(s);
m_commentsSettings.fromSettings(s);
} }
CompletionSettingsPage::~CompletionSettingsPage() CompletionSettingsPage::~CompletionSettingsPage()
@@ -60,11 +65,8 @@ QWidget *CompletionSettingsPage::widget()
static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
this, &CompletionSettingsPage::onCompletionTriggerChanged); this, &CompletionSettingsPage::onCompletionTriggerChanged);
const TextEditor::CompletionSettings &completionSettings =
TextEditor::TextEditorSettings::completionSettings();
int caseSensitivityIndex = 0; int caseSensitivityIndex = 0;
switch (completionSettings.m_caseSensitivity) { switch (m_completionSettings.m_caseSensitivity) {
case TextEditor::CaseSensitive: case TextEditor::CaseSensitive:
caseSensitivityIndex = 0; caseSensitivityIndex = 0;
break; break;
@@ -77,7 +79,7 @@ QWidget *CompletionSettingsPage::widget()
} }
int completionTriggerIndex = 0; int completionTriggerIndex = 0;
switch (completionSettings.m_completionTrigger) { switch (m_completionSettings.m_completionTrigger) {
case TextEditor::ManualCompletion: case TextEditor::ManualCompletion:
completionTriggerIndex = 0; completionTriggerIndex = 0;
break; break;
@@ -92,19 +94,18 @@ QWidget *CompletionSettingsPage::widget()
m_page->caseSensitivity->setCurrentIndex(caseSensitivityIndex); m_page->caseSensitivity->setCurrentIndex(caseSensitivityIndex);
m_page->completionTrigger->setCurrentIndex(completionTriggerIndex); m_page->completionTrigger->setCurrentIndex(completionTriggerIndex);
m_page->automaticProposalTimeoutSpinBox m_page->automaticProposalTimeoutSpinBox
->setValue(completionSettings.m_automaticProposalTimeoutInMs); ->setValue(m_completionSettings.m_automaticProposalTimeoutInMs);
m_page->insertBrackets->setChecked(completionSettings.m_autoInsertBrackets); m_page->insertBrackets->setChecked(m_completionSettings.m_autoInsertBrackets);
m_page->surroundBrackets->setChecked(completionSettings.m_surroundingAutoBrackets); m_page->surroundBrackets->setChecked(m_completionSettings.m_surroundingAutoBrackets);
m_page->insertQuotes->setChecked(completionSettings.m_autoInsertQuotes); m_page->insertQuotes->setChecked(m_completionSettings.m_autoInsertQuotes);
m_page->surroundQuotes->setChecked(completionSettings.m_surroundingAutoQuotes); m_page->surroundQuotes->setChecked(m_completionSettings.m_surroundingAutoQuotes);
m_page->partiallyComplete->setChecked(completionSettings.m_partiallyComplete); m_page->partiallyComplete->setChecked(m_completionSettings.m_partiallyComplete);
m_page->spaceAfterFunctionName->setChecked(completionSettings.m_spaceAfterFunctionName); m_page->spaceAfterFunctionName->setChecked(m_completionSettings.m_spaceAfterFunctionName);
m_page->autoSplitStrings->setChecked(completionSettings.m_autoSplitStrings); m_page->autoSplitStrings->setChecked(m_completionSettings.m_autoSplitStrings);
const CommentsSettings &commentsSettings = CppToolsSettings::instance()->commentsSettings(); m_page->enableDoxygenCheckBox->setChecked(m_commentsSettings.m_enableDoxygen);
m_page->enableDoxygenCheckBox->setChecked(commentsSettings.m_enableDoxygen); m_page->generateBriefCheckBox->setChecked(m_commentsSettings.m_generateBrief);
m_page->generateBriefCheckBox->setChecked(commentsSettings.m_generateBrief); m_page->leadingAsterisksCheckBox->setChecked(m_commentsSettings.m_leadingAsterisks);
m_page->leadingAsterisksCheckBox->setChecked(commentsSettings.m_leadingAsterisks);
m_page->generateBriefCheckBox->setEnabled(m_page->enableDoxygenCheckBox->isChecked()); m_page->generateBriefCheckBox->setEnabled(m_page->enableDoxygenCheckBox->isChecked());
} }
@@ -116,28 +117,22 @@ void CompletionSettingsPage::apply()
if (!m_page) // page was never shown if (!m_page) // page was never shown
return; return;
TextEditor::CompletionSettings completionSettings; CompletionSettings completionSettings;
completionSettings.m_caseSensitivity = caseSensitivity();
completionSettings.m_completionTrigger = completionTrigger();
completionSettings.m_automaticProposalTimeoutInMs
= m_page->automaticProposalTimeoutSpinBox->value();
completionSettings.m_autoInsertBrackets = m_page->insertBrackets->isChecked();
completionSettings.m_surroundingAutoBrackets = m_page->surroundBrackets->isChecked();
completionSettings.m_autoInsertQuotes = m_page->insertQuotes->isChecked();
completionSettings.m_surroundingAutoQuotes = m_page->surroundQuotes->isChecked();
completionSettings.m_partiallyComplete = m_page->partiallyComplete->isChecked();
completionSettings.m_spaceAfterFunctionName = m_page->spaceAfterFunctionName->isChecked();
completionSettings.m_autoSplitStrings = m_page->autoSplitStrings->isChecked();
TextEditor::TextEditorSettings::setCompletionSettings(completionSettings);
if (!requireCommentsSettingsUpdate())
return;
CommentsSettings commentsSettings; CommentsSettings commentsSettings;
commentsSettings.m_enableDoxygen = m_page->enableDoxygenCheckBox->isChecked();
commentsSettings.m_generateBrief = m_page->generateBriefCheckBox->isChecked(); settingsFromUi(completionSettings, commentsSettings);
commentsSettings.m_leadingAsterisks = m_page->leadingAsterisksCheckBox->isChecked();
CppToolsSettings::instance()->setCommentsSettings(commentsSettings); if (m_completionSettings != completionSettings) {
m_completionSettings = completionSettings;
m_completionSettings.toSettings(Core::ICore::settings());
emit completionSettingsChanged(completionSettings);
}
if (m_commentsSettings != commentsSettings) {
m_commentsSettings = commentsSettings;
m_commentsSettings.toSettings(Core::ICore::settings());
emit commentsSettingsChanged(commentsSettings);
}
} }
TextEditor::CaseSensitivity CompletionSettingsPage::caseSensitivity() const TextEditor::CaseSensitivity CompletionSettingsPage::caseSensitivity() const
@@ -164,6 +159,28 @@ TextEditor::CompletionTrigger CompletionSettingsPage::completionTrigger() const
} }
} }
void CompletionSettingsPage::settingsFromUi(CompletionSettings &completion, CommentsSettings &comment) const
{
if (!m_page)
return;
completion.m_caseSensitivity = caseSensitivity();
completion.m_completionTrigger = completionTrigger();
completion.m_automaticProposalTimeoutInMs
= m_page->automaticProposalTimeoutSpinBox->value();
completion.m_autoInsertBrackets = m_page->insertBrackets->isChecked();
completion.m_surroundingAutoBrackets = m_page->surroundBrackets->isChecked();
completion.m_autoInsertQuotes = m_page->insertQuotes->isChecked();
completion.m_surroundingAutoQuotes = m_page->surroundQuotes->isChecked();
completion.m_partiallyComplete = m_page->partiallyComplete->isChecked();
completion.m_spaceAfterFunctionName = m_page->spaceAfterFunctionName->isChecked();
completion.m_autoSplitStrings = m_page->autoSplitStrings->isChecked();
comment.m_enableDoxygen = m_page->enableDoxygenCheckBox->isChecked();
comment.m_generateBrief = m_page->generateBriefCheckBox->isChecked();
comment.m_leadingAsterisks = m_page->leadingAsterisksCheckBox->isChecked();
}
void CompletionSettingsPage::onCompletionTriggerChanged() void CompletionSettingsPage::onCompletionTriggerChanged()
{ {
const bool enableTimeoutWidgets = completionTrigger() == TextEditor::AutomaticCompletion; const bool enableTimeoutWidgets = completionTrigger() == TextEditor::AutomaticCompletion;
@@ -180,10 +197,12 @@ void CompletionSettingsPage::finish()
m_page = 0; m_page = 0;
} }
bool CompletionSettingsPage::requireCommentsSettingsUpdate() const const CompletionSettings &CompletionSettingsPage::completionSettings()
{ {
const CommentsSettings &commentsSettings = CppToolsSettings::instance()->commentsSettings(); return m_completionSettings;
return commentsSettings.m_enableDoxygen != m_page->enableDoxygenCheckBox->isChecked() }
|| commentsSettings.m_generateBrief != m_page->generateBriefCheckBox->isChecked()
|| commentsSettings.m_leadingAsterisks != m_page->leadingAsterisksCheckBox->isChecked(); const CommentsSettings &CompletionSettingsPage::commentsSettings()
{
return m_commentsSettings;
} }

View File

@@ -26,20 +26,18 @@
#pragma once #pragma once
#include "commentssettings.h" #include "commentssettings.h"
#include "completionsettings.h"
#include "texteditoroptionspage.h"
#include <texteditor/completionsettings.h>
#include <texteditor/texteditoroptionspage.h>
#include <QPointer> #include <QPointer>
namespace CppTools { namespace TextEditor {
namespace Internal { namespace Internal {
namespace Ui { class CompletionSettingsPage; } namespace Ui { class CompletionSettingsPage; }
// TODO: Move this class to the text editor plugin class CompletionSettingsPage : public TextEditorOptionsPage
class CompletionSettingsPage : public TextEditor::TextEditorOptionsPage
{ {
Q_OBJECT Q_OBJECT
@@ -51,18 +49,25 @@ public:
void apply(); void apply();
void finish(); void finish();
const CompletionSettings & completionSettings();
const CommentsSettings & commentsSettings();
signals:
void completionSettingsChanged(const CompletionSettings &);
void commentsSettingsChanged(const CommentsSettings &);
private: private:
TextEditor::CaseSensitivity caseSensitivity() const; CaseSensitivity caseSensitivity() const;
TextEditor::CompletionTrigger completionTrigger() const; CompletionTrigger completionTrigger() const;
void settingsFromUi(CompletionSettings &completion, CommentsSettings &comment) const;
void onCompletionTriggerChanged(); void onCompletionTriggerChanged();
bool requireCommentsSettingsUpdate() const;
Ui::CompletionSettingsPage *m_page; Ui::CompletionSettingsPage *m_page;
QPointer<QWidget> m_widget; QPointer<QWidget> m_widget;
CommentsSettings m_commentsSettings; CommentsSettings m_commentsSettings;
CompletionSettings m_completionSettings;
}; };
} // namespace Internal } // namespace Internal
} // namespace CppTools } // namespace TextEditor

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>CppTools::Internal::CompletionSettingsPage</class> <class>TextEditor::Internal::CompletionSettingsPage</class>
<widget class="QWidget" name="CppTools::Internal::CompletionSettingsPage"> <widget class="QWidget" name="CppTools::Internal::CompletionSettingsPage">
<property name="geometry"> <property name="geometry">
<rect> <rect>

View File

@@ -6549,7 +6549,6 @@ void TextEditorWidget::setCompletionSettings(const CompletionSettings &completio
d->m_autoCompleter->setSurroundWithBracketsEnabled(completionSettings.m_surroundingAutoBrackets); d->m_autoCompleter->setSurroundWithBracketsEnabled(completionSettings.m_surroundingAutoBrackets);
d->m_autoCompleter->setAutoInsertQuotesEnabled(completionSettings.m_autoInsertQuotes); d->m_autoCompleter->setAutoInsertQuotesEnabled(completionSettings.m_autoInsertQuotes);
d->m_autoCompleter->setSurroundWithQuotesEnabled(completionSettings.m_surroundingAutoQuotes); d->m_autoCompleter->setSurroundWithQuotesEnabled(completionSettings.m_surroundingAutoQuotes);
d->m_codeAssistant.updateFromCompletionSettings(completionSettings);
} }
void TextEditorWidget::setExtraEncodingSettings(const ExtraEncodingSettings &extraEncodingSettings) void TextEditorWidget::setExtraEncodingSettings(const ExtraEncodingSettings &extraEncodingSettings)

View File

@@ -102,6 +102,8 @@ SOURCES += texteditorplugin.cpp \
circularclipboardassist.cpp \ circularclipboardassist.cpp \
textmark.cpp \ textmark.cpp \
codeassist/keywordscompletionassist.cpp \ codeassist/keywordscompletionassist.cpp \
completionsettingspage.cpp \
commentssettings.cpp \
marginsettings.cpp marginsettings.cpp
HEADERS += texteditorplugin.h \ HEADERS += texteditorplugin.h \
@@ -217,6 +219,8 @@ HEADERS += texteditorplugin.h \
textmarkregistry.h \ textmarkregistry.h \
marginsettings.h \ marginsettings.h \
blockrange.h \ blockrange.h \
completionsettingspage.h \
commentssettings.h \
textstyles.h textstyles.h
FORMS += \ FORMS += \
@@ -229,6 +233,7 @@ FORMS += \
behaviorsettingswidget.ui \ behaviorsettingswidget.ui \
behaviorsettingspage.ui \ behaviorsettingspage.ui \
tabsettingswidget.ui \ tabsettingswidget.ui \
completionsettingspage.ui \
codestyleselectorwidget.ui codestyleselectorwidget.ui
RESOURCES += texteditor.qrc RESOURCES += texteditor.qrc

View File

@@ -48,8 +48,13 @@ QtcPlugin {
"colorschemeedit.cpp", "colorschemeedit.cpp",
"colorschemeedit.h", "colorschemeedit.h",
"colorschemeedit.ui", "colorschemeedit.ui",
"commentssettings.cpp",
"commentssettings.h",
"completionsettings.cpp", "completionsettings.cpp",
"completionsettings.h", "completionsettings.h",
"completionsettingspage.cpp",
"completionsettingspage.h",
"completionsettingspage.ui",
"convenience.cpp", "convenience.cpp",
"convenience.h", "convenience.h",
"displaysettings.cpp", "displaysettings.cpp",

View File

@@ -40,6 +40,7 @@
#include "extraencodingsettings.h" #include "extraencodingsettings.h"
#include "icodestylepreferences.h" #include "icodestylepreferences.h"
#include "icodestylepreferencesfactory.h" #include "icodestylepreferencesfactory.h"
#include "completionsettingspage.h"
#include <texteditor/generichighlighter/highlightersettingspage.h> #include <texteditor/generichighlighter/highlightersettingspage.h>
#include <texteditor/snippets/snippetssettingspage.h> #include <texteditor/snippets/snippetssettingspage.h>
@@ -64,14 +65,13 @@ public:
DisplaySettingsPage *m_displaySettingsPage; DisplaySettingsPage *m_displaySettingsPage;
HighlighterSettingsPage *m_highlighterSettingsPage; HighlighterSettingsPage *m_highlighterSettingsPage;
SnippetsSettingsPage *m_snippetsSettingsPage; SnippetsSettingsPage *m_snippetsSettingsPage;
CompletionSettingsPage *m_completionSettingsPage;
QMap<Core::Id, ICodeStylePreferencesFactory *> m_languageToFactory; QMap<Core::Id, ICodeStylePreferencesFactory *> m_languageToFactory;
QMap<Core::Id, ICodeStylePreferences *> m_languageToCodeStyle; QMap<Core::Id, ICodeStylePreferences *> m_languageToCodeStyle;
QMap<Core::Id, CodeStylePool *> m_languageToCodeStylePool; QMap<Core::Id, CodeStylePool *> m_languageToCodeStylePool;
QMap<QString, Core::Id> m_mimeTypeToLanguage; QMap<QString, Core::Id> m_mimeTypeToLanguage;
CompletionSettings m_completionSettings;
}; };
} // namespace Internal } // namespace Internal
@@ -339,6 +339,9 @@ TextEditorSettings::TextEditorSettings(QObject *parent)
new SnippetsSettingsPage(Constants::TEXT_EDITOR_SNIPPETS_SETTINGS, this); new SnippetsSettingsPage(Constants::TEXT_EDITOR_SNIPPETS_SETTINGS, this);
ExtensionSystem::PluginManager::addObject(d->m_snippetsSettingsPage); ExtensionSystem::PluginManager::addObject(d->m_snippetsSettingsPage);
d->m_completionSettingsPage = new CompletionSettingsPage(this);
ExtensionSystem::PluginManager::addObject(d->m_completionSettingsPage);
connect(d->m_fontSettingsPage, &FontSettingsPage::changed, connect(d->m_fontSettingsPage, &FontSettingsPage::changed,
this, &TextEditorSettings::fontSettingsChanged); this, &TextEditorSettings::fontSettingsChanged);
connect(d->m_behaviorSettingsPage, &BehaviorSettingsPage::typingSettingsChanged, connect(d->m_behaviorSettingsPage, &BehaviorSettingsPage::typingSettingsChanged,
@@ -353,9 +356,10 @@ TextEditorSettings::TextEditorSettings(QObject *parent)
this, &TextEditorSettings::marginSettingsChanged); this, &TextEditorSettings::marginSettingsChanged);
connect(d->m_displaySettingsPage, &DisplaySettingsPage::displaySettingsChanged, connect(d->m_displaySettingsPage, &DisplaySettingsPage::displaySettingsChanged,
this, &TextEditorSettings::displaySettingsChanged); this, &TextEditorSettings::displaySettingsChanged);
connect(d->m_completionSettingsPage, &CompletionSettingsPage::completionSettingsChanged,
// TODO: Move these settings to TextEditor category this, &TextEditorSettings::completionSettingsChanged);
d->m_completionSettings.fromSettings(QLatin1String("CppTools/"), Core::ICore::settings()); connect(d->m_completionSettingsPage, &CompletionSettingsPage::commentsSettingsChanged,
this, &TextEditorSettings::commentsSettingsChanged);
} }
TextEditorSettings::~TextEditorSettings() TextEditorSettings::~TextEditorSettings()
@@ -365,6 +369,7 @@ TextEditorSettings::~TextEditorSettings()
ExtensionSystem::PluginManager::removeObject(d->m_displaySettingsPage); ExtensionSystem::PluginManager::removeObject(d->m_displaySettingsPage);
ExtensionSystem::PluginManager::removeObject(d->m_highlighterSettingsPage); ExtensionSystem::PluginManager::removeObject(d->m_highlighterSettingsPage);
ExtensionSystem::PluginManager::removeObject(d->m_snippetsSettingsPage); ExtensionSystem::PluginManager::removeObject(d->m_snippetsSettingsPage);
ExtensionSystem::PluginManager::removeObject(d->m_completionSettingsPage);
delete d; delete d;
@@ -408,7 +413,7 @@ const DisplaySettings &TextEditorSettings::displaySettings()
const CompletionSettings &TextEditorSettings::completionSettings() const CompletionSettings &TextEditorSettings::completionSettings()
{ {
return d->m_completionSettings; return d->m_completionSettingsPage->completionSettings();
} }
const HighlighterSettings &TextEditorSettings::highlighterSettings() const HighlighterSettings &TextEditorSettings::highlighterSettings()
@@ -421,15 +426,9 @@ const ExtraEncodingSettings &TextEditorSettings::extraEncodingSettings()
return d->m_behaviorSettingsPage->extraEncodingSettings(); return d->m_behaviorSettingsPage->extraEncodingSettings();
} }
void TextEditorSettings::setCompletionSettings(const CompletionSettings &settings) const CommentsSettings &TextEditorSettings::commentsSettings()
{ {
if (d->m_completionSettings == settings) return d->m_completionSettingsPage->commentsSettings();
return;
d->m_completionSettings = settings;
d->m_completionSettings.toSettings(QLatin1String("CppTools/"), Core::ICore::settings());
emit m_instance->completionSettingsChanged(d->m_completionSettings);
} }
void TextEditorSettings::registerCodeStyleFactory(ICodeStylePreferencesFactory *factory) void TextEditorSettings::registerCodeStyleFactory(ICodeStylePreferencesFactory *factory)

View File

@@ -51,6 +51,7 @@ class ExtraEncodingSettings;
class ICodeStylePreferences; class ICodeStylePreferences;
class ICodeStylePreferencesFactory; class ICodeStylePreferencesFactory;
class CodeStylePool; class CodeStylePool;
class CommentsSettings;
/** /**
* This class provides a central place for basic text editor settings. These * This class provides a central place for basic text editor settings. These
@@ -76,8 +77,7 @@ public:
static const CompletionSettings &completionSettings(); static const CompletionSettings &completionSettings();
static const HighlighterSettings &highlighterSettings(); static const HighlighterSettings &highlighterSettings();
static const ExtraEncodingSettings &extraEncodingSettings(); static const ExtraEncodingSettings &extraEncodingSettings();
static const CommentsSettings &commentsSettings();
static void setCompletionSettings(const TextEditor::CompletionSettings &);
static ICodeStylePreferencesFactory *codeStyleFactory(Core::Id languageId); static ICodeStylePreferencesFactory *codeStyleFactory(Core::Id languageId);
static QMap<Core::Id, ICodeStylePreferencesFactory *> codeStyleFactories(); static QMap<Core::Id, ICodeStylePreferencesFactory *> codeStyleFactories();
@@ -109,6 +109,7 @@ signals:
void displaySettingsChanged(const TextEditor::DisplaySettings &); void displaySettingsChanged(const TextEditor::DisplaySettings &);
void completionSettingsChanged(const TextEditor::CompletionSettings &); void completionSettingsChanged(const TextEditor::CompletionSettings &);
void extraEncodingSettingsChanged(const TextEditor::ExtraEncodingSettings &); void extraEncodingSettingsChanged(const TextEditor::ExtraEncodingSettings &);
void commentsSettingsChanged(const TextEditor::CommentsSettings &);
}; };
} // namespace TextEditor } // namespace TextEditor