Index: autotests/src/katedocument_test.cpp =================================================================== --- autotests/src/katedocument_test.cpp +++ autotests/src/katedocument_test.cpp @@ -317,7 +317,7 @@ }; doc.setHighlightingMode ("Normal"); // Just to be sure - view->config()->setAutoBrackets(true); + view->config()->setValue(KateViewConfig::AutoBrackets, true); QString testInput; @@ -623,7 +623,7 @@ { KTextEditor::DocumentPrivate doc; auto view = static_cast(doc.createView(nullptr)); - view->config()->setBackspaceRemoveComposed(true); + view->config()->setValue(KateViewConfig::BackspaceRemoveComposedCharacters, true); doc.setText(QString::fromUtf8("व्यक्तियों")); doc.del(view, Cursor(0, 0)); Index: autotests/src/kateview_test.cpp =================================================================== --- autotests/src/kateview_test.cpp +++ autotests/src/kateview_test.cpp @@ -309,7 +309,7 @@ QCOMPARE(view->cursorPosition(), cur2); // Be at end: foobar|haz QCOMPARE(view->selection(), false); - view->config()->setPersistentSelection(true); + view->config()->setValue(KateViewConfig::PersistentSelection, true); view->setSelection(range); view->setCursorPositionInternal(cur1); @@ -369,7 +369,7 @@ view->show(); // enable "[x] Scroll past end of document" - view->config()->setScrollPastEnd(true); + view->config()->setValue(KateViewConfig::ScrollPastEnd, true); QCOMPARE(view->config()->scrollPastEnd(), true); // disable dynamic word wrap @@ -403,14 +403,14 @@ QCOMPARE(doc.highlightingMode(), QString("C++")); KTextEditor::ViewPrivate *view = new KTextEditor::ViewPrivate(&doc, nullptr); - view->config()->setFoldFirstLine(false); + view->config()->setValue(KateViewConfig::FoldFirstLine, false); view->setCursorPosition({4, 0}); // initially, nothing is folded QVERIFY(view->textFolding().isLineVisible(1)); // now change the config, and expect the header to be folded - view->config()->setFoldFirstLine(true); + view->config()->setValue(KateViewConfig::FoldFirstLine, true); qint64 foldedRangeId = 0; QVERIFY(!view->textFolding().isLineVisible(1, &foldedRangeId)); Index: autotests/src/testutils.cpp =================================================================== --- autotests/src/testutils.cpp +++ autotests/src/testutils.cpp @@ -166,7 +166,7 @@ void KateViewObject::setAutoBrackets(bool enable) { - view()->config()->setAutoBrackets(enable); + view()->config()->setValue(KateViewConfig::AutoBrackets, enable); } Index: autotests/src/vimode/base.cpp =================================================================== --- autotests/src/vimode/base.cpp +++ autotests/src/vimode/base.cpp @@ -107,8 +107,8 @@ vi_global = vi_input_mode->globalState(); Q_ASSERT(vi_global); kate_document->config()->setShowSpaces(KateDocumentConfig::Trailing); // Flush out some issues in the KateRenderer when rendering spaces. - kate_view->config()->setScrollBarMiniMap(false); - kate_view->config()->setScrollBarPreview(false); + kate_view->config()->setValue(KateViewConfig::ShowScrollBarMiniMap, false); + kate_view->config()->setValue(KateViewConfig::ShowScrollBarPreview, false); connect(kate_document, &KTextEditor::DocumentPrivate::textInserted, this, &BaseTest::textInserted); Index: autotests/src/vimode/completion.cpp =================================================================== --- autotests/src/vimode/completion.cpp +++ autotests/src/vimode/completion.cpp @@ -105,7 +105,7 @@ { // Test that FakeCodeCompletionTestModel behaves similar to the code-completion in e.g. KDevelop. const bool oldStealKeys = KateViewConfig::global()->viInputModeStealKeys(); - KateViewConfig::global()->setViInputModeStealKeys(true); // For Ctrl-P, Ctrl-N etc + KateViewConfig::global()->setValue(KateViewConfig::ViInputModeStealKeys, true); // For Ctrl-P, Ctrl-N etc ensureKateViewVisible(); // KTextEditor::ViewPrivate needs to be visible for the completion widget. FakeCodeCompletionTestModel *fakeCodeCompletionModel = new FakeCodeCompletionTestModel(kate_view); kate_view->registerCompletionModel(fakeCodeCompletionModel); @@ -432,7 +432,7 @@ TestPressKey("ifun\\ctrl- \\enterX"); FinishTest("functionCall(X);(<-old bracket"); - KateViewConfig::global()->setViInputModeStealKeys(oldStealKeys); + KateViewConfig::global()->setValue(KateViewConfig::ViInputModeStealKeys, oldStealKeys); kate_view->hide(); mainWindow->hide(); kate_view->unregisterCompletionModel(fakeCodeCompletionModel); @@ -443,9 +443,9 @@ { const bool oldRemoveTailOnCompletion = KateViewConfig::global()->wordCompletionRemoveTail(); // For these tests, assume we don't swallow the tail on completion. - KateViewConfig::global()->setWordCompletionRemoveTail(false); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, false); - KateViewConfig::global()->setViInputModeStealKeys(true); // For Ctrl-P, Ctrl-N etc + KateViewConfig::global()->setValue(KateViewConfig::ViInputModeStealKeys, true); // For Ctrl-P, Ctrl-N etc ensureKateViewVisible(); // KTextEditor::ViewPrivate needs to be visible for the completion widget. VimCodeCompletionTestModel *testModel = new VimCodeCompletionTestModel(kate_view); @@ -554,7 +554,7 @@ // i.e. fairly intelligently :) FakeCodeCompletionTestModel *fakeCodeCompletionModel = new FakeCodeCompletionTestModel(kate_view); fakeCodeCompletionModel->setRemoveTailOnComplete(true); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); kate_view->registerCompletionModel(fakeCodeCompletionModel); clearAllMacros(); BeginTest("funct\nnoa\ncomtail\ncomtail"); @@ -564,13 +564,13 @@ TestPressKey("i\\right\\right\\right\\right\\right\\ctrl- \\enterfirstArg"); // Function with args. TestPressKey("\\home\\down\\right\\right\\right\\ctrl- \\enter"); // Function no args. fakeCodeCompletionModel->setRemoveTailOnComplete(true); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); TestPressKey("\\home\\down\\right\\right\\right\\ctrl- \\enter"); // Cut off tail. fakeCodeCompletionModel->setRemoveTailOnComplete(false); - KateViewConfig::global()->setWordCompletionRemoveTail(false); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, false); TestPressKey("\\home\\down\\right\\right\\right\\ctrl- \\enter\\ctrl-c"); // Don't cut off tail. fakeCodeCompletionModel->setRemoveTailOnComplete(true); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); // Replay. fakeCodeCompletionModel->setFailTestOnInvocation(true); kate_document->setText("funct\nnoa\ncomtail\ncomtail"); @@ -590,7 +590,7 @@ kate_view->unregisterCompletionModel(fakeCodeCompletionModel); delete fakeCodeCompletionModel; - KateViewConfig::global()->setWordCompletionRemoveTail(oldRemoveTailOnCompletion); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, oldRemoveTailOnCompletion); // Hide the kate_view for subsequent tests. kate_view->hide(); Index: autotests/src/vimode/emulatedcommandbarsetupandteardown.cpp =================================================================== --- autotests/src/vimode/emulatedcommandbarsetupandteardown.cpp +++ autotests/src/vimode/emulatedcommandbarsetupandteardown.cpp @@ -68,7 +68,7 @@ while (QApplication::hasPendingEvents()) { QApplication::processEvents(); } - KateViewConfig::global()->setViInputModeStealKeys(true); + KateViewConfig::global()->setValue(KateViewConfig::ViInputModeStealKeys, true); m_window->installEventFilter(&m_windowKeepActive); } EmulatedCommandBarSetUpAndTearDown::~EmulatedCommandBarSetUpAndTearDown() @@ -78,7 +78,7 @@ QMetaObject::invokeMethod(m_viInputMode->viModeEmulatedCommandBar(), "hideMe"); m_view->hide(); m_window->hide(); - KateViewConfig::global()->setViInputModeStealKeys(false); + KateViewConfig::global()->setValue(KateViewConfig::ViInputModeStealKeys, false); while (QApplication::hasPendingEvents()) { QApplication::processEvents(); } Index: autotests/src/vimode/keys.cpp =================================================================== --- autotests/src/vimode/keys.cpp +++ autotests/src/vimode/keys.cpp @@ -45,7 +45,7 @@ // QVERIFY(false); const int mappingTimeoutMSOverride = QString::fromLocal8Bit(qgetenv("KATE_VIMODE_TEST_MAPPINGTIMEOUTMS")).toInt(); const int mappingTimeoutMS = (mappingTimeoutMSOverride > 0) ? mappingTimeoutMSOverride : 2000; - KateViewConfig::global()->setViInputModeStealKeys(true); // For tests involving e.g. + KateViewConfig::global()->setValue(KateViewConfig::ViInputModeStealKeys, true); // For tests involving e.g. { // Check storage and retrieval of mapping recursion. clearAllMappings(); @@ -592,7 +592,7 @@ void KeysTest::LeaderTests() { // Clean slate. - KateViewConfig::global()->setViInputModeStealKeys(true); + KateViewConfig::global()->setValue(KateViewConfig::ViInputModeStealKeys, true); clearAllMappings(); // By default the backslash character is the leader. The default leader @@ -662,7 +662,7 @@ // Alt-gr+7 (that is: Alt-gr down; "{"; Alt-gr up). // Ensure we have auto brackets off, or the test will fail - kate_view->config()->setAutoBrackets(false); + kate_view->config()->setValue(KateViewConfig::AutoBrackets, false); BeginTest(""); TestPressKey("i"); @@ -946,7 +946,7 @@ ensureKateViewVisible(); // Want Vim mode to intercept ctrl-p, ctrl-n shortcuts, etc. const bool oldStealKeys = KateViewConfig::global()->viInputModeStealKeys(); - KateViewConfig::global()->setViInputModeStealKeys(true); + KateViewConfig::global()->setValue(KateViewConfig::ViInputModeStealKeys, true); // Don't invoke completion via ctrl-space when replaying a macro. clearAllMacros(); @@ -1095,7 +1095,7 @@ // Note that there is no way (in general) to determine if a completion was // non-tail-removing, so we explicitly set the config to false. const bool oldRemoveTailOnCompletion = KateViewConfig::global()->wordCompletionRemoveTail(); - KateViewConfig::global()->setWordCompletionRemoveTail(false); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, false); const bool oldReplaceTabsDyn = kate_document->config()->replaceTabsDyn(); kate_document->config()->setReplaceTabsDyn(false); fakeCodeCompletionModel->setRemoveTailOnComplete(false); @@ -1121,7 +1121,7 @@ FinishTest("(123_completionATail"); // Correctly remove word if we are set to remove tail. - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); clearAllMacros(); BeginTest("(123_compTail)"); fakeCodeCompletionModel->setCompletions({ "123_completionA" }); @@ -1152,22 +1152,22 @@ fakeCodeCompletionModel->setCompletions({ "123_completionA" }); fakeCodeCompletionModel->setFailTestOnInvocation(false); fakeCodeCompletionModel->setRemoveTailOnComplete(true); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); TestPressKey("qqfTi\\ctrl- \\enter\\ctrl-cq"); fakeCodeCompletionModel->setFailTestOnInvocation(true); - KateViewConfig::global()->setWordCompletionRemoveTail(false); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, false); kate_document->setText("(123_compTail_456)"); TestPressKey("gg@q"); FinishTest("(123_completionA)"); clearAllMacros(); BeginTest("(123_compTail_456)"); fakeCodeCompletionModel->setCompletions({ "123_completionA" }); fakeCodeCompletionModel->setFailTestOnInvocation(false); fakeCodeCompletionModel->setRemoveTailOnComplete(false); - KateViewConfig::global()->setWordCompletionRemoveTail(false); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, false); TestPressKey("qqfTi\\ctrl- \\enter\\ctrl-cq"); fakeCodeCompletionModel->setFailTestOnInvocation(true); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); kate_document->setText("(123_compTail_456)"); TestPressKey("gg@q"); FinishTest("(123_completionATail_456)"); @@ -1178,10 +1178,10 @@ fakeCodeCompletionModel->setCompletions({ "123_completionA" }); fakeCodeCompletionModel->setFailTestOnInvocation(false); fakeCodeCompletionModel->setRemoveTailOnComplete(true); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); TestPressKey("qqfTi\\ctrl- \\enter\\ctrl-c"); fakeCodeCompletionModel->setRemoveTailOnComplete(false); - KateViewConfig::global()->setWordCompletionRemoveTail(false); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, false); TestPressKey("j^fTi\\ctrl- \\enter\\ctrl-cq"); kate_document->setText("(123_compTail_456)\n(123_compTail_456)"); TestPressKey("gg@q"); @@ -1203,7 +1203,7 @@ fakeCodeCompletionModel->setCompletions({ "123_completionA" }); fakeCodeCompletionModel->setFailTestOnInvocation(false); fakeCodeCompletionModel->setRemoveTailOnComplete(false); - KateViewConfig::global()->setWordCompletionRemoveTail(false); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, false); TestPressKey("qqi\\ctrl- \\enter\\ctrl-cq"); kate_document->setText("oldwordshouldbeuntouched"); fakeCodeCompletionModel->setFailTestOnInvocation(true); @@ -1216,7 +1216,7 @@ fakeCodeCompletionModel->setCompletions({ "123_completionA" }); fakeCodeCompletionModel->setFailTestOnInvocation(false); fakeCodeCompletionModel->setRemoveTailOnComplete(true); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); TestPressKey("qqi\\ctrl- \\enter\\ctrl-cq"); kate_document->setText("oldwordshouldbedeleted"); fakeCodeCompletionModel->setFailTestOnInvocation(true); @@ -1226,7 +1226,7 @@ // Completion of functions. // Currently, not removing the tail on function completion is not supported. fakeCodeCompletionModel->setRemoveTailOnComplete(true); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); // A completed, no argument function "function()" is repeated correctly. BeginTest(""); fakeCodeCompletionModel->setCompletions({ "function()" }); @@ -1365,22 +1365,22 @@ BeginTest("funct"); fakeCodeCompletionModel->setCompletions({ "function(...)" }); fakeCodeCompletionModel->setFailTestOnInvocation(false); - KateViewConfig::global()->setWordCompletionRemoveTail(false); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, false); TestPressKey("qqfta\\ctrl- \\enterfirstArg\\ctrl-cq"); kate_document->setText("functxyz"); fakeCodeCompletionModel->setFailTestOnInvocation(true); TestPressKey("gg@q"); FinishTest("function(firstArg)"); BeginTest("funct"); fakeCodeCompletionModel->setCompletions({ "function()" }); fakeCodeCompletionModel->setFailTestOnInvocation(false); - KateViewConfig::global()->setWordCompletionRemoveTail(false); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, false); TestPressKey("qqfta\\ctrl- \\enter\\ctrl-cq"); kate_document->setText("functxyz"); fakeCodeCompletionModel->setFailTestOnInvocation(true); TestPressKey("gg@q"); FinishTest("function()"); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); // Deal with cases where completion ends with ";". BeginTest(""); @@ -1455,13 +1455,13 @@ TestPressKey("qafta\\ctrl- \\enterfirstArg\\ctrl-c"); // Function with args. TestPressKey("\\enterea\\ctrl- \\enter\\ctrl-c"); // Function no args. fakeCodeCompletionModel->setRemoveTailOnComplete(true); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); TestPressKey("\\enterfti\\ctrl- \\enter\\ctrl-c"); // Cut off tail. fakeCodeCompletionModel->setRemoveTailOnComplete(false); - KateViewConfig::global()->setWordCompletionRemoveTail(false); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, false); TestPressKey("\\enterfti\\ctrl- \\enter\\ctrl-cq"); // Don't cut off tail. fakeCodeCompletionModel->setRemoveTailOnComplete(true); - KateViewConfig::global()->setWordCompletionRemoveTail(true); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, true); // Record 'b'. fakeCodeCompletionModel->setCompletions({ "completionB", "semicolonfunctionnoargs();", "semicolonfunctionwithargs(...);" }); TestPressKey("\\enterqbea\\ctrl- \\enter\\ctrl-cosemicolonfunctionw\\ctrl- \\enterX\\ctrl-cosemicolonfunctionn\\ctrl- \\enterX\\ctrl-cq"); @@ -1516,16 +1516,16 @@ FinishTest("completionMacro completionRepeatLastChange completionRepeatLastChange"); } - KateViewConfig::global()->setWordCompletionRemoveTail(oldRemoveTailOnCompletion); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, oldRemoveTailOnCompletion); kate_document->config()->setReplaceTabsDyn(oldReplaceTabsDyn); kate_view->unregisterCompletionModel(fakeCodeCompletionModel); delete fakeCodeCompletionModel; fakeCodeCompletionModel = nullptr; // Hide the kate_view for subsequent tests. kate_view->hide(); mainWindow->hide(); - KateViewConfig::global()->setViInputModeStealKeys(oldStealKeys); + KateViewConfig::global()->setValue(KateViewConfig::ViInputModeStealKeys, oldStealKeys); } void KeysTest::MarkTests() Index: autotests/src/vimode/view.cpp =================================================================== --- autotests/src/vimode/view.cpp +++ autotests/src/vimode/view.cpp @@ -111,7 +111,7 @@ const int oldTabWidth = kate_document->config()->tabWidth(); const int tabWidth = 5; kate_document->config()->setTabWidth(tabWidth); - KateViewConfig::global()->setShowScrollbars(0); + KateViewConfig::global()->setValue(KateViewConfig::ShowScrollbars, KateViewConfig::ScrollbarMode::AlwaysOn); // Compute the maximum width of text before line-wrapping sets it. int textWrappingLength = 1; Index: src/dialogs/katedialogs.cpp =================================================================== --- src/dialogs/katedialogs.cpp +++ src/dialogs/katedialogs.cpp @@ -276,11 +276,13 @@ m_changed = false; KateViewConfig::global()->configStart(); - KateViewConfig::global()->setAutomaticCompletionInvocation(ui->chkAutoCompletionEnabled->isChecked()); - KateViewConfig::global()->setWordCompletion(ui->gbWordCompletion->isChecked()); - KateViewConfig::global()->setWordCompletionMinimalWordLength(ui->minimalWordLength->value()); - KateViewConfig::global()->setWordCompletionRemoveTail(ui->removeTail->isChecked()); - KateViewConfig::global()->setKeywordCompletion(ui->gbKeywordCompletion->isChecked()); + + KateViewConfig::global()->setValue(KateViewConfig::AutomaticCompletionInvocation, ui->chkAutoCompletionEnabled->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::KeywordCompletion, ui->gbKeywordCompletion->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletion, ui->gbWordCompletion->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionMinimalWordLength, ui->minimalWordLength->value()); + KateViewConfig::global()->setValue(KateViewConfig::WordCompletionRemoveTail, ui->removeTail->isChecked()); + KateViewConfig::global()->configEnd(); } @@ -416,16 +418,13 @@ KateViewConfig::global()->configStart(); KateDocumentConfig::global()->configStart(); - KateDocumentConfig::global()->setSmartHome(ui->chkSmartHome->isChecked()); - - KateViewConfig::global()->setAutoCenterLines(qMax(0, ui->sbAutoCenterCursor->value())); KateDocumentConfig::global()->setPageUpDownMovesCursor(ui->chkPagingMovesCursor->isChecked()); + KateDocumentConfig::global()->setSmartHome(ui->chkSmartHome->isChecked()); - KateViewConfig::global()->setPersistentSelection(ui->cbTextSelectionMode->currentIndex() == 1); - - KateViewConfig::global()->setScrollPastEnd(ui->chkScrollPastEnd->isChecked()); - - KateViewConfig::global()->setBackspaceRemoveComposed(ui->chkBackspaceRemoveComposed->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::AutoCenterLines, ui->sbAutoCenterCursor->value()); + KateViewConfig::global()->setValue(KateViewConfig::BackspaceRemoveComposedCharacters, ui->chkBackspaceRemoveComposed->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::PersistentSelection, ui->cbTextSelectionMode->currentIndex() == 1); + KateViewConfig::global()->setValue(KateViewConfig::ScrollPastEnd, ui->chkScrollPastEnd->isChecked()); KateDocumentConfig::global()->configEnd(); KateViewConfig::global()->configEnd(); @@ -500,11 +499,10 @@ KateRendererConfig::global()->setWordWrapMarker(ui->chkShowStaticWordWrapMarker->isChecked()); - KateViewConfig::global()->setAutoBrackets(ui->chkAutoBrackets->isChecked()); - KateViewConfig::global()->setSmartCopyCut(ui->chkSmartCopyCut->isChecked()); - KateViewConfig::global()->setMousePasteAtCursorPosition(ui->chkMousePasteAtCursorPosition->isChecked()); - - KateViewConfig::global()->setInputModeRaw(ui->cmbInputMode->currentData().toInt()); + KateViewConfig::global()->setValue(KateViewConfig::AutoBrackets, ui->chkAutoBrackets->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::InputMode, ui->cmbInputMode->currentData().toInt()); + KateViewConfig::global()->setValue(KateViewConfig::MousePasteAtCursorPosition, ui->chkMousePasteAtCursorPosition->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::SmartCopyCut, ui->chkSmartCopyCut->isChecked()); KateDocumentConfig::global()->configEnd(); KateViewConfig::global()->configEnd(); @@ -722,31 +720,30 @@ KateRendererConfig::global()->configStart(); KateViewConfig::global()->setDynWordWrap(textareaUi->gbWordWrap->isChecked()); - KateViewConfig::global()->setDynWrapAtStaticMarker(textareaUi->chkDynWrapAtStaticMarker->isChecked()); - KateViewConfig::global()->setDynWordWrapIndicators(textareaUi->cmbDynamicWordWrapIndicator->currentIndex()); - KateViewConfig::global()->setDynWordWrapAlignIndent(textareaUi->sbDynamicWordWrapDepth->value()); + KateViewConfig::global()->setValue(KateViewConfig::DynWrapAtStaticMarker, textareaUi->chkDynWrapAtStaticMarker->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::DynWordWrapIndicators, textareaUi->cmbDynamicWordWrapIndicator->currentIndex()); + KateViewConfig::global()->setValue(KateViewConfig::DynWordWrapAlignIndent, textareaUi->sbDynamicWordWrapDepth->value()); KateDocumentConfig::global()->setShowTabs(textareaUi->chkShowTabs->isChecked()); KateDocumentConfig::global()->setShowSpaces(KateDocumentConfig::WhitespaceRendering(textareaUi->spacesComboBox->currentIndex())); KateDocumentConfig::global()->setMarkerSize(textareaUi->sliSetMarkerSize->value()); - KateViewConfig::global()->setLineNumbers(bordersUi->chkLineNumbers->isChecked()); - KateViewConfig::global()->setIconBar(bordersUi->chkIconBorder->isChecked()); - KateViewConfig::global()->setScrollBarMarks(bordersUi->chkScrollbarMarks->isChecked()); - KateViewConfig::global()->setScrollBarPreview(bordersUi->chkScrollbarPreview->isChecked()); - KateViewConfig::global()->setScrollBarMiniMap(bordersUi->chkScrollbarMiniMap->isChecked()); - KateViewConfig::global()->setScrollBarMiniMapAll(bordersUi->chkScrollbarMiniMapAll->isChecked()); - KateViewConfig::global()->setScrollBarMiniMapWidth(bordersUi->spBoxMiniMapWidth->value()); - KateViewConfig::global()->setFoldingBar(bordersUi->chkShowFoldingMarkers->isChecked()); - KateViewConfig::global()->setFoldingPreview(bordersUi->chkShowFoldingPreview->isChecked()); - KateViewConfig::global()->setLineModification(bordersUi->chkShowLineModification->isChecked()); - KateViewConfig::global()->setShowScrollbars(bordersUi->cmbShowScrollbars->currentIndex()); - - KateViewConfig::global()->setBookmarkSort(bordersUi->rbSortBookmarksByPosition->isChecked() ? 0 : 1); + KateViewConfig::global()->setValue(KateViewConfig::ShowLineNumbers, bordersUi->chkLineNumbers->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ShowIconBar, bordersUi->chkIconBorder->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ShowScrollBarMarks, bordersUi->chkScrollbarMarks->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ShowScrollBarPreview, bordersUi->chkScrollbarPreview->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ShowScrollBarMiniMap, bordersUi->chkScrollbarMiniMap->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ShowScrollBarMiniMapAll, bordersUi->chkScrollbarMiniMapAll->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ScrollBarMiniMapWidth, bordersUi->spBoxMiniMapWidth->value()); + KateViewConfig::global()->setValue(KateViewConfig::ShowFoldingBar, bordersUi->chkShowFoldingMarkers->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ShowFoldingPreview, bordersUi->chkShowFoldingPreview->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ShowLineModification, bordersUi->chkShowLineModification->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ShowScrollbars, bordersUi->cmbShowScrollbars->currentIndex()); + KateViewConfig::global()->setValue(KateViewConfig::BookmarkSorting, bordersUi->rbSortBookmarksByPosition->isChecked() ? 0 : 1); KateRendererConfig::global()->setShowIndentationLines(textareaUi->chkShowIndentationLines->isChecked()); KateRendererConfig::global()->setShowWholeBracketExpression(textareaUi->chkShowWholeBracketExpression->isChecked()); KateRendererConfig::global()->setAnimateBracketMatching(textareaUi->chkAnimateBracketMatching->isChecked()); - KateViewConfig::global()->setFoldFirstLine(textareaUi->chkFoldFirstLine->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::FoldFirstLine, textareaUi->chkFoldFirstLine->isChecked()); KateViewConfig::global()->setShowWordCount(textareaUi->chkShowWordCount->isChecked()); - KateViewConfig::global()->setShowLineCount(textareaUi->chkShowLineCount->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ShowLineCount, textareaUi->chkShowLineCount->isChecked()); KateRendererConfig::global()->configEnd(); KateViewConfig::global()->configEnd(); Index: src/document/katedocument.cpp =================================================================== --- src/document/katedocument.cpp +++ src/document/katedocument.cpp @@ -4863,32 +4863,23 @@ int n; QColor c; foreach (v, m_views) { - if (var == QLatin1String("auto-brackets") && checkBoolValue(val, &state)) { - v->config()->setAutoBrackets(state); + // First, try the new config interface + QVariant help(val); // Special treatment to catch "on"/"off" + if (checkBoolValue(val, &state)) { + help = state; + } + if (v->config()->setValue(var, help)) { + } else if (v->renderer()->config()->setValue(var, help)) { + + // No success? Go the old way } else if (var == QLatin1String("dynamic-word-wrap") && checkBoolValue(val, &state)) { v->config()->setDynWordWrap(state); - } else if (var == QLatin1String("persistent-selection") && checkBoolValue(val, &state)) { - v->config()->setPersistentSelection(state); } else if (var == QLatin1String("block-selection") && checkBoolValue(val, &state)) { v->setBlockSelection(state); - } + //else if ( var = "dynamic-word-wrap-indicators" ) - else if (var == QLatin1String("line-numbers") && checkBoolValue(val, &state)) { - v->config()->setLineNumbers(state); - } else if (var == QLatin1String("icon-border") && checkBoolValue(val, &state)) { - v->config()->setIconBar(state); - } else if (var == QLatin1String("folding-markers") && checkBoolValue(val, &state)) { - v->config()->setFoldingBar(state); - } else if (var == QLatin1String("folding-preview") && checkBoolValue(val, &state)) { - v->config()->setFoldingPreview(state); - } else if (var == QLatin1String("auto-center-lines") && checkIntValue(val, &n)) { - v->config()->setAutoCenterLines(n); } else if (var == QLatin1String("icon-bar-color") && checkColorValue(val, c)) { v->renderer()->config()->setIconBarColor(c); - } else if (var == QLatin1String("scrollbar-minimap") && checkBoolValue(val, &state)) { - v->config()->setScrollBarMiniMap(state); - } else if (var == QLatin1String("scrollbar-preview") && checkBoolValue(val, &state)) { - v->config()->setScrollBarPreview(state); } // RENDERER else if (var == QLatin1String("background-color") && checkColorValue(val, c)) { Index: src/search/katesearchbar.cpp =================================================================== --- src/search/katesearchbar.cpp +++ src/search/katesearchbar.cpp @@ -183,7 +183,7 @@ setMinimumWidth(100); // Copy global to local config backup - const long searchFlags = m_config->searchFlags(); + const auto searchFlags = m_config->searchFlags(); m_incHighlightAll = (searchFlags & KateViewConfig::IncHighlightAll) != 0; m_incFromCursor = (searchFlags & KateViewConfig::IncFromCursor) != 0; m_incMatchCase = (searchFlags & KateViewConfig::IncMatchCase) != 0; @@ -740,15 +740,15 @@ void KateSearchBar::sendConfig() { - const long pastFlags = m_config->searchFlags(); - long futureFlags = pastFlags; + const auto pastFlags = m_config->searchFlags(); + auto futureFlags = pastFlags; if (m_powerUi != nullptr) { const bool OF_POWER = true; backupConfig(OF_POWER); // Update power search flags only - const long incFlagsOnly = pastFlags + const auto incFlagsOnly = pastFlags & (KateViewConfig::IncHighlightAll | KateViewConfig::IncFromCursor | KateViewConfig::IncMatchCase); @@ -770,7 +770,7 @@ backupConfig(OF_INCREMENTAL); // Update incremental search flags only - const long powerFlagsOnly = pastFlags + const auto powerFlagsOnly = pastFlags & (KateViewConfig::PowerMatchCase | KateViewConfig::PowerFromCursor | KateViewConfig::PowerHighlightAll Index: src/utils/kateconfig.h =================================================================== --- src/utils/kateconfig.h +++ src/utils/kateconfig.h @@ -51,27 +51,27 @@ /** * Base Class for the Kate Config Classes + * Current childs are KateDocumentConfig/KateDocumentConfig/KateDocumentConfig */ class KTEXTEDITOR_EXPORT KateConfig { public: /** - * start some config changes - * this method is needed to init some kind of transaction - * for config changes, update will only be done once, at - * configEnd() call + * Start some config changes. + * This method is needed to init some kind of transaction for config changes, + * update will only be done once, at configEnd() call. */ void configStart(); /** - * end a config change transaction, update the concerned - * documents/views/renderers + * End a config change transaction, update the concerned + * KateDocumentConfig/KateDocumentConfig/KateDocumentConfig */ void configEnd(); /** - * global config? - * @return global config object? + * Is this a global config object? + * @return true when this is a global config object */ bool isGlobal() const { @@ -101,24 +101,23 @@ * Might not alter the value if given value fails validation. * @param key config key, aka enum from KateConfig* classes * @param value value to set - * @return value set? + * @return true on success */ bool setValue(const int key, const QVariant &value); /** * Get a config value for the string key. * @param key config key, aka commandName from KateConfig* classes - * @return value for the wanted key, will return invalid variant if key invalid + * @return value for the wanted key, will return invalid variant if key is not known */ QVariant value(const QString &key) const; /** * Set a config value. - * Will ignore set if key not valid - * Might not alter the value if given value fails validation. + * Will do nothing if key is not known or the given value fails validation. * @param key config key, aka commandName from KateConfig* classes * @param value value to set - * @return value set? + * @return true on success */ bool setValue(const QString &key, const QVariant &value); @@ -175,30 +174,31 @@ const QString commandName; /** - * Default value if nothing configured + * Default value if nothing special was configured */ const QVariant defaultValue; /** - * concrete value, per default == defaultValue + * The concrete value, per default == defaultValue */ QVariant value; /** - * a validator function, only if this returns true we accept a value for the entry - * is ignored if not set + * An optional validator function, only when these returns true + * we accept a given new value. + * Is no validator set, we accept any value. */ std::function validator; }; /** - * Read all config entries from given config group + * Read all config entries from given config group. * @param config config group to read from */ void readConfigEntries(const KConfigGroup &config); /** - * Write all config entries to given config group + * Write all config entries to given config group. * @param config config group to write to */ void writeConfigEntries(KConfigGroup &config) const; @@ -931,20 +931,66 @@ public: /** - * Construct a DocumentConfig + * Construct a ViewConfig */ explicit KateViewConfig(KTextEditor::ViewPrivate *view); /** - * Cu DocumentConfig + * Cu ViewConfig */ ~KateViewConfig() override; inline static KateViewConfig *global() { return s_global; } + /** + * All known config keys + * Keep them sorted alphabetic for our convenience + */ + enum ConfigEntryTypes { + AllowMarkMenu, + AutoBrackets, + AutoCenterLines, + AutomaticCompletionInvocation, + BackspaceRemoveComposedCharacters, + BookmarkSorting, + CharsToEncloseSelection, + DefaultMarkType, + DynWordWrapAlignIndent, + DynWordWrapIndicators, + DynWrapAtStaticMarker, + DynamicWordWrap, + FoldFirstLine, + InputMode, + KeywordCompletion, + MaxHistorySize, + MousePasteAtCursorPosition, + PersistentSelection, + ScrollBarMiniMapWidth, + ScrollPastEnd, + SearchFlags, + ShowFoldingBar, + ShowFoldingPreview, + ShowIconBar, + ShowLineCount, + ShowLineModification, + ShowLineNumbers, + ShowScrollBarMarks, + ShowScrollBarMiniMap, + ShowScrollBarMiniMapAll, + ShowScrollBarPreview, + ShowScrollbars, + ShowWordCount, + SmartCopyCut, + ViInputModeStealKeys, + ViRelativeLineNumbers, + WordCompletion, + WordCompletionMinimalWordLength, + WordCompletionRemoveTail, + }; + public: /** * Read config from object @@ -960,67 +1006,101 @@ void updateConfig() override; public: - bool dynWordWrapSet() const + bool dynWordWrap() const + { + return value(DynamicWordWrap).toBool(); + } + void setDynWordWrap(bool on) { - return m_dynWordWrapSet; + setValue(DynamicWordWrap, on); } - bool dynWordWrap() const; - void setDynWordWrap(bool wrap); - bool dynWrapAtStaticMarker() const; - void setDynWrapAtStaticMarker(bool on); + bool dynWrapAtStaticMarker() const + { + return value(DynWrapAtStaticMarker).toBool(); + } - int dynWordWrapIndicators() const; - void setDynWordWrapIndicators(int mode); + int dynWordWrapIndicators() const + { + return value(DynWordWrapIndicators).toInt(); + } - int dynWordWrapAlignIndent() const; - void setDynWordWrapAlignIndent(int indent); + int dynWordWrapAlignIndent() const + { + return value(DynWordWrapAlignIndent).toInt(); + } - bool lineNumbers() const; - void setLineNumbers(bool on); + bool lineNumbers() const + { + return value(ShowLineNumbers).toBool(); + } - bool scrollBarMarks() const; - void setScrollBarMarks(bool on); + bool scrollBarMarks() const + { + return value(ShowScrollBarMarks).toBool(); + } - bool scrollBarPreview() const; - void setScrollBarPreview(bool on); + bool scrollBarPreview() const + { + return value(ShowScrollBarPreview).toBool(); + } - bool scrollBarMiniMap() const; - void setScrollBarMiniMap(bool on); + bool scrollBarMiniMap() const + { + return value(ShowScrollBarMiniMap).toBool(); + } - bool scrollBarMiniMapAll() const; - void setScrollBarMiniMapAll(bool on); + bool scrollBarMiniMapAll() const + { + return value(ShowScrollBarMiniMapAll).toBool(); + } - int scrollBarMiniMapWidth() const; - void setScrollBarMiniMapWidth(int width); + int scrollBarMiniMapWidth() const + { + return value(ScrollBarMiniMapWidth).toInt(); + } /* Whether to show scrollbars */ enum ScrollbarMode { AlwaysOn = 0, ShowWhenNeeded, AlwaysOff }; - int showScrollbars() const; - void setShowScrollbars(int mode); + int showScrollbars() const + { + return value(ShowScrollbars).toInt(); + } - bool iconBar() const; - void setIconBar(bool on); + bool iconBar() const + { + return value(ShowIconBar).toBool(); + } - bool foldingBar() const; - void setFoldingBar(bool on); + bool foldingBar() const + { + return value(ShowFoldingBar).toBool(); + } - bool foldingPreview() const; - void setFoldingPreview(bool on); + bool foldingPreview() const + { + return value(ShowFoldingPreview).toBool(); + } - bool lineModification() const; - void setLineModification(bool on); + bool lineModification() const + { + return value(ShowLineModification).toBool(); + } - int bookmarkSort() const; - void setBookmarkSort(int mode); + int bookmarkSort() const + { + return value(BookmarkSorting).toInt(); + } - int autoCenterLines() const; - void setAutoCenterLines(int lines); + int autoCenterLines() const + { + return value(AutoCenterLines).toInt(); + } enum SearchFlags { IncMatchCase = 1 << 0, @@ -1037,29 +1117,49 @@ PowerUsePlaceholders = 1 << 11 }; - long searchFlags() const; - void setSearchFlags(long flags); + uint searchFlags() const + { + return value(SearchFlags).toUInt(); + } + void setSearchFlags(uint flags) + { + setValue(SearchFlags, flags); + } - int maxHistorySize() const; + int maxHistorySize() const + { + return value(MaxHistorySize).toInt(); + } - uint defaultMarkType() const; - void setDefaultMarkType(uint type); + uint defaultMarkType() const + { + return value(DefaultMarkType).toUInt(); + } - bool allowMarkMenu() const; - void setAllowMarkMenu(bool allow); + bool allowMarkMenu() const + { + return value(AllowMarkMenu).toBool(); + } - bool persistentSelection() const; - void setPersistentSelection(bool on); + bool persistentSelection() const + { + return value(PersistentSelection).toBool(); + } - KTextEditor::View::InputMode inputMode() const; - void setInputMode(KTextEditor::View::InputMode mode); - void setInputModeRaw(int rawmode); + KTextEditor::View::InputMode inputMode() const + { + return static_cast(value(InputMode).toUInt()); + } - bool viInputModeStealKeys() const; - void setViInputModeStealKeys(bool on); + bool viInputModeStealKeys() const + { + return value(ViInputModeStealKeys).toBool(); + } - bool viRelativeLineNumbers() const; - void setViRelativeLineNumbers(bool on); + bool viRelativeLineNumbers() const + { + return value(ViRelativeLineNumbers).toBool(); + } // Do we still need the enum and related functions below? enum TextToSearch { @@ -1070,121 +1170,74 @@ WordSelection = 4 }; - bool automaticCompletionInvocation() const; - void setAutomaticCompletionInvocation(bool on); - - bool wordCompletion() const; - void setWordCompletion(bool on); + bool automaticCompletionInvocation() const + { + return value(AutomaticCompletionInvocation).toBool(); + } - bool keywordCompletion () const; - void setKeywordCompletion (bool on); + bool wordCompletion() const + { + return value(WordCompletion).toBool(); + } - int wordCompletionMinimalWordLength() const; - void setWordCompletionMinimalWordLength(int length); + bool keywordCompletion () const + { + return value(KeywordCompletion).toBool(); + } - bool wordCompletionRemoveTail() const; - void setWordCompletionRemoveTail(bool on); + int wordCompletionMinimalWordLength() const + { + return value(WordCompletionMinimalWordLength).toInt(); + } - bool smartCopyCut() const; - void setSmartCopyCut(bool on); + bool wordCompletionRemoveTail() const + { + return value(WordCompletionRemoveTail).toBool(); + } - bool mousePasteAtCursorPosition() const; - void setMousePasteAtCursorPosition(bool on); + bool smartCopyCut() const + { + return value(SmartCopyCut).toBool(); + } - bool scrollPastEnd() const; - void setScrollPastEnd(bool on); + bool mousePasteAtCursorPosition() const + { + return value(MousePasteAtCursorPosition).toBool(); + } - bool foldFirstLine() const; - void setFoldFirstLine(bool on); + bool scrollPastEnd() const + { + return value(ScrollPastEnd).toBool(); + } - bool showWordCount() const; - void setShowWordCount(bool on); + bool foldFirstLine() const + { + return value(FoldFirstLine).toBool(); + } - bool showLineCount() const; - void setShowLineCount(bool on); + bool showWordCount() const + { + return value(ShowWordCount).toBool(); + } + void setShowWordCount(bool on) + { + setValue(ShowWordCount, on); + } - bool autoBrackets() const; - void setAutoBrackets(bool on); + bool showLineCount() const + { + return value(ShowLineCount).toBool(); + } - bool backspaceRemoveComposed() const; - void setBackspaceRemoveComposed(bool on); + bool autoBrackets() const + { + return value(AutoBrackets).toBool(); + } -private: - bool m_dynWordWrap; - bool m_dynWrapAtStaticMarker; - int m_dynWordWrapIndicators; - int m_dynWordWrapAlignIndent; - bool m_lineNumbers; - bool m_scrollBarMarks; - bool m_scrollBarPreview; - bool m_scrollBarMiniMap; - bool m_scrollBarMiniMapAll; - int m_scrollBarMiniMapWidth; - int m_showScrollbars; - bool m_iconBar; - bool m_foldingBar; - bool m_foldingPreview; - bool m_lineModification; - int m_bookmarkSort; - int m_autoCenterLines; - long m_searchFlags; - int m_maxHistorySize; - uint m_defaultMarkType; - bool m_persistentSelection; - KTextEditor::View::InputMode m_inputMode; - bool m_viInputModeStealKeys; - bool m_viRelativeLineNumbers; - bool m_automaticCompletionInvocation; - bool m_wordCompletion; - bool m_keywordCompletion; - int m_wordCompletionMinimalWordLength; - bool m_wordCompletionRemoveTail; - bool m_smartCopyCut; - bool m_mousePasteAtCursorPosition = false; - bool m_scrollPastEnd; - bool m_foldFirstLine; - bool m_showWordCount = false; - bool m_showLineCount = false; - bool m_autoBrackets; - bool m_backspaceRemoveComposed; - - bool m_dynWordWrapSet : 1; - bool m_dynWrapAtStaticMarkerSet : 1; - bool m_dynWordWrapIndicatorsSet : 1; - bool m_dynWordWrapAlignIndentSet : 1; - bool m_lineNumbersSet : 1; - bool m_scrollBarMarksSet : 1; - bool m_scrollBarPreviewSet : 1; - bool m_scrollBarMiniMapSet : 1; - bool m_scrollBarMiniMapAllSet : 1; - bool m_scrollBarMiniMapWidthSet : 1; - bool m_showScrollbarsSet : 1; - bool m_iconBarSet : 1; - bool m_foldingBarSet : 1; - bool m_foldingPreviewSet : 1; - bool m_lineModificationSet : 1; - bool m_bookmarkSortSet : 1; - bool m_autoCenterLinesSet : 1; - bool m_searchFlagsSet : 1; - bool m_defaultMarkTypeSet : 1; - bool m_persistentSelectionSet : 1; - bool m_inputModeSet : 1; - bool m_viInputModeStealKeysSet : 1; - bool m_viRelativeLineNumbersSet : 1; - bool m_automaticCompletionInvocationSet : 1; - bool m_wordCompletionSet : 1; - bool m_keywordCompletionSet : 1; - bool m_wordCompletionMinimalWordLengthSet : 1; - bool m_smartCopyCutSet : 1; - bool m_mousePasteAtCursorPositionSet : 1; - bool m_scrollPastEndSet : 1; - bool m_allowMarkMenu : 1; - bool m_wordCompletionRemoveTailSet : 1; - bool m_foldFirstLineSet : 1; - bool m_showWordCountSet : 1; - bool m_showLineCountSet : 1; - bool m_autoBracketsSet : 1; - bool m_backspaceRemoveComposedSet : 1; + bool backspaceRemoveComposed() const + { + return value(BackspaceRemoveComposedCharacters).toBool(); + } private: static KateViewConfig *s_global; @@ -1203,12 +1256,12 @@ public: /** - * Construct a DocumentConfig + * Construct a RendererConfig */ explicit KateRendererConfig(KateRenderer *renderer); /** - * Cu DocumentConfig + * Cu RendererConfig */ ~KateRendererConfig() override; Index: src/utils/kateconfig.cpp =================================================================== --- src/utils/kateconfig.cpp +++ src/utils/kateconfig.cpp @@ -82,6 +82,7 @@ */ for (const auto &entry : m_configEntries) { if (!entry.second.commandName.isEmpty()) { + Q_ASSERT_X(!m_configKeys->contains(entry.second.commandName), "finalizeConfigEntries", (QLatin1String("KEY NOT UNIQUE: ") + entry.second.commandName).toLocal8Bit().constData()); m_configKeys->append(entry.second.commandName); m_configKeyToEntry->insert(entry.second.commandName, &entry.second); } @@ -231,7 +232,7 @@ //END -//BEGIN KateDocumentConfig +//BEGIN HelperFunctions KateGlobalConfig *KateGlobalConfig::s_global = nullptr; KateDocumentConfig *KateDocumentConfig::s_global = nullptr; KateViewConfig *KateViewConfig::s_global = nullptr; @@ -249,6 +250,21 @@ return found && codec; } +static bool inBounds(const int min, const QVariant &value, const int max) +{ + const int val = value.toInt(); + return (val >= min) && (val <= max); +} + +static bool isPositive(const QVariant &value) +{ + bool ok; + value.toUInt(&ok); + return ok; +} +//END + +//BEGIN KateGlobalConfig KateGlobalConfig::KateGlobalConfig() { /** @@ -324,7 +340,9 @@ */ return KCharsets::charsets()->codecForName(encoding); } +//END +//BEGIN KateDocumentConfig KateDocumentConfig::KateDocumentConfig() { /** @@ -493,281 +511,84 @@ //BEGIN KateViewConfig KateViewConfig::KateViewConfig() - : m_dynWordWrapSet(false), - m_dynWrapAtStaticMarkerSet(false), - m_dynWordWrapIndicatorsSet(false), - m_dynWordWrapAlignIndentSet(false), - m_lineNumbersSet(false), - m_scrollBarMarksSet(false), - m_scrollBarPreviewSet(false), - m_scrollBarMiniMapSet(false), - m_scrollBarMiniMapAllSet(false), - m_scrollBarMiniMapWidthSet(false), - m_showScrollbarsSet(false), - m_iconBarSet(false), - m_foldingBarSet(false), - m_foldingPreviewSet(false), - m_lineModificationSet(false), - m_bookmarkSortSet(false), - m_autoCenterLinesSet(false), - m_searchFlagsSet(false), - m_defaultMarkTypeSet(false), - m_persistentSelectionSet(false), - m_inputModeSet(false), - m_viInputModeStealKeysSet(false), - m_viRelativeLineNumbersSet(false), - m_automaticCompletionInvocationSet(false), - m_wordCompletionSet(false), - m_keywordCompletionSet(false), - m_wordCompletionMinimalWordLengthSet(false), - m_smartCopyCutSet(false), - m_mousePasteAtCursorPositionSet(false), - m_scrollPastEndSet(false), - m_allowMarkMenu(true), - m_wordCompletionRemoveTailSet(false), - m_foldFirstLineSet(false), - m_showWordCountSet(false), - m_showLineCountSet(false), - m_autoBracketsSet(false), - m_backspaceRemoveComposedSet(false) - { s_global = this; + // Init all known config entries + // NOTE: Ensure to keep the same order as listed in enum ConfigEntryTypes or it will later assert! + // addConfigEntry(ConfigEntry(, , , , [])) + addConfigEntry(ConfigEntry(AllowMarkMenu, "Allow Mark Menu", QStringLiteral("allow-mark-menu"), true)); + addConfigEntry(ConfigEntry(AutoBrackets, "Auto Brackets", QStringLiteral("auto-brackets"), false)); + addConfigEntry(ConfigEntry(AutoCenterLines, "Auto Center Lines", QStringLiteral("auto-center-lines"), 0)); + addConfigEntry(ConfigEntry(AutomaticCompletionInvocation, "Auto Completion", QString(), true)); + addConfigEntry(ConfigEntry(BackspaceRemoveComposedCharacters, "Backspace Remove Composed Characters", QString(), false)); + addConfigEntry(ConfigEntry(BookmarkSorting, "Bookmark Menu Sorting", QString(), 0)); + addConfigEntry(ConfigEntry(CharsToEncloseSelection, "Chars To Enclose Selection", QString(), QString())); + addConfigEntry(ConfigEntry(DefaultMarkType, "Default Mark Type", QStringLiteral("default-mark-type"), KTextEditor::MarkInterface::markType01, [](const QVariant &value) { return isPositive(value); })); + addConfigEntry(ConfigEntry(DynWordWrapAlignIndent, "Dynamic Word Wrap Align Indent", QString(), 80, [](const QVariant &value) { return inBounds(1, value, 100); })); + addConfigEntry(ConfigEntry(DynWordWrapIndicators, "Dynamic Word Wrap Indicators", QString(), 1, [](const QVariant &value) { return inBounds(1, value, 3); })); + addConfigEntry(ConfigEntry(DynWrapAtStaticMarker, "Dynamic Word Wrap At Static Marker", QString(), false)); + addConfigEntry(ConfigEntry(DynamicWordWrap, "Dynamic Word Wrap", QStringLiteral("dynamic-word-wrap"), true)); + addConfigEntry(ConfigEntry(FoldFirstLine, "Fold First Line", QString(), false)); + addConfigEntry(ConfigEntry(InputMode, "Input Mode", QString(), 0, [](const QVariant &value) { return isPositive(value); })); + addConfigEntry(ConfigEntry(KeywordCompletion, "Keyword Completion", QStringLiteral("keyword-completion"), true)); + addConfigEntry(ConfigEntry(MaxHistorySize, "Maximum Search History Size", QString(), 100, [](const QVariant &value) { return inBounds(0, value, 999); })); + addConfigEntry(ConfigEntry(MousePasteAtCursorPosition, "Mouse Paste At Cursor Position", QString(), false)); + addConfigEntry(ConfigEntry(PersistentSelection, "Persistent Selection", QStringLiteral("persistent-selectionq"), false)); + addConfigEntry(ConfigEntry(ScrollBarMiniMapWidth, "Scroll Bar Mini Map Width", QString(), 60, [](const QVariant &value) { return inBounds(0, value, 999); })); + addConfigEntry(ConfigEntry(ScrollPastEnd, "Scroll Past End", QString(), false)); + addConfigEntry(ConfigEntry(SearchFlags, "Search/Replace Flags", QString(), IncFromCursor | PowerMatchCase | PowerModePlainText)); + addConfigEntry(ConfigEntry(ShowFoldingBar, "Folding Bar", QStringLiteral("folding-bar"), true)); + addConfigEntry(ConfigEntry(ShowFoldingPreview, "Folding Preview", QStringLiteral("folding-preview"), true)); + addConfigEntry(ConfigEntry(ShowIconBar, "Icon Bar", QStringLiteral("icon-bar"), false)); + addConfigEntry(ConfigEntry(ShowLineCount, "Show Line Count", QString(), false)); + addConfigEntry(ConfigEntry(ShowLineModification, "Line Modification", QStringLiteral("modification-markers"), false)); + addConfigEntry(ConfigEntry(ShowLineNumbers, "Line Numbers", QStringLiteral("line-numbers"), false)); + addConfigEntry(ConfigEntry(ShowScrollBarMarks, "Scroll Bar Marks", QString(), false)); + addConfigEntry(ConfigEntry(ShowScrollBarMiniMap, "Scroll Bar MiniMap", QStringLiteral("scrollbar-minimap"), true)); + addConfigEntry(ConfigEntry(ShowScrollBarMiniMapAll, "Scroll Bar Mini Map All", QString(), true)); + addConfigEntry(ConfigEntry(ShowScrollBarPreview, "Scroll Bar Preview", QStringLiteral("scrollbar-preview"), true)); + addConfigEntry(ConfigEntry(ShowScrollbars, "Show Scrollbars", QString(), AlwaysOn, [](const QVariant &value) { return inBounds(0, value, 2); })); + addConfigEntry(ConfigEntry(ShowWordCount, "Show Word Count", QString(), false)); + addConfigEntry(ConfigEntry(SmartCopyCut, "Smart Copy Cut", QString(), false)); + addConfigEntry(ConfigEntry(ViInputModeStealKeys, "Vi Input Mode Steal Keys", QString(), false)); + addConfigEntry(ConfigEntry(ViRelativeLineNumbers, "Vi Relative Line Numbers", QString(), false)); + addConfigEntry(ConfigEntry(WordCompletion, "Word Completion", QString(), true)); + addConfigEntry(ConfigEntry(WordCompletionMinimalWordLength, "Word Completion Minimal Word Length", QString(), 3, [](const QVariant &value) { return inBounds(0, value, 99); })); + addConfigEntry(ConfigEntry(WordCompletionRemoveTail, "Word Completion Remove Tail", QString(), true)); + + // Never forget to finalize or the becomes not available + finalizeConfigEntries(); + // init with defaults from config or really hardcoded ones KConfigGroup config(KTextEditor::EditorPrivate::config(), "KTextEditor View"); readConfig(config); } KateViewConfig::KateViewConfig(KTextEditor::ViewPrivate *view) - : KateConfig(s_global), - m_searchFlags(PowerModePlainText), - m_maxHistorySize(100), - m_showWordCount(false), - m_dynWordWrapSet(false), - m_dynWrapAtStaticMarkerSet(false), - m_dynWordWrapIndicatorsSet(false), - m_dynWordWrapAlignIndentSet(false), - m_lineNumbersSet(false), - m_scrollBarMarksSet(false), - m_scrollBarPreviewSet(false), - m_scrollBarMiniMapSet(false), - m_scrollBarMiniMapAllSet(false), - m_scrollBarMiniMapWidthSet(false), - m_showScrollbarsSet(false), - m_iconBarSet(false), - m_foldingBarSet(false), - m_foldingPreviewSet(false), - m_lineModificationSet(false), - m_bookmarkSortSet(false), - m_autoCenterLinesSet(false), - m_searchFlagsSet(false), - m_defaultMarkTypeSet(false), - m_persistentSelectionSet(false), - m_inputModeSet(false), - m_viInputModeStealKeysSet(false), - m_viRelativeLineNumbersSet(false), - m_automaticCompletionInvocationSet(false), - m_wordCompletionSet(false), - m_keywordCompletionSet(false), - m_wordCompletionMinimalWordLengthSet(false), - m_smartCopyCutSet(false), - m_mousePasteAtCursorPositionSet(false), - m_scrollPastEndSet(false), - m_allowMarkMenu(true), - m_wordCompletionRemoveTailSet(false), - m_foldFirstLineSet(false), - m_showWordCountSet(false), - m_showLineCountSet(false), - m_autoBracketsSet(false), - m_backspaceRemoveComposedSet(false), - m_view(view) + : KateConfig(s_global) + , m_view(view) { } KateViewConfig::~KateViewConfig() { } -namespace -{ -const char KEY_SEARCH_REPLACE_FLAGS[] = "Search/Replace Flags"; -const char KEY_DYN_WORD_WRAP[] = "Dynamic Word Wrap"; -const char KEY_DYN_WORD_WRAP_AT_STATIC_MARKER[] = "Dynamic Word Wrap At Static Marker"; -const char KEY_DYN_WORD_WRAP_INDICATORS[] = "Dynamic Word Wrap Indicators"; -const char KEY_DYN_WORD_WRAP_ALIGN_INDENT[] = "Dynamic Word Wrap Align Indent"; -const char KEY_LINE_NUMBERS[] = "Line Numbers"; -const char KEY_SCROLL_BAR_MARKS[] = "Scroll Bar Marks"; -const char KEY_SCROLL_BAR_PREVIEW[] = "Scroll Bar Preview"; -const char KEY_SCROLL_BAR_MINI_MAP[] = "Scroll Bar MiniMap"; -const char KEY_SCROLL_BAR_MINI_MAP_ALL[] = "Scroll Bar Mini Map All"; -const char KEY_SCROLL_BAR_MINI_MAP_WIDTH[] = "Scroll Bar Mini Map Width"; -const char KEY_SHOW_SCROLLBARS[] = "Show Scrollbars"; -const char KEY_ICON_BAR[] = "Icon Bar"; -const char KEY_FOLDING_BAR[] = "Folding Bar"; -const char KEY_FOLDING_PREVIEW[] = "Folding Preview"; -const char KEY_LINE_MODIFICATION[] = "Line Modification"; -const char KEY_BOOKMARK_SORT[] = "Bookmark Menu Sorting"; -const char KEY_AUTO_CENTER_LINES[] = "Auto Center Lines"; -const char KEY_MAX_HISTORY_SIZE[] = "Maximum Search History Size"; -const char KEY_DEFAULT_MARK_TYPE[] = "Default Mark Type"; -const char KEY_ALLOW_MARK_MENU[] = "Allow Mark Menu"; -const char KEY_PERSISTENT_SELECTION[] = "Persistent Selection"; -const char KEY_INPUT_MODE[] = "Input Mode"; -const char KEY_VI_INPUT_MODE_STEAL_KEYS[] = "Vi Input Mode Steal Keys"; -const char KEY_VI_RELATIVE_LINE_NUMBERS[] = "Vi Relative Line Numbers"; -const char KEY_AUTOMATIC_COMPLETION_INVOCATION[] = "Auto Completion"; -const char KEY_WORD_COMPLETION[] = "Word Completion"; -const char KEY_KEYWORD_COMPLETION[] = "Keyword Completion"; -const char KEY_WORD_COMPLETION_MINIMAL_WORD_LENGTH[] = "Word Completion Minimal Word Length"; -const char KEY_WORD_COMPLETION_REMOVE_TAIL[] = "Word Completion Remove Tail"; -const char KEY_SMART_COPY_CUT[] = "Smart Copy Cut"; -const char KEY_MOUSE_PASTE_AT_CURSOR_POSITION[] = "Mouse Paste At Cursor Position"; -const char KEY_SCROLL_PAST_END[] = "Scroll Past End"; -const char KEY_FOLD_FIRST_LINE[] = "Fold First Line"; -const char KEY_SHOW_LINE_COUNT[] = "Show Line Count"; -const char KEY_SHOW_WORD_COUNT[] = "Show Word Count"; -const char KEY_AUTO_BRACKETS[] = "Auto Brackets"; -const char KEY_BACKSPACE_REMOVE_COMPOSED[] = "Backspace Remove Composed Characters"; -} - void KateViewConfig::readConfig(const KConfigGroup &config) { configStart(); // read generic entries readConfigEntries(config); - // default on - setDynWordWrap(config.readEntry(KEY_DYN_WORD_WRAP, true)); - setDynWrapAtStaticMarker(config.readEntry(KEY_DYN_WORD_WRAP_AT_STATIC_MARKER, false)); - setDynWordWrapIndicators(config.readEntry(KEY_DYN_WORD_WRAP_INDICATORS, 1)); - setDynWordWrapAlignIndent(config.readEntry(KEY_DYN_WORD_WRAP_ALIGN_INDENT, 80)); - - setLineNumbers(config.readEntry(KEY_LINE_NUMBERS, false)); - - setScrollBarMarks(config.readEntry(KEY_SCROLL_BAR_MARKS, false)); - - setScrollBarPreview(config.readEntry(KEY_SCROLL_BAR_PREVIEW, true)); - - setScrollBarMiniMap(config.readEntry(KEY_SCROLL_BAR_MINI_MAP, true)); - - setScrollBarMiniMapAll(config.readEntry(KEY_SCROLL_BAR_MINI_MAP_ALL, false)); - - setScrollBarMiniMapWidth(config.readEntry(KEY_SCROLL_BAR_MINI_MAP_WIDTH, 60)); - - setShowScrollbars(config.readEntry(KEY_SHOW_SCROLLBARS, static_cast(AlwaysOn))); - - setIconBar(config.readEntry(KEY_ICON_BAR, false)); - - setFoldingBar(config.readEntry(KEY_FOLDING_BAR, true)); - - setFoldingPreview(config.readEntry(KEY_FOLDING_PREVIEW, true)); - - setLineModification(config.readEntry(KEY_LINE_MODIFICATION, false)); - - setBookmarkSort(config.readEntry(KEY_BOOKMARK_SORT, 0)); - - setAutoCenterLines(config.readEntry(KEY_AUTO_CENTER_LINES, 0)); - - setSearchFlags(config.readEntry(KEY_SEARCH_REPLACE_FLAGS, - IncFromCursor | PowerMatchCase | PowerModePlainText)); - - m_maxHistorySize = config.readEntry(KEY_MAX_HISTORY_SIZE, 100); - - setDefaultMarkType(config.readEntry(KEY_DEFAULT_MARK_TYPE, int(KTextEditor::MarkInterface::markType01))); - setAllowMarkMenu(config.readEntry(KEY_ALLOW_MARK_MENU, true)); - - setPersistentSelection(config.readEntry(KEY_PERSISTENT_SELECTION, false)); - - setInputModeRaw(config.readEntry(KEY_INPUT_MODE, 0)); - setViInputModeStealKeys(config.readEntry(KEY_VI_INPUT_MODE_STEAL_KEYS, false)); - setViRelativeLineNumbers(config.readEntry(KEY_VI_RELATIVE_LINE_NUMBERS, false)); - - setAutomaticCompletionInvocation(config.readEntry(KEY_AUTOMATIC_COMPLETION_INVOCATION, true)); - setWordCompletion(config.readEntry(KEY_WORD_COMPLETION, true)); - setKeywordCompletion(config.readEntry(KEY_KEYWORD_COMPLETION, true)); - setWordCompletionMinimalWordLength(config.readEntry(KEY_WORD_COMPLETION_MINIMAL_WORD_LENGTH, 3)); - setWordCompletionRemoveTail(config.readEntry(KEY_WORD_COMPLETION_REMOVE_TAIL, true)); - setSmartCopyCut(config.readEntry(KEY_SMART_COPY_CUT, false)); - setMousePasteAtCursorPosition(config.readEntry(KEY_MOUSE_PASTE_AT_CURSOR_POSITION, false)); - setScrollPastEnd(config.readEntry(KEY_SCROLL_PAST_END, false)); - setFoldFirstLine(config.readEntry(KEY_FOLD_FIRST_LINE, false)); - setShowLineCount(config.readEntry(KEY_SHOW_LINE_COUNT, false)); - setShowWordCount(config.readEntry(KEY_SHOW_WORD_COUNT, false)); - setAutoBrackets(config.readEntry(KEY_AUTO_BRACKETS, false)); - - setBackspaceRemoveComposed(config.readEntry(KEY_BACKSPACE_REMOVE_COMPOSED, false)); - configEnd(); } void KateViewConfig::writeConfig(KConfigGroup &config) { // write generic entries writeConfigEntries(config); - - config.writeEntry(KEY_DYN_WORD_WRAP, dynWordWrap()); - config.writeEntry(KEY_DYN_WORD_WRAP_AT_STATIC_MARKER, dynWrapAtStaticMarker()); - config.writeEntry(KEY_DYN_WORD_WRAP_INDICATORS, dynWordWrapIndicators()); - config.writeEntry(KEY_DYN_WORD_WRAP_ALIGN_INDENT, dynWordWrapAlignIndent()); - - config.writeEntry(KEY_LINE_NUMBERS, lineNumbers()); - - config.writeEntry(KEY_SCROLL_BAR_MARKS, scrollBarMarks()); - - config.writeEntry(KEY_SCROLL_BAR_PREVIEW, scrollBarPreview()); - - config.writeEntry(KEY_SCROLL_BAR_MINI_MAP, scrollBarMiniMap()); - - config.writeEntry(KEY_SCROLL_BAR_MINI_MAP_ALL, scrollBarMiniMapAll()); - - config.writeEntry(KEY_SCROLL_BAR_MINI_MAP_WIDTH, scrollBarMiniMapWidth()); - - config.writeEntry(KEY_SHOW_SCROLLBARS, showScrollbars()); - - config.writeEntry(KEY_ICON_BAR, iconBar()); - - config.writeEntry(KEY_FOLDING_BAR, foldingBar()); - - config.writeEntry(KEY_FOLDING_PREVIEW, foldingPreview()); - - config.writeEntry(KEY_LINE_MODIFICATION, lineModification()); - - config.writeEntry(KEY_BOOKMARK_SORT, bookmarkSort()); - - config.writeEntry(KEY_AUTO_CENTER_LINES, autoCenterLines()); - - config.writeEntry(KEY_SEARCH_REPLACE_FLAGS, int(searchFlags())); - - config.writeEntry(KEY_MAX_HISTORY_SIZE, m_maxHistorySize); - - config.writeEntry(KEY_DEFAULT_MARK_TYPE, defaultMarkType()); - - config.writeEntry(KEY_ALLOW_MARK_MENU, allowMarkMenu()); - - config.writeEntry(KEY_PERSISTENT_SELECTION, persistentSelection()); - - config.writeEntry(KEY_AUTOMATIC_COMPLETION_INVOCATION, automaticCompletionInvocation()); - config.writeEntry(KEY_WORD_COMPLETION, wordCompletion()); - config.writeEntry(KEY_KEYWORD_COMPLETION, keywordCompletion()); - config.writeEntry(KEY_WORD_COMPLETION_MINIMAL_WORD_LENGTH, wordCompletionMinimalWordLength()); - config.writeEntry(KEY_WORD_COMPLETION_REMOVE_TAIL, wordCompletionRemoveTail()); - - config.writeEntry(KEY_SMART_COPY_CUT, smartCopyCut()); - config.writeEntry(KEY_MOUSE_PASTE_AT_CURSOR_POSITION, mousePasteAtCursorPosition()); - config.writeEntry(KEY_SCROLL_PAST_END, scrollPastEnd()); - config.writeEntry(KEY_FOLD_FIRST_LINE, foldFirstLine()); - - config.writeEntry(KEY_INPUT_MODE, static_cast(inputMode())); - config.writeEntry(KEY_VI_INPUT_MODE_STEAL_KEYS, viInputModeStealKeys()); - config.writeEntry(KEY_VI_RELATIVE_LINE_NUMBERS, viRelativeLineNumbers()); - - config.writeEntry(KEY_SHOW_LINE_COUNT, showLineCount()); - config.writeEntry(KEY_SHOW_WORD_COUNT, showWordCount()); - config.writeEntry(KEY_AUTO_BRACKETS, autoBrackets()); - - config.writeEntry(KEY_BACKSPACE_REMOVE_COMPOSED, backspaceRemoveComposed()); } void KateViewConfig::updateConfig() @@ -789,838 +610,6 @@ } } -bool KateViewConfig::dynWordWrap() const -{ - if (m_dynWordWrapSet || isGlobal()) { - return m_dynWordWrap; - } - - return s_global->dynWordWrap(); -} - -void KateViewConfig::setDynWordWrap(bool wrap) -{ - if (m_dynWordWrapSet && m_dynWordWrap == wrap) { - return; - } - - configStart(); - - m_dynWordWrapSet = true; - m_dynWordWrap = wrap; - - configEnd(); -} - -bool KateViewConfig::dynWrapAtStaticMarker() const -{ - if (m_dynWrapAtStaticMarkerSet || isGlobal()) { - return m_dynWrapAtStaticMarker; - } - - return s_global->dynWrapAtStaticMarker(); -} - -void KateViewConfig::setDynWrapAtStaticMarker(bool on) -{ - if (m_dynWrapAtStaticMarkerSet && m_dynWrapAtStaticMarker == on) { - return; - } - - configStart(); - - m_dynWrapAtStaticMarkerSet = true; - m_dynWrapAtStaticMarker = on; - - configEnd(); -} - -int KateViewConfig::dynWordWrapIndicators() const -{ - if (m_dynWordWrapIndicatorsSet || isGlobal()) { - return m_dynWordWrapIndicators; - } - - return s_global->dynWordWrapIndicators(); -} - -void KateViewConfig::setDynWordWrapIndicators(int mode) -{ - if (m_dynWordWrapIndicatorsSet && m_dynWordWrapIndicators == mode) { - return; - } - - configStart(); - - m_dynWordWrapIndicatorsSet = true; - m_dynWordWrapIndicators = qBound(0, mode, 80); - - configEnd(); -} - -int KateViewConfig::dynWordWrapAlignIndent() const -{ - if (m_dynWordWrapAlignIndentSet || isGlobal()) { - return m_dynWordWrapAlignIndent; - } - - return s_global->dynWordWrapAlignIndent(); -} - -void KateViewConfig::setDynWordWrapAlignIndent(int indent) -{ - if (m_dynWordWrapAlignIndentSet && m_dynWordWrapAlignIndent == indent) { - return; - } - - configStart(); - - m_dynWordWrapAlignIndentSet = true; - m_dynWordWrapAlignIndent = indent; - - configEnd(); -} - -bool KateViewConfig::lineNumbers() const -{ - if (m_lineNumbersSet || isGlobal()) { - return m_lineNumbers; - } - - return s_global->lineNumbers(); -} - -void KateViewConfig::setLineNumbers(bool on) -{ - if (m_lineNumbersSet && m_lineNumbers == on) { - return; - } - - configStart(); - - m_lineNumbersSet = true; - m_lineNumbers = on; - - configEnd(); -} - -bool KateViewConfig::scrollBarMarks() const -{ - if (m_scrollBarMarksSet || isGlobal()) { - return m_scrollBarMarks; - } - - return s_global->scrollBarMarks(); -} - -void KateViewConfig::setScrollBarMarks(bool on) -{ - if (m_scrollBarMarksSet && m_scrollBarMarks == on) { - return; - } - - configStart(); - - m_scrollBarMarksSet = true; - m_scrollBarMarks = on; - - configEnd(); -} - -bool KateViewConfig::scrollBarPreview() const -{ - if (m_scrollBarPreviewSet || isGlobal()) { - return m_scrollBarPreview; - } - - return s_global->scrollBarPreview(); -} - -void KateViewConfig::setScrollBarPreview(bool on) -{ - if (m_scrollBarPreviewSet && m_scrollBarPreview == on) { - return; - } - - configStart(); - - m_scrollBarPreviewSet = true; - m_scrollBarPreview = on; - - configEnd(); -} - -bool KateViewConfig::scrollBarMiniMap() const -{ - if (m_scrollBarMiniMapSet || isGlobal()) { - return m_scrollBarMiniMap; - } - - return s_global->scrollBarMiniMap(); -} - -void KateViewConfig::setScrollBarMiniMap(bool on) -{ - if (m_scrollBarMiniMapSet && m_scrollBarMiniMap == on) { - return; - } - - configStart(); - - m_scrollBarMiniMapSet = true; - m_scrollBarMiniMap = on; - - configEnd(); -} - -bool KateViewConfig::scrollBarMiniMapAll() const -{ - if (m_scrollBarMiniMapAllSet || isGlobal()) { - return m_scrollBarMiniMapAll; - } - - return s_global->scrollBarMiniMapAll(); -} - -void KateViewConfig::setScrollBarMiniMapAll(bool on) -{ - if (m_scrollBarMiniMapAllSet && m_scrollBarMiniMapAll == on) { - return; - } - - configStart(); - - m_scrollBarMiniMapAllSet = true; - m_scrollBarMiniMapAll = on; - - configEnd(); -} - -int KateViewConfig::scrollBarMiniMapWidth() const -{ - if (m_scrollBarMiniMapWidthSet || isGlobal()) { - return m_scrollBarMiniMapWidth; - } - - return s_global->scrollBarMiniMapWidth(); -} - -void KateViewConfig::setScrollBarMiniMapWidth(int width) -{ - if (m_scrollBarMiniMapWidthSet && m_scrollBarMiniMapWidth == width) { - return; - } - - configStart(); - - m_scrollBarMiniMapWidthSet = true; - m_scrollBarMiniMapWidth = width; - - configEnd(); -} - -int KateViewConfig::showScrollbars() const -{ - if (m_showScrollbarsSet || isGlobal()) { - return m_showScrollbars; - } - - return s_global->showScrollbars(); -} - -void KateViewConfig::setShowScrollbars(int mode) -{ - if (m_showScrollbarsSet && m_showScrollbars == mode) { - return; - } - - configStart(); - - m_showScrollbarsSet = true; - m_showScrollbars = qBound(0, mode, 80); - - configEnd(); -} - -bool KateViewConfig::autoBrackets() const -{ - if (m_autoBracketsSet || isGlobal()) { - return m_autoBrackets; - } - - return s_global->autoBrackets(); -} - -void KateViewConfig::setAutoBrackets(bool on) -{ - if (m_autoBracketsSet && m_autoBrackets == on) { - return; - } - - configStart(); - - m_autoBracketsSet = true; - m_autoBrackets = on; - - configEnd(); -} - -bool KateViewConfig::iconBar() const -{ - if (m_iconBarSet || isGlobal()) { - return m_iconBar; - } - - return s_global->iconBar(); -} - -void KateViewConfig::setIconBar(bool on) -{ - if (m_iconBarSet && m_iconBar == on) { - return; - } - - configStart(); - - m_iconBarSet = true; - m_iconBar = on; - - configEnd(); -} - -bool KateViewConfig::foldingBar() const -{ - if (m_foldingBarSet || isGlobal()) { - return m_foldingBar; - } - - return s_global->foldingBar(); -} - -void KateViewConfig::setFoldingBar(bool on) -{ - if (m_foldingBarSet && m_foldingBar == on) { - return; - } - - configStart(); - - m_foldingBarSet = true; - m_foldingBar = on; - - configEnd(); -} - -bool KateViewConfig::foldingPreview() const -{ - if (m_foldingPreviewSet || isGlobal()) { - return m_foldingPreview; - } - - return s_global->foldingPreview(); -} - -void KateViewConfig::setFoldingPreview(bool on) -{ - if (m_foldingPreviewSet && m_foldingPreview == on) { - return; - } - - configStart(); - - m_foldingPreviewSet = true; - m_foldingPreview = on; - - configEnd(); -} - -bool KateViewConfig::lineModification() const -{ - if (m_lineModificationSet || isGlobal()) { - return m_lineModification; - } - - return s_global->lineModification(); -} - -void KateViewConfig::setLineModification(bool on) -{ - if (m_lineModificationSet && m_lineModification == on) { - return; - } - - configStart(); - - m_lineModificationSet = true; - m_lineModification = on; - - configEnd(); -} - -int KateViewConfig::bookmarkSort() const -{ - if (m_bookmarkSortSet || isGlobal()) { - return m_bookmarkSort; - } - - return s_global->bookmarkSort(); -} - -void KateViewConfig::setBookmarkSort(int mode) -{ - if (m_bookmarkSortSet && m_bookmarkSort == mode) { - return; - } - - configStart(); - - m_bookmarkSortSet = true; - m_bookmarkSort = mode; - - configEnd(); -} - -int KateViewConfig::autoCenterLines() const -{ - if (m_autoCenterLinesSet || isGlobal()) { - return m_autoCenterLines; - } - - return s_global->autoCenterLines(); -} - -void KateViewConfig::setAutoCenterLines(int lines) -{ - if (lines < 0) { - return; - } - - if (m_autoCenterLinesSet && m_autoCenterLines == lines) { - return; - } - - configStart(); - - m_autoCenterLinesSet = true; - m_autoCenterLines = lines; - - configEnd(); -} - -long KateViewConfig::searchFlags() const -{ - if (m_searchFlagsSet || isGlobal()) { - return m_searchFlags; - } - - return s_global->searchFlags(); -} - -void KateViewConfig::setSearchFlags(long flags) -{ - if (m_searchFlagsSet && m_searchFlags == flags) { - return; - } - - configStart(); - - m_searchFlagsSet = true; - m_searchFlags = flags; - - configEnd(); -} - -int KateViewConfig::maxHistorySize() const -{ - return m_maxHistorySize; -} - -uint KateViewConfig::defaultMarkType() const -{ - if (m_defaultMarkTypeSet || isGlobal()) { - return m_defaultMarkType; - } - - return s_global->defaultMarkType(); -} - -void KateViewConfig::setDefaultMarkType(uint type) -{ - if (m_defaultMarkTypeSet && m_defaultMarkType == type) { - return; - } - - configStart(); - - m_defaultMarkTypeSet = true; - m_defaultMarkType = type; - - configEnd(); -} - -bool KateViewConfig::allowMarkMenu() const -{ - return m_allowMarkMenu; -} - -void KateViewConfig::setAllowMarkMenu(bool allow) -{ - m_allowMarkMenu = allow; -} - -bool KateViewConfig::persistentSelection() const -{ - if (m_persistentSelectionSet || isGlobal()) { - return m_persistentSelection; - } - - return s_global->persistentSelection(); -} - -void KateViewConfig::setPersistentSelection(bool on) -{ - if (m_persistentSelectionSet && m_persistentSelection == on) { - return; - } - - configStart(); - - m_persistentSelectionSet = true; - m_persistentSelection = on; - - configEnd(); -} - -KTextEditor::View::InputMode KateViewConfig::inputMode() const -{ - if (m_inputModeSet || isGlobal()) { - return m_inputMode; - } - - return s_global->inputMode(); -} - -void KateViewConfig::setInputMode(KTextEditor::View::InputMode mode) -{ - if (m_inputModeSet && m_inputMode == mode) { - return; - } - - configStart(); - - m_inputModeSet = true; - m_inputMode = mode; - - configEnd(); -} - -void KateViewConfig::setInputModeRaw(int rawmode) -{ - setInputMode(static_cast(rawmode)); -} - -bool KateViewConfig::viInputModeStealKeys() const -{ - if (m_viInputModeStealKeysSet || isGlobal()) { - return m_viInputModeStealKeys; - } - - return s_global->viInputModeStealKeys(); -} - -void KateViewConfig::setViInputModeStealKeys(bool on) -{ - if (m_viInputModeStealKeysSet && m_viInputModeStealKeys == on) { - return; - } - - configStart(); - m_viInputModeStealKeysSet = true; - m_viInputModeStealKeys = on; - configEnd(); -} - -bool KateViewConfig::viRelativeLineNumbers() const -{ - if (m_viRelativeLineNumbersSet || isGlobal()) { - return m_viRelativeLineNumbers; - } - - return s_global->viRelativeLineNumbers(); -} - -void KateViewConfig::setViRelativeLineNumbers(bool on) -{ - if (m_viRelativeLineNumbersSet && m_viRelativeLineNumbers == on) { - return; - } - - configStart(); - m_viRelativeLineNumbersSet = true; - m_viRelativeLineNumbers = on; - configEnd(); -} - -bool KateViewConfig::automaticCompletionInvocation() const -{ - if (m_automaticCompletionInvocationSet || isGlobal()) { - return m_automaticCompletionInvocation; - } - - return s_global->automaticCompletionInvocation(); -} - -void KateViewConfig::setAutomaticCompletionInvocation(bool on) -{ - if (m_automaticCompletionInvocationSet && m_automaticCompletionInvocation == on) { - return; - } - - configStart(); - m_automaticCompletionInvocationSet = true; - m_automaticCompletionInvocation = on; - configEnd(); -} - -bool KateViewConfig::wordCompletion() const -{ - if (m_wordCompletionSet || isGlobal()) { - return m_wordCompletion; - } - - return s_global->wordCompletion(); -} - -void KateViewConfig::setWordCompletion(bool on) -{ - if (m_wordCompletionSet && m_wordCompletion == on) { - return; - } - - configStart(); - m_wordCompletionSet = true; - m_wordCompletion = on; - configEnd(); -} - -bool KateViewConfig::keywordCompletion() const -{ - if (m_keywordCompletionSet || isGlobal()) - return m_keywordCompletion; - return s_global->keywordCompletion(); -} - -void KateViewConfig::setKeywordCompletion(bool on) -{ - if (m_keywordCompletionSet && m_keywordCompletion == on) - return; - configStart(); - m_keywordCompletionSet = true; - m_keywordCompletion = on; - configEnd(); -} - -int KateViewConfig::wordCompletionMinimalWordLength() const -{ - if (m_wordCompletionMinimalWordLengthSet || isGlobal()) { - return m_wordCompletionMinimalWordLength; - } - - return s_global->wordCompletionMinimalWordLength(); -} - -void KateViewConfig::setWordCompletionMinimalWordLength(int length) -{ - if (m_wordCompletionMinimalWordLengthSet && m_wordCompletionMinimalWordLength == length) { - return; - } - - configStart(); - - m_wordCompletionMinimalWordLengthSet = true; - m_wordCompletionMinimalWordLength = length; - - configEnd(); -} - -bool KateViewConfig::wordCompletionRemoveTail() const -{ - if (m_wordCompletionRemoveTailSet || isGlobal()) { - return m_wordCompletionRemoveTail; - } - - return s_global->wordCompletionRemoveTail(); -} - -void KateViewConfig::setWordCompletionRemoveTail(bool on) -{ - if (m_wordCompletionRemoveTailSet && m_wordCompletionRemoveTail == on) { - return; - } - - configStart(); - m_wordCompletionRemoveTailSet = true; - m_wordCompletionRemoveTail = on; - configEnd(); -} - -bool KateViewConfig::smartCopyCut() const -{ - if (m_smartCopyCutSet || isGlobal()) { - return m_smartCopyCut; - } - - return s_global->smartCopyCut(); -} - -void KateViewConfig::setSmartCopyCut(bool on) -{ - if (m_smartCopyCutSet && m_smartCopyCut == on) { - return; - } - - configStart(); - - m_smartCopyCutSet = true; - m_smartCopyCut = on; - - configEnd(); -} - -bool KateViewConfig::mousePasteAtCursorPosition() const -{ - if (m_mousePasteAtCursorPositionSet|| isGlobal()) { - return m_mousePasteAtCursorPosition; - } - - return s_global->mousePasteAtCursorPosition(); -} - -void KateViewConfig::setMousePasteAtCursorPosition(bool on) -{ - if (m_mousePasteAtCursorPositionSet && m_mousePasteAtCursorPosition == on) { - return; - } - - configStart(); - - m_mousePasteAtCursorPositionSet = true; - m_mousePasteAtCursorPosition = on; - - configEnd(); -} - -bool KateViewConfig::scrollPastEnd() const -{ - if (m_scrollPastEndSet || isGlobal()) { - return m_scrollPastEnd; - } - - return s_global->scrollPastEnd(); -} - -void KateViewConfig::setScrollPastEnd(bool on) -{ - if (m_scrollPastEndSet && m_scrollPastEnd == on) { - return; - } - - configStart(); - - m_scrollPastEndSet = true; - m_scrollPastEnd = on; - - configEnd(); -} - -bool KateViewConfig::foldFirstLine() const -{ - if (m_foldFirstLineSet || isGlobal()) { - return m_foldFirstLine; - } - - return s_global->foldFirstLine(); -} - -void KateViewConfig::setFoldFirstLine(bool on) -{ - if (m_foldFirstLineSet && m_foldFirstLine == on) { - return; - } - - configStart(); - - m_foldFirstLineSet = true; - m_foldFirstLine = on; - - configEnd(); -} - -bool KateViewConfig::showWordCount() const -{ - if (m_showWordCountSet || isGlobal()) { - return m_showWordCount; - } - - return s_global->showWordCount(); -} - -void KateViewConfig::setShowWordCount(bool on) -{ - if (m_showWordCountSet && m_showWordCount == on) { - return; - } - - configStart(); - m_showWordCountSet = true; - m_showWordCount = on; - configEnd(); -} - -bool KateViewConfig::showLineCount() const -{ - if (m_showLineCountSet || isGlobal()) { - return m_showLineCount; - } - - return s_global->showLineCount(); -} - -void KateViewConfig::setShowLineCount(bool on) -{ - if (m_showLineCountSet && m_showLineCount == on) { - return; - } - - configStart(); - m_showLineCountSet = true; - m_showLineCount = on; - configEnd(); -} - -bool KateViewConfig::backspaceRemoveComposed() const -{ - if (m_backspaceRemoveComposedSet || isGlobal()) { - return m_backspaceRemoveComposed; - } - - return s_global->backspaceRemoveComposed(); -} - -void KateViewConfig::setBackspaceRemoveComposed(bool on) -{ - if (m_backspaceRemoveComposedSet && m_backspaceRemoveComposed == on) { - return; - } - - configStart(); - - m_backspaceRemoveComposedSet = true; - m_backspaceRemoveComposed = on; - - configEnd(); -} - //END //BEGIN KateRendererConfig Index: src/view/katestatusbar.cpp =================================================================== --- src/view/katestatusbar.cpp +++ src/view/katestatusbar.cpp @@ -248,7 +248,7 @@ void KateStatusBar::toggleShowLines(bool checked) { - KateViewConfig::global()->setShowLineCount(checked); + KateViewConfig::global()->setValue(KateViewConfig::ShowLineCount, checked); } void KateStatusBar::toggleShowWords(bool checked) Index: src/view/kateview.cpp =================================================================== --- src/view/kateview.cpp +++ src/view/kateview.cpp @@ -1374,7 +1374,7 @@ m_viewInternal->m_currentInputMode = m_viewInternal->m_inputModes[mode]; m_viewInternal->m_currentInputMode->activate(); - config()->setInputMode(mode); // TODO: this could be called from read config procedure, so it's not a good idea to set a specific view mode here + config()->setValue(KateViewConfig::InputMode, mode); // TODO: this could be called from read config procedure, so it's not a good idea to set a specific view mode here /* small duplication, but need to do this if not toggled by action */ Q_FOREACH(QAction *action, m_inputModeActions->actions()) { @@ -1459,7 +1459,7 @@ void KTextEditor::ViewPrivate::setDynWrapIndicators(int mode) { - config()->setDynWordWrapIndicators(mode); + config()->setValue(KateViewConfig::DynWordWrapIndicators, mode); } bool KTextEditor::ViewPrivate::isOverwriteMode() const @@ -1610,10 +1610,7 @@ // cursor position setCursorPositionInternal(KTextEditor::Cursor(config.readEntry("CursorLine", 0), config.readEntry("CursorColumn", 0))); - // restore dyn word wrap if set for this view - if (config.hasKey("Dynamic Word Wrap")) { - m_config->setDynWordWrap(config.readEntry("Dynamic Word Wrap", false)); - } + m_config->setDynWordWrap(config.readEntry("Dynamic Word Wrap", false)); // restore text folding m_savedFoldingState = QJsonDocument::fromJson(config.readEntry("TextFolding", QByteArray())); @@ -1632,10 +1629,7 @@ config.writeEntry("CursorLine", cursorPosition().line()); config.writeEntry("CursorColumn", cursorPosition().column()); - // save dyn word wrap if set for this view - if (m_config->dynWordWrapSet()) { - config.writeEntry("Dynamic Word Wrap", m_config->dynWordWrap()); - } + config.writeEntry("Dynamic Word Wrap", m_config->dynWordWrap()); // save text folding state saveFoldingState(); @@ -1684,57 +1678,57 @@ void KTextEditor::ViewPrivate::setIconBorder(bool enable) { - config()->setIconBar(enable); + config()->setValue(KateViewConfig::ShowIconBar, enable); } void KTextEditor::ViewPrivate::toggleIconBorder() { - config()->setIconBar(!config()->iconBar()); + config()->setValue(KateViewConfig::ShowIconBar, config()->iconBar()); } void KTextEditor::ViewPrivate::setLineNumbersOn(bool enable) { - config()->setLineNumbers(enable); + config()->setValue(KateViewConfig::ShowLineNumbers, enable); } void KTextEditor::ViewPrivate::toggleLineNumbersOn() { - config()->setLineNumbers(!config()->lineNumbers()); + config()->setValue(KateViewConfig::ShowLineNumbers, !config()->lineNumbers()); } void KTextEditor::ViewPrivate::setScrollBarMarks(bool enable) { - config()->setScrollBarMarks(enable); + config()->setValue(KateViewConfig::ShowScrollBarMarks, enable); } void KTextEditor::ViewPrivate::toggleScrollBarMarks() { - config()->setScrollBarMarks(!config()->scrollBarMarks()); + config()->setValue(KateViewConfig::ShowScrollBarMarks, !config()->scrollBarMarks()); } void KTextEditor::ViewPrivate::setScrollBarMiniMap(bool enable) { - config()->setScrollBarMiniMap(enable); + config()->setValue(KateViewConfig::ShowScrollBarMiniMap, enable); } void KTextEditor::ViewPrivate::toggleScrollBarMiniMap() { - config()->setScrollBarMiniMap(!config()->scrollBarMiniMap()); + config()->setValue(KateViewConfig::ShowScrollBarMiniMap, !config()->scrollBarMiniMap()); } void KTextEditor::ViewPrivate::setScrollBarMiniMapAll(bool enable) { - config()->setScrollBarMiniMapAll(enable); + config()->setValue(KateViewConfig::ShowScrollBarMiniMapAll, enable); } void KTextEditor::ViewPrivate::toggleScrollBarMiniMapAll() { - config()->setScrollBarMiniMapAll(!config()->scrollBarMiniMapAll()); + config()->setValue(KateViewConfig::ShowScrollBarMiniMapAll, !config()->scrollBarMiniMapAll()); } void KTextEditor::ViewPrivate::setScrollBarMiniMapWidth(int width) { - config()->setScrollBarMiniMapWidth(width); + config()->setValue(KateViewConfig::ScrollBarMiniMapWidth, width); } void KTextEditor::ViewPrivate::toggleDynWordWrap() @@ -1760,12 +1754,12 @@ void KTextEditor::ViewPrivate::setFoldingMarkersOn(bool enable) { - config()->setFoldingBar(enable); + config()->setValue(KateViewConfig::ShowFoldingBar, enable); } void KTextEditor::ViewPrivate::toggleFoldingMarkers() { - config()->setFoldingBar(!config()->foldingBar()); + config()->setValue(KateViewConfig::ShowFoldingBar, !config()->foldingBar()); } bool KTextEditor::ViewPrivate::iconBorder() @@ -2613,7 +2607,7 @@ void KTextEditor::ViewPrivate::setAutomaticInvocationEnabled(bool enabled) { - config()->setAutomaticCompletionInvocation(enabled); + config()->setValue(KateViewConfig::AutomaticCompletionInvocation, enabled); } void KTextEditor::ViewPrivate::sendCompletionExecuted(const KTextEditor::Cursor &position, KTextEditor::CodeCompletionModel *model, const QModelIndex &index) @@ -3306,6 +3300,15 @@ void KTextEditor::ViewPrivate::setConfigValue(const QString &key, const QVariant &value) { + // First, try the new config interface + if (config()->setValue(key, value)) { + return; + + } else if (renderer()->config()->setValue(key, value)) { + return; + } + + // No success? Go the old way if (value.canConvert(QVariant::Color)) { if (key == QLatin1String("background-color")) { renderer()->config()->setBackgroundColor(value.value()); @@ -3328,33 +3331,10 @@ } else if (value.type() == QVariant::Bool) { // Note explicit type check above. If we used canConvert, then // values of type UInt will be trapped here. - if (key == QLatin1String("icon-bar")) { - config()->setIconBar(value.toBool()); - } else if (key == QLatin1String("line-numbers")) { - config()->setLineNumbers(value.toBool()); - } else if (key == QLatin1String("dynamic-word-wrap")) { + if (key == QLatin1String("dynamic-word-wrap")) { config()->setDynWordWrap(value.toBool()); - } else if (key == QLatin1String("allow-mark-menu")) { - config()->setAllowMarkMenu(value.toBool()); - } else if (key == QLatin1String("folding-bar")) { - config()->setFoldingBar(value.toBool()); - } else if (key == QLatin1String("folding-preview")) { - config()->setFoldingPreview(value.toBool()); - } else if (key == QLatin1String("modification-markers")) { - config()->setLineModification(value.toBool()); - } else if (key == QLatin1String("keyword-completion")) { - config()->setKeywordCompletion(value.toBool()); } else if (key == QLatin1String("word-count")) { config()->setShowWordCount(value.toBool()); - } else if (key == QLatin1String("scrollbar-minimap")) { - config()->setScrollBarMiniMap(value.toBool()); - } else if (key == QLatin1String("scrollbar-preview")) { - config()->setScrollBarPreview(value.toBool()); - } - - } else if (value.canConvert(QVariant::UInt)) { - if (key == QLatin1String("default-mark-type")) { - config()->setDefaultMarkType(value.toUInt()); } } else if (value.canConvert(QVariant::Font)) { Index: src/view/kateviewhelpers.cpp =================================================================== --- src/view/kateviewhelpers.cpp +++ src/view/kateviewhelpers.cpp @@ -2482,7 +2482,7 @@ } int result = rA->data().toInt(); if (result > 100) { - KateViewConfig::global()->setDefaultMarkType(vec[result - 100]); + KateViewConfig::global()->setValue(KateViewConfig::DefaultMarkType, vec[result - 100]); } else { MarkInterface::MarkTypes markType = (MarkInterface::MarkTypes) vec[result]; if (m_doc->mark(line) & markType) { Index: src/vimode/config/configtab.cpp =================================================================== --- src/vimode/config/configtab.cpp +++ src/vimode/config/configtab.cpp @@ -125,8 +125,8 @@ KateViewConfig::global()->configStart(); // General options. - KateViewConfig::global()->setViRelativeLineNumbers(ui->chkViRelLineNumbers->isChecked()); - KateViewConfig::global()->setViInputModeStealKeys(ui->chkViCommandsOverride->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ViRelativeLineNumbers, ui->chkViRelLineNumbers->isChecked()); + KateViewConfig::global()->setValue(KateViewConfig::ViInputModeStealKeys, ui->chkViCommandsOverride->isChecked()); // Mappings. applyTab(ui->tblNormalModeMappings, Mappings::NormalModeMapping);