kde-workspace/kate/part/utils/kateconfig.cpp
Ivailo Monev f68295ea28 generic: move sub-projects from kde-baseapps [ci reset]
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-05-14 21:56:54 +03:00

2733 lines
64 KiB
C++

/* This file is part of the KDE libraries
Copyright (C) 2007, 2008 Matthew Woehlke <mw_triad@users.sourceforge.net>
Copyright (C) 2003 Christoph Cullmann <cullmann@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "kateconfig.h"
#include "kateglobal.h"
#include "katedefaultcolors.h"
#include "katerenderer.h"
#include "kateview.h"
#include "katedocument.h"
#include "kateschema.h"
#include <math.h>
#include <kconfig.h>
#include <kconfiggroup.h>
#include <kglobalsettings.h>
#include <kcolorscheme.h>
#include <kcolorutils.h>
#include <kcharsets.h>
#include <klocale.h>
#include <kcomponentdata.h>
#include <kdebug.h>
#include <QtCore/QTextCodec>
#include <QStringListModel>
//BEGIN KateConfig
KateConfig::KateConfig ()
: configSessionNumber (0), configIsRunning (false)
{
}
KateConfig::~KateConfig ()
{
}
void KateConfig::configStart ()
{
configSessionNumber++;
if (configSessionNumber > 1)
return;
configIsRunning = true;
}
void KateConfig::configEnd ()
{
if (configSessionNumber == 0)
return;
configSessionNumber--;
if (configSessionNumber > 0)
return;
configIsRunning = false;
updateConfig ();
}
//END
//BEGIN KateDocumentConfig
KateGlobalConfig *KateGlobalConfig::s_global = 0;
KateDocumentConfig *KateDocumentConfig::s_global = 0;
KateViewConfig *KateViewConfig::s_global = 0;
KateRendererConfig *KateRendererConfig::s_global = 0;
KateGlobalConfig::KateGlobalConfig ()
{
s_global = this;
// init with defaults from config or really hardcoded ones
KConfigGroup cg( KGlobal::config(), "Kate Part Defaults");
readConfig (cg);
}
KateGlobalConfig::~KateGlobalConfig ()
{
}
namespace
{
const char * const KEY_FALLBACK_ENCODING = "Fallback Encoding";
}
void KateGlobalConfig::readConfig (const KConfigGroup &config)
{
configStart ();
setFallbackEncoding (config.readEntry(KEY_FALLBACK_ENCODING, ""));
configEnd ();
}
void KateGlobalConfig::writeConfig (KConfigGroup &config)
{
config.writeEntry(KEY_FALLBACK_ENCODING, fallbackEncoding());
}
void KateGlobalConfig::updateConfig ()
{
}
const QString &KateGlobalConfig::fallbackEncoding () const
{
return m_fallbackEncoding;
}
QTextCodec *KateGlobalConfig::fallbackCodec () const
{
if (m_fallbackEncoding.isEmpty())
return QTextCodec::codecForName("ISO-8859-15");
return KGlobal::charsets()->codecForName (m_fallbackEncoding);
}
bool KateGlobalConfig::setFallbackEncoding (const QString &encoding)
{
QTextCodec *codec;
bool found = false;
if (encoding.isEmpty())
{
codec = s_global->fallbackCodec();
found = true;
}
else
codec = KGlobal::charsets()->codecForName (encoding, found);
if (!found || !codec)
return false;
configStart ();
m_fallbackEncoding = codec->name();
configEnd ();
return true;
}
KateDocumentConfig::KateDocumentConfig ()
: m_indentationWidth (2),
m_tabWidth (8),
m_tabHandling (tabSmart),
m_configFlags (0),
m_wordWrapAt (80),
m_tabWidthSet (false),
m_indentationWidthSet (false),
m_indentationModeSet (false),
m_wordWrapSet (false),
m_wordWrapAtSet (false),
m_pageUpDownMovesCursorSet (false),
m_keepExtraSpacesSet (false),
m_indentPastedTextSet (false),
m_backspaceIndentsSet (false),
m_smartHomeSet (false),
m_showTabsSet (false),
m_showSpacesSet (false),
m_replaceTabsDynSet (false),
m_removeSpacesSet (false),
m_newLineAtEofSet (false),
m_overwiteModeSet (false),
m_tabIndentsSet (false),
m_encodingSet (false),
m_eolSet (false),
m_bomSet (false),
m_allowEolDetectionSet (false),
m_allowSimpleModeSet (false),
m_backupFlagsSet (false),
m_searchDirConfigDepthSet (false),
m_backupPrefixSet (false),
m_backupSuffixSet (false),
m_swapFileNoSyncSet (false),
m_onTheFlySpellCheckSet (false),
m_lineLengthLimitSet (false),
m_doc (0)
{
s_global = this;
// init with defaults from config or really hardcoded ones
KConfigGroup cg( KGlobal::config(), "Kate Document Defaults");
readConfig (cg);
}
KateDocumentConfig::KateDocumentConfig (const KConfigGroup &cg)
: m_indentationWidth (2),
m_tabWidth (8),
m_tabHandling (tabSmart),
m_configFlags (0),
m_wordWrapAt (80),
m_tabWidthSet (false),
m_indentationWidthSet (false),
m_indentationModeSet (false),
m_wordWrapSet (false),
m_wordWrapAtSet (false),
m_pageUpDownMovesCursorSet (false),
m_keepExtraSpacesSet (false),
m_indentPastedTextSet (false),
m_backspaceIndentsSet (false),
m_smartHomeSet (false),
m_showTabsSet (false),
m_showSpacesSet (false),
m_replaceTabsDynSet (false),
m_removeSpacesSet (false),
m_newLineAtEofSet (false),
m_overwiteModeSet (false),
m_tabIndentsSet (false),
m_encodingSet (false),
m_eolSet (false),
m_bomSet (false),
m_allowEolDetectionSet (false),
m_allowSimpleModeSet (false),
m_backupFlagsSet (false),
m_searchDirConfigDepthSet (false),
m_backupPrefixSet (false),
m_backupSuffixSet (false),
m_swapFileNoSyncSet (false),
m_onTheFlySpellCheckSet (false),
m_lineLengthLimitSet (false),
m_doc (0)
{
// init with defaults from config or really hardcoded ones
readConfig (cg);
}
KateDocumentConfig::KateDocumentConfig (KateDocument *doc)
: m_tabHandling (tabSmart),
m_configFlags (0),
m_tabWidthSet (false),
m_indentationWidthSet (false),
m_indentationModeSet (false),
m_wordWrapSet (false),
m_wordWrapAtSet (false),
m_pageUpDownMovesCursorSet (false),
m_keepExtraSpacesSet (false),
m_indentPastedTextSet (false),
m_backspaceIndentsSet (false),
m_smartHomeSet (false),
m_showTabsSet (false),
m_showSpacesSet (false),
m_replaceTabsDynSet (false),
m_removeSpacesSet (false),
m_newLineAtEofSet (false),
m_overwiteModeSet (false),
m_tabIndentsSet (false),
m_encodingSet (false),
m_eolSet (false),
m_bomSet (false),
m_allowEolDetectionSet (false),
m_allowSimpleModeSet (false),
m_backupFlagsSet (false),
m_searchDirConfigDepthSet (false),
m_backupPrefixSet (false),
m_backupSuffixSet (false),
m_swapFileNoSyncSet (false),
m_onTheFlySpellCheckSet (false),
m_lineLengthLimitSet (false),
m_doc (doc)
{
}
KateDocumentConfig::~KateDocumentConfig ()
{
}
namespace
{
const char * const KEY_TAB_WIDTH = "Tab Width";
const char * const KEY_INDENTATION_WIDTH = "Indentation Width";
const char * const KEY_INDENTATION_MODE = "Indentation Mode";
const char * const KEY_TAB_HANDLING = "Tab Handling";
const char * const KEY_WORD_WRAP = "Word Wrap";
const char * const KEY_WORD_WRAP_AT = "Word Wrap Column";
const char * const KEY_PAGEUP_DOWN_MOVES_CURSOR = "PageUp/PageDown Moves Cursor";
const char * const KEY_SMART_HOME = "Smart Home";
const char * const KEY_SHOW_TABS = "Show Tabs";
const char * const KEY_TAB_INDENTS = "Indent On Tab";
const char * const KEY_KEEP_EXTRA_SPACES = "Keep Extra Spaces";
const char * const KEY_INDENT_PASTED_TEXT = "Indent On Text Paste";
const char * const KEY_BACKSPACE_INDENTS = "Indent On Backspace";
const char * const KEY_SHOW_SPACES = "Show Spaces";
const char * const KEY_REPLACE_TABS_DYN = "ReplaceTabsDyn";
const char * const KEY_REMOVE_SPACES = "Remove Spaces";
const char * const KEY_NEWLINE_AT_EOF = "Newline At EOF";
const char * const KEY_OVR = "Overwrite Mode";
const char * const KEY_ENCODING = "Encoding";
const char * const KEY_EOL = "End of Line";
const char * const KEY_ALLOW_EOL_DETECTION = "Allow End of Line Detection";
const char * const KEY_BOM = "BOM";
const char * const KEY_ALLOW_SIMPLE_MODE = "Allow Simple Mode";
const char * const KEY_BACKUP_FLAGS = "Backup Flags";
const char * const KEY_SEARCH_DIR_CONFIG_DEPTH = "Search Dir Config Depth";
const char * const KEY_BACKUP_PREFIX = "Backup Prefix";
const char * const KEY_BACKUP_SUFFIX = "Backup Suffix";
const char * const KEY_SWAP_FILE_NO_SYNC = "No sync";
const char * const KEY_ON_THE_FLY_SPELLCHECK = "On-The-Fly Spellcheck";
const char * const KEY_LINE_LENGTH_LIMIT = "Line Length Limit";
}
void KateDocumentConfig::readConfig (const KConfigGroup &config)
{
configStart ();
setTabWidth (config.readEntry(KEY_TAB_WIDTH, 8));
setIndentationWidth (config.readEntry(KEY_INDENTATION_WIDTH, 2));
setIndentationMode (config.readEntry(KEY_INDENTATION_MODE, "normal"));
setTabHandling (config.readEntry(KEY_TAB_HANDLING, int(KateDocumentConfig::tabSmart)));
setWordWrap (config.readEntry(KEY_WORD_WRAP, false));
setWordWrapAt (config.readEntry(KEY_WORD_WRAP_AT, 80));
setPageUpDownMovesCursor (config.readEntry(KEY_PAGEUP_DOWN_MOVES_CURSOR, false));
setSmartHome (config.readEntry(KEY_SMART_HOME, true));
setShowTabs (config.readEntry(KEY_SHOW_TABS, true));
setTabIndents (config.readEntry(KEY_TAB_INDENTS, true));
setKeepExtraSpaces (config.readEntry(KEY_KEEP_EXTRA_SPACES, false));
setIndentPastedText (config.readEntry(KEY_INDENT_PASTED_TEXT, false));
setBackspaceIndents (config.readEntry(KEY_BACKSPACE_INDENTS, false));
setShowSpaces (config.readEntry(KEY_SHOW_SPACES, false));
setReplaceTabsDyn (config.readEntry(KEY_REPLACE_TABS_DYN, false));
setRemoveSpaces (config.readEntry(KEY_REMOVE_SPACES, 0));
setNewLineAtEof (config.readEntry(KEY_NEWLINE_AT_EOF, false));
setOvr (config.readEntry(KEY_OVR, false));
setEncoding (config.readEntry(KEY_ENCODING, ""));
setEol (config.readEntry(KEY_EOL, 0));
setAllowEolDetection (config.readEntry(KEY_ALLOW_EOL_DETECTION, true));
setBom (config.readEntry(KEY_BOM,false));
setAllowSimpleMode (config.readEntry(KEY_ALLOW_SIMPLE_MODE, true));
setBackupFlags (config.readEntry(KEY_BACKUP_FLAGS, 0));
setSearchDirConfigDepth (config.readEntry(KEY_SEARCH_DIR_CONFIG_DEPTH, 9));
setBackupPrefix (config.readEntry(KEY_BACKUP_PREFIX, QString ("")));
setBackupSuffix (config.readEntry(KEY_BACKUP_SUFFIX, QString ("~")));
setSwapFileNoSync (config.readEntry(KEY_SWAP_FILE_NO_SYNC, false));
setOnTheFlySpellCheck(config.readEntry(KEY_ON_THE_FLY_SPELLCHECK, false));
setLineLengthLimit(config.readEntry(KEY_LINE_LENGTH_LIMIT, 4096));
configEnd ();
}
void KateDocumentConfig::writeConfig (KConfigGroup &config)
{
config.writeEntry(KEY_TAB_WIDTH, tabWidth());
config.writeEntry(KEY_INDENTATION_WIDTH, indentationWidth());
config.writeEntry(KEY_INDENTATION_MODE, indentationMode());
config.writeEntry(KEY_TAB_HANDLING, tabHandling());
config.writeEntry(KEY_WORD_WRAP, wordWrap());
config.writeEntry(KEY_WORD_WRAP_AT, wordWrapAt());
config.writeEntry(KEY_PAGEUP_DOWN_MOVES_CURSOR, pageUpDownMovesCursor());
config.writeEntry(KEY_SMART_HOME, smartHome());
config.writeEntry(KEY_SHOW_TABS, showTabs());
config.writeEntry(KEY_TAB_INDENTS, tabIndentsEnabled());
config.writeEntry(KEY_KEEP_EXTRA_SPACES, keepExtraSpaces());
config.writeEntry(KEY_INDENT_PASTED_TEXT, indentPastedText());
config.writeEntry(KEY_BACKSPACE_INDENTS, backspaceIndents());
config.writeEntry(KEY_SHOW_SPACES, showSpaces());
config.writeEntry(KEY_REPLACE_TABS_DYN, replaceTabsDyn());
config.writeEntry(KEY_REMOVE_SPACES, removeSpaces());
config.writeEntry(KEY_NEWLINE_AT_EOF, newLineAtEof());
config.writeEntry(KEY_OVR, ovr());
config.writeEntry(KEY_ENCODING, encoding());
config.writeEntry(KEY_EOL, eol());
config.writeEntry(KEY_ALLOW_EOL_DETECTION, allowEolDetection());
config.writeEntry(KEY_BOM,bom());
config.writeEntry(KEY_ALLOW_SIMPLE_MODE, allowSimpleMode());
config.writeEntry(KEY_BACKUP_FLAGS, backupFlags());
config.writeEntry(KEY_SEARCH_DIR_CONFIG_DEPTH, searchDirConfigDepth());
config.writeEntry(KEY_BACKUP_PREFIX, backupPrefix());
config.writeEntry(KEY_BACKUP_SUFFIX, backupSuffix());
config.writeEntry(KEY_SWAP_FILE_NO_SYNC, swapFileNoSync());
config.writeEntry(KEY_ON_THE_FLY_SPELLCHECK, onTheFlySpellCheck());
config.writeEntry(KEY_LINE_LENGTH_LIMIT, lineLengthLimit());
}
void KateDocumentConfig::updateConfig ()
{
if (m_doc)
{
m_doc->updateConfig ();
return;
}
if (isGlobal())
{
for (int z=0; z < KateGlobal::self()->kateDocuments().size(); ++z)
(KateGlobal::self()->kateDocuments())[z]->updateConfig ();
}
}
int KateDocumentConfig::tabWidth () const
{
if (m_tabWidthSet || isGlobal())
return m_tabWidth;
return s_global->tabWidth();
}
void KateDocumentConfig::setTabWidth (int tabWidth)
{
if (tabWidth < 1)
return;
if (m_tabWidthSet && m_tabWidth == tabWidth)
return;
configStart ();
m_tabWidthSet = true;
m_tabWidth = tabWidth;
configEnd ();
}
int KateDocumentConfig::indentationWidth () const
{
if (m_indentationWidthSet || isGlobal())
return m_indentationWidth;
return s_global->indentationWidth();
}
void KateDocumentConfig::setIndentationWidth (int indentationWidth)
{
if (indentationWidth < 1)
return;
if (m_indentationWidthSet && m_indentationWidth == indentationWidth)
return;
configStart ();
m_indentationWidthSet = true;
m_indentationWidth = indentationWidth;
configEnd ();
}
const QString &KateDocumentConfig::indentationMode () const
{
if (m_indentationModeSet || isGlobal())
return m_indentationMode;
return s_global->indentationMode();
}
void KateDocumentConfig::setIndentationMode (const QString &indentationMode)
{
if (m_indentationModeSet && m_indentationMode == indentationMode)
return;
configStart ();
m_indentationModeSet = true;
m_indentationMode = indentationMode;
configEnd ();
}
uint KateDocumentConfig::tabHandling () const
{
// This setting is purly a user preference,
// hence, there exists only the global setting.
if (isGlobal())
return m_tabHandling;
return s_global->tabHandling();
}
void KateDocumentConfig::setTabHandling (uint tabHandling)
{
configStart ();
m_tabHandling = tabHandling;
configEnd ();
}
bool KateDocumentConfig::wordWrap () const
{
if (m_wordWrapSet || isGlobal())
return m_wordWrap;
return s_global->wordWrap();
}
void KateDocumentConfig::setWordWrap (bool on)
{
if (m_wordWrapSet && m_wordWrap == on)
return;
configStart ();
m_wordWrapSet = true;
m_wordWrap = on;
configEnd ();
}
int KateDocumentConfig::wordWrapAt () const
{
if (m_wordWrapAtSet || isGlobal())
return m_wordWrapAt;
return s_global->wordWrapAt();
}
void KateDocumentConfig::setWordWrapAt (int col)
{
if (col < 1)
return;
if (m_wordWrapAtSet && m_wordWrapAt == col)
return;
configStart ();
m_wordWrapAtSet = true;
m_wordWrapAt = col;
configEnd ();
}
bool KateDocumentConfig::pageUpDownMovesCursor () const
{
if (m_pageUpDownMovesCursorSet || isGlobal())
return m_pageUpDownMovesCursor;
return s_global->pageUpDownMovesCursor();
}
void KateDocumentConfig::setPageUpDownMovesCursor (bool on)
{
if (m_pageUpDownMovesCursorSet && m_pageUpDownMovesCursor == on)
return;
configStart ();
m_pageUpDownMovesCursorSet = true;
m_pageUpDownMovesCursor = on;
configEnd ();
}
void KateDocumentConfig::setKeepExtraSpaces(bool on)
{
if (m_keepExtraSpacesSet && m_keepExtraSpaces == on)
return;
configStart ();
m_keepExtraSpacesSet = true;
m_keepExtraSpaces = on;
configEnd ();
}
bool KateDocumentConfig::keepExtraSpaces() const
{
if (m_keepExtraSpacesSet || isGlobal())
return m_keepExtraSpaces;
return s_global->keepExtraSpaces();
}
void KateDocumentConfig::setIndentPastedText(bool on)
{
if (m_indentPastedTextSet && m_indentPastedText == on)
return;
configStart ();
m_indentPastedTextSet = true;
m_indentPastedText = on;
configEnd ();
}
bool KateDocumentConfig::indentPastedText() const
{
if (m_indentPastedTextSet || isGlobal())
return m_indentPastedText;
return s_global->indentPastedText();
}
void KateDocumentConfig::setBackspaceIndents(bool on)
{
if (m_backspaceIndentsSet && m_backspaceIndents == on)
return;
configStart ();
m_backspaceIndentsSet = true;
m_backspaceIndents = on;
configEnd ();
}
bool KateDocumentConfig::backspaceIndents() const
{
if (m_backspaceIndentsSet || isGlobal())
return m_backspaceIndents;
return s_global->backspaceIndents();
}
void KateDocumentConfig::setSmartHome(bool on)
{
if (m_smartHomeSet && m_smartHome == on)
return;
configStart ();
m_smartHomeSet = true;
m_smartHome = on;
configEnd ();
}
bool KateDocumentConfig::smartHome() const
{
if (m_smartHomeSet || isGlobal())
return m_smartHome;
return s_global->smartHome();
}
void KateDocumentConfig::setShowTabs(bool on)
{
if (m_showTabsSet && m_showTabs == on)
return;
configStart ();
m_showTabsSet = true;
m_showTabs = on;
configEnd ();
}
bool KateDocumentConfig::showTabs() const
{
if (m_showTabsSet || isGlobal())
return m_showTabs;
return s_global->showTabs();
}
void KateDocumentConfig::setShowSpaces(bool on)
{
if (m_showSpacesSet && m_showSpaces == on)
return;
configStart ();
m_showSpacesSet = true;
m_showSpaces = on;
configEnd ();
}
bool KateDocumentConfig::showSpaces() const
{
if (m_showSpacesSet || isGlobal())
return m_showSpaces;
return s_global->showSpaces();
}
void KateDocumentConfig::setReplaceTabsDyn(bool on)
{
if (m_replaceTabsDynSet && m_replaceTabsDyn == on)
return;
configStart ();
m_replaceTabsDynSet = true;
m_replaceTabsDyn = on;
configEnd ();
}
bool KateDocumentConfig::replaceTabsDyn() const
{
if (m_replaceTabsDynSet || isGlobal())
return m_replaceTabsDyn;
return s_global->replaceTabsDyn();
}
void KateDocumentConfig::setRemoveSpaces(int triState)
{
if (m_removeSpacesSet && m_removeSpaces == triState)
return;
configStart ();
m_removeSpacesSet = true;
m_removeSpaces = triState;
configEnd ();
}
int KateDocumentConfig::removeSpaces() const
{
if (m_removeSpacesSet || isGlobal())
return m_removeSpaces;
return s_global->removeSpaces();
}
void KateDocumentConfig::setNewLineAtEof (bool on)
{
if (m_newLineAtEofSet && m_newLineAtEof == on)
return;
configStart ();
m_newLineAtEofSet = true;
m_newLineAtEof = on;
configEnd ();
}
bool KateDocumentConfig::newLineAtEof () const
{
if (m_newLineAtEofSet || isGlobal())
return m_newLineAtEof;
return s_global->newLineAtEof();
}
void KateDocumentConfig::setOvr(bool on)
{
if (m_overwiteModeSet && m_overwiteMode == on)
return;
configStart ();
m_overwiteModeSet = true;
m_overwiteMode = on;
configEnd ();
}
bool KateDocumentConfig::ovr() const
{
if (m_overwiteModeSet || isGlobal())
return m_overwiteMode;
return s_global->ovr();
}
void KateDocumentConfig::setTabIndents(bool on)
{
if (m_tabIndentsSet && m_tabIndents == on)
return;
configStart ();
m_tabIndentsSet = true;
m_tabIndents = on;
configEnd ();
}
bool KateDocumentConfig::tabIndentsEnabled() const
{
if (m_tabIndentsSet || isGlobal())
return m_tabIndents;
return s_global->tabIndentsEnabled();
}
const QString &KateDocumentConfig::encoding () const
{
if (m_encodingSet || isGlobal())
return m_encoding;
return s_global->encoding();
}
QTextCodec *KateDocumentConfig::codec () const
{
if (m_encodingSet || isGlobal())
{
if (m_encoding.isEmpty() && isGlobal())
return KGlobal::locale()->codecForEncoding();
else if (m_encoding.isEmpty())
return s_global->codec ();
else
return KGlobal::charsets()->codecForName (m_encoding);
}
return s_global->codec ();
}
bool KateDocumentConfig::setEncoding (const QString &encoding)
{
QTextCodec *codec;
bool found = false;
if (encoding.isEmpty())
{
codec = s_global->codec();
found=true;
}
else
codec = KGlobal::charsets()->codecForName (encoding, found);
if (!found || !codec)
return false;
configStart ();
m_encodingSet = true;
m_encoding = codec->name();
if (isGlobal())
KateGlobal::self()->setDefaultEncoding (m_encoding);
configEnd ();
return true;
}
bool KateDocumentConfig::isSetEncoding () const
{
return m_encodingSet;
}
int KateDocumentConfig::eol () const
{
if (m_eolSet || isGlobal())
return m_eol;
return s_global->eol();
}
QString KateDocumentConfig::eolString ()
{
if (eol() == KateDocumentConfig::eolUnix)
return QString ("\n");
else if (eol() == KateDocumentConfig::eolDos)
return QString ("\r\n");
else if (eol() == KateDocumentConfig::eolMac)
return QString ("\r");
return QString ("\n");
}
void KateDocumentConfig::setEol (int mode)
{
if (m_eolSet && m_eol == mode)
return;
configStart ();
m_eolSet = true;
m_eol = mode;
configEnd ();
}
void KateDocumentConfig::setBom (bool bom)
{
if (m_bomSet && m_bom == bom)
return;
configStart ();
m_bomSet = true;
m_bom = bom;
configEnd ();
}
bool KateDocumentConfig::bom() const
{
if (m_bomSet || isGlobal())
return m_bom;
return s_global->bom();
}
bool KateDocumentConfig::allowEolDetection () const
{
if (m_allowEolDetectionSet || isGlobal())
return m_allowEolDetection;
return s_global->allowEolDetection();
}
void KateDocumentConfig::setAllowEolDetection (bool on)
{
if (m_allowEolDetectionSet && m_allowEolDetection == on)
return;
configStart ();
m_allowEolDetectionSet = true;
m_allowEolDetection = on;
configEnd ();
}
bool KateDocumentConfig::allowSimpleMode () const
{
if (m_allowSimpleModeSet || isGlobal())
return m_allowSimpleMode;
return s_global->allowSimpleMode();
}
void KateDocumentConfig::setAllowSimpleMode (bool on)
{
if (m_allowSimpleModeSet && m_allowSimpleMode == on)
return;
configStart ();
m_allowSimpleModeSet = true;
m_allowSimpleMode = on;
configEnd ();
}
uint KateDocumentConfig::backupFlags () const
{
if (m_backupFlagsSet || isGlobal())
return m_backupFlags;
return s_global->backupFlags();
}
void KateDocumentConfig::setBackupFlags (uint flags)
{
if (m_backupFlagsSet && m_backupFlags == flags)
return;
configStart ();
m_backupFlagsSet = true;
m_backupFlags = flags;
configEnd ();
}
const QString &KateDocumentConfig::backupPrefix () const
{
if (m_backupPrefixSet || isGlobal())
return m_backupPrefix;
return s_global->backupPrefix();
}
const QString &KateDocumentConfig::backupSuffix () const
{
if (m_backupSuffixSet || isGlobal())
return m_backupSuffix;
return s_global->backupSuffix();
}
void KateDocumentConfig::setBackupPrefix (const QString &prefix)
{
if (m_backupPrefixSet && m_backupPrefix == prefix)
return;
configStart ();
m_backupPrefixSet = true;
m_backupPrefix = prefix;
configEnd ();
}
void KateDocumentConfig::setBackupSuffix (const QString &suffix)
{
if (m_backupSuffixSet && m_backupSuffix == suffix)
return;
configStart ();
m_backupSuffixSet = true;
m_backupSuffix = suffix;
configEnd ();
}
bool KateDocumentConfig::swapFileNoSync() const
{
if (m_swapFileNoSyncSet || isGlobal())
return m_swapFileNoSync;
return s_global->swapFileNoSync();
}
void KateDocumentConfig::setSwapFileNoSync(bool on)
{
if (m_swapFileNoSyncSet && m_swapFileNoSync == on)
return;
configStart();
m_swapFileNoSyncSet = true;
m_swapFileNoSync = on;
configEnd();
}
int KateDocumentConfig::searchDirConfigDepth () const
{
if (m_searchDirConfigDepthSet || isGlobal())
return m_searchDirConfigDepth;
return s_global->searchDirConfigDepth ();
}
void KateDocumentConfig::setSearchDirConfigDepth (int depth)
{
if (m_searchDirConfigDepthSet && m_searchDirConfigDepth == depth)
return;
configStart ();
m_searchDirConfigDepthSet = true;
m_searchDirConfigDepth = depth;
configEnd ();
}
bool KateDocumentConfig::onTheFlySpellCheck() const
{
if(isGlobal()) {
// WARNING: this is slightly hackish, but it's currently the only way to
// do it, see also the KTextEdit class
KConfigGroup configGroup(KGlobal::config(), "Spelling");
return configGroup.readEntry("checkerEnabledByDefault", false);
}
if (m_onTheFlySpellCheckSet) {
return m_onTheFlySpellCheck;
}
return s_global->onTheFlySpellCheck();
}
void KateDocumentConfig::setOnTheFlySpellCheck(bool on)
{
if (m_onTheFlySpellCheckSet && m_onTheFlySpellCheck == on)
return;
configStart ();
m_onTheFlySpellCheckSet = true;
m_onTheFlySpellCheck = on;
configEnd ();
}
int KateDocumentConfig::lineLengthLimit() const
{
if (m_lineLengthLimitSet || isGlobal())
return m_lineLengthLimit;
return s_global->lineLengthLimit();
}
void KateDocumentConfig::setLineLengthLimit(int lineLengthLimit)
{
if (m_lineLengthLimitSet && m_lineLengthLimit == lineLengthLimit)
return;
configStart();
m_lineLengthLimitSet = true;
m_lineLengthLimit = lineLengthLimit;
configEnd();
}
//END
//BEGIN KateViewConfig
KateViewConfig::KateViewConfig ()
:
m_dynWordWrapSet (false),
m_dynWordWrapIndicatorsSet (false),
m_dynWordWrapAlignIndentSet (false),
m_lineNumbersSet (false),
m_scrollBarMarksSet (false),
m_scrollBarMiniMapSet (false),
m_scrollBarMiniMapAllSet (false),
m_scrollBarMiniMapWidthSet (false),
m_showScrollbarsSet (false),
m_iconBarSet (false),
m_foldingBarSet (false),
m_lineModificationSet (false),
m_bookmarkSortSet (false),
m_autoCenterLinesSet (false),
m_searchFlagsSet (false),
m_defaultMarkTypeSet (false),
m_persistentSelectionSet (false),
m_viInputModeSet (false),
m_viInputModeStealKeysSet (false),
m_viRelativeLineNumbersSet (false),
m_viInputModeEmulateCommandBarSet(false),
m_automaticCompletionInvocationSet (false),
m_wordCompletionSet (false),
m_keywordCompletionSet (false),
m_wordCompletionMinimalWordLengthSet (false),
m_smartCopyCutSet (false),
m_scrollPastEndSet (false),
m_allowMarkMenu (true),
m_wordCompletionRemoveTailSet (false),
m_foldFirstLineSet (false),
m_view (0)
{
s_global = this;
// init with defaults from config or really hardcoded ones
KConfigGroup config( KGlobal::config(), "Kate View Defaults");
readConfig (config);
}
KateViewConfig::KateViewConfig (KateView *view)
:
m_searchFlags (PowerModePlainText),
m_maxHistorySize (100),
m_dynWordWrapSet (false),
m_dynWordWrapIndicatorsSet (false),
m_dynWordWrapAlignIndentSet (false),
m_lineNumbersSet (false),
m_scrollBarMarksSet (false),
m_scrollBarMiniMapSet (false),
m_scrollBarMiniMapAllSet (false),
m_scrollBarMiniMapWidthSet (false),
m_showScrollbarsSet (false),
m_iconBarSet (false),
m_foldingBarSet (false),
m_lineModificationSet (false),
m_bookmarkSortSet (false),
m_autoCenterLinesSet (false),
m_searchFlagsSet (false),
m_defaultMarkTypeSet (false),
m_persistentSelectionSet (false),
m_viInputModeSet (false),
m_viInputModeStealKeysSet (false),
m_viRelativeLineNumbersSet (false),
m_viInputModeEmulateCommandBarSet(false),
m_automaticCompletionInvocationSet (false),
m_wordCompletionSet (false),
m_keywordCompletionSet (false),
m_wordCompletionMinimalWordLengthSet (false),
m_smartCopyCutSet (false),
m_scrollPastEndSet (false),
m_allowMarkMenu (true),
m_wordCompletionRemoveTailSet (false),
m_foldFirstLineSet (false),
m_view (view)
{
}
KateViewConfig::~KateViewConfig ()
{
}
namespace
{
const char * const KEY_SEARCH_REPLACE_FLAGS = "Search/Replace Flags";
const char * const KEY_PATTERN_HISTORY = "Search Pattern History";
const char * const KEY_REPLACEMENT_HISTORY = "Replacement Text History";
const char * const KEY_DYN_WORD_WRAP = "Dynamic Word Wrap";
const char * const KEY_DYN_WORD_WRAP_INDICATORS = "Dynamic Word Wrap Indicators";
const char * const KEY_DYN_WORD_WRAP_ALIGN_INDENT = "Dynamic Word Wrap Align Indent";
const char * const KEY_LINE_NUMBERS = "Line Numbers";
const char * const KEY_SCROLL_BAR_MARKS = "Scroll Bar Marks";
const char * const KEY_SCROLL_BAR_MINI_MAP = "Scroll Bar Mini Map";
const char * const KEY_SCROLL_BAR_MINI_MAP_ALL = "Scroll Bar Mini Map All";
const char * const KEY_SCROLL_BAR_MINI_MAP_WIDTH = "Scroll Bar Mini Map Width";
const char * const KEY_SHOW_SCROLLBARS = "Show Scrollbars";
const char * const KEY_ICON_BAR = "Icon Bar";
const char * const KEY_FOLDING_BAR = "Folding Bar";
const char * const KEY_LINE_MODIFICATION = "Line Modification";
const char * const KEY_BOOKMARK_SORT = "Bookmark Menu Sorting";
const char * const KEY_AUTO_CENTER_LINES = "Auto Center Lines";
const char * const KEY_MAX_HISTORY_SIZE = "Maximum Search History Size";
const char * const KEY_DEFAULT_MARK_TYPE = "Default Mark Type";
const char * const KEY_ALLOW_MARK_MENU = "Allow Mark Menu";
const char * const KEY_PERSISTENT_SELECTION = "Persistent Selection";
const char * const KEY_VI_INPUT_MODE = "Vi Input Mode";
const char * const KEY_VI_INPUT_MODE_STEAL_KEYS = "Vi Input Mode Steal Keys";
const char * const KEY_VI_RELATIVE_LINE_NUMBERS = "Vi Relative Line Numbers";
const char * const KEY_VI_INPUT_MODE_EMULATE_COMMAND_BAR = "Vi Input Mode Emulate Command Bar";
const char * const KEY_AUTOMATIC_COMPLETION_INVOCATION = "Auto Completion";
const char * const KEY_WORD_COMPLETION = "Word Completion";
const char * const KEY_KEYWORD_COMPLETION = "Keyword Completion";
const char * const KEY_WORD_COMPLETION_MINIMAL_WORD_LENGTH = "Word Completion Minimal Word Length";
const char * const KEY_WORD_COMPLETION_REMOVE_TAIL = "Word Completion Remove Tail";
const char * const KEY_SMART_COPY_CUT = "Smart Copy Cut";
const char * const KEY_SCROLL_PAST_END = "Scroll Past End";
const char * const KEY_FOLD_FIRST_LINE = "Fold First Line";
}
void KateViewConfig::readConfig ( const KConfigGroup &config)
{
configStart ();
// default off again, until this is usable for large size documents
setDynWordWrap (config.readEntry( KEY_DYN_WORD_WRAP, 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));
setScrollBarMiniMap (config.readEntry( KEY_SCROLL_BAR_MINI_MAP, false));
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<int>(AlwaysOn)));
setIconBar (config.readEntry( KEY_ICON_BAR, false ));
setFoldingBar (config.readEntry( KEY_FOLDING_BAR, 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 ));
setViInputMode (config.readEntry( KEY_VI_INPUT_MODE, false));
setViInputModeStealKeys (config.readEntry( KEY_VI_INPUT_MODE_STEAL_KEYS, false));
setViRelativeLineNumbers(config.readEntry( KEY_VI_RELATIVE_LINE_NUMBERS, false));
setViInputModeEmulateCommandBar (config.readEntry( KEY_VI_INPUT_MODE_EMULATE_COMMAND_BAR, 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 ));
setScrollPastEnd (config.readEntry( KEY_SCROLL_PAST_END, false ));
setFoldFirstLine (config.readEntry( KEY_FOLD_FIRST_LINE, false ));
if (isGlobal()) {
// Read search pattern history
QStringList patternHistory = config.readEntry(KEY_PATTERN_HISTORY, QStringList());
m_patternHistoryModel.setStringList(patternHistory);
// Read replacement text history
QStringList replacementHistory = config.readEntry(KEY_REPLACEMENT_HISTORY, QStringList());
m_replacementHistoryModel.setStringList(replacementHistory);
}
configEnd ();
}
void KateViewConfig::writeConfig (KConfigGroup &config)
{
config.writeEntry( KEY_DYN_WORD_WRAP, dynWordWrap() );
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_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_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_SCROLL_PAST_END , scrollPastEnd() );
config.writeEntry( KEY_FOLD_FIRST_LINE, foldFirstLine() );
config.writeEntry( KEY_VI_INPUT_MODE, viInputMode());
config.writeEntry( KEY_VI_INPUT_MODE_STEAL_KEYS, viInputModeStealKeys());
config.writeEntry( KEY_VI_RELATIVE_LINE_NUMBERS, viRelativeLineNumbers());
config.writeEntry( KEY_VI_INPUT_MODE_EMULATE_COMMAND_BAR, viInputModeEmulateCommandBar());
if (isGlobal()) {
// Write search pattern history
config.writeEntry(KEY_PATTERN_HISTORY, m_patternHistoryModel.stringList());
// Write replacement text history
config.writeEntry(KEY_REPLACEMENT_HISTORY, m_replacementHistoryModel.stringList());
}
}
void KateViewConfig::updateConfig ()
{
if (m_view)
{
m_view->updateConfig ();
return;
}
if (isGlobal())
{
for (int z=0; z < KateGlobal::self()->views().size(); ++z)
(KateGlobal::self()->views())[z]->updateConfig ();
}
}
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 ();
}
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::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::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::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 ();
}
QStringListModel *KateViewConfig::patternHistoryModel()
{
// always return global history
if (isGlobal())
return &m_patternHistoryModel;
return s_global->patternHistoryModel();
}
int KateViewConfig::maxHistorySize() const
{
return m_maxHistorySize;
}
QStringListModel *KateViewConfig::replacementHistoryModel()
{
// always return global history
if (isGlobal())
return &m_replacementHistoryModel;
return s_global->replacementHistoryModel();
}
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 ();
}
bool KateViewConfig::viInputMode () const
{
if (m_viInputModeSet || isGlobal())
return m_viInputMode;
return s_global->viInputMode();
}
void KateViewConfig::setViInputMode (bool on)
{
if (m_viInputModeSet && m_viInputMode == on)
return;
configStart ();
m_viInputModeSet = true;
m_viInputMode = on;
// make sure to turn off edits mergin when leaving vi input mode
if (!on && m_view) {
m_view->doc()->setUndoMergeAllEdits(false);
}
configEnd ();
}
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::viInputModeEmulateCommandBar() const
{
if (m_viInputModeEmulateCommandBarSet || isGlobal())
return m_viInputModeEmulateCommandBar;
return s_global->viInputModeEmulateCommandBar();
}
void KateViewConfig::setViInputModeEmulateCommandBar(bool on)
{
if (m_viInputModeEmulateCommandBarSet && m_viInputModeEmulateCommandBar == on)
return;
configStart();
m_viInputModeEmulateCommandBarSet = true;
m_viInputModeEmulateCommandBar = 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::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 ();
}
//END
//BEGIN KateRendererConfig
KateRendererConfig::KateRendererConfig ()
: m_fontMetrics(QFont()),
m_lineMarkerColor (KTextEditor::MarkInterface::reservedMarkersCount()),
m_wordWrapMarker (false),
m_showIndentationLines (false),
m_showWholeBracketExpression (false),
m_animateBracketMatching (false),
m_schemaSet (false),
m_fontSet (false),
m_wordWrapMarkerSet (false),
m_showIndentationLinesSet (false),
m_showWholeBracketExpressionSet (false),
m_backgroundColorSet (false),
m_selectionColorSet (false),
m_highlightedLineColorSet (false),
m_highlightedBracketColorSet (false),
m_wordWrapMarkerColorSet (false),
m_tabMarkerColorSet (false),
m_indentationLineColorSet (false),
m_iconBarColorSet (false),
m_foldingColorSet (false),
m_lineNumberColorSet (false),
m_separatorColorSet (false),
m_spellingMistakeLineColorSet (false),
m_modifiedLineColorSet (false),
m_savedLineColorSet (false),
m_searchHighlightColorSet (false),
m_replaceHighlightColorSet (false),
m_lineMarkerColorSet (m_lineMarkerColor.size()),
m_renderer (0)
{
// init bitarray
m_lineMarkerColorSet.fill (true);
s_global = this;
// init with defaults from config or really hardcoded ones
KConfigGroup config(KGlobal::config(), "Kate Renderer Defaults");
readConfig (config);
}
KateRendererConfig::KateRendererConfig (KateRenderer *renderer)
: m_fontMetrics(QFont()),
m_lineMarkerColor (KTextEditor::MarkInterface::reservedMarkersCount()),
m_schemaSet (false),
m_fontSet (false),
m_wordWrapMarkerSet (false),
m_showIndentationLinesSet (false),
m_showWholeBracketExpressionSet (false),
m_backgroundColorSet (false),
m_selectionColorSet (false),
m_highlightedLineColorSet (false),
m_highlightedBracketColorSet (false),
m_wordWrapMarkerColorSet (false),
m_tabMarkerColorSet (false),
m_indentationLineColorSet (false),
m_iconBarColorSet (false),
m_foldingColorSet (false),
m_lineNumberColorSet (false),
m_separatorColorSet (false),
m_spellingMistakeLineColorSet (false),
m_modifiedLineColorSet(false),
m_savedLineColorSet(false),
m_searchHighlightColorSet(false),
m_replaceHighlightColorSet(false),
m_lineMarkerColorSet (m_lineMarkerColor.size()),
m_renderer (renderer)
{
// init bitarray
m_lineMarkerColorSet.fill (false);
}
KateRendererConfig::~KateRendererConfig ()
{
}
namespace
{
const char * const KEY_SCHEMA = "Schema";
const char * const KEY_WORD_WRAP_MARKER = "Word Wrap Marker";
const char * const KEY_SHOW_INDENTATION_LINES = "Show Indentation Lines";
const char * const KEY_SHOW_WHOLE_BRACKET_EXPRESSION = "Show Whole Bracket Expression";
const char * const KEY_ANIMATE_BRACKET_MATCHING = "Animate Bracket Matching";
}
void KateRendererConfig::readConfig (const KConfigGroup &config)
{
configStart ();
// "Normal" Schema MUST BE THERE, see global kateschemarc
setSchema (config.readEntry(KEY_SCHEMA, "Normal"));
setWordWrapMarker (config.readEntry(KEY_WORD_WRAP_MARKER, false ));
setShowIndentationLines (config.readEntry( KEY_SHOW_INDENTATION_LINES, false));
setShowWholeBracketExpression (config.readEntry( KEY_SHOW_WHOLE_BRACKET_EXPRESSION, false));
setAnimateBracketMatching(config.readEntry(KEY_ANIMATE_BRACKET_MATCHING, false));
configEnd ();
}
void KateRendererConfig::writeConfig (KConfigGroup& config)
{
config.writeEntry (KEY_SCHEMA, schema());
config.writeEntry(KEY_WORD_WRAP_MARKER, wordWrapMarker() );
config.writeEntry(KEY_SHOW_INDENTATION_LINES, showIndentationLines());
config.writeEntry(KEY_SHOW_WHOLE_BRACKET_EXPRESSION, showWholeBracketExpression());
config.writeEntry(KEY_ANIMATE_BRACKET_MATCHING, animateBracketMatching());
}
void KateRendererConfig::updateConfig ()
{
if (m_renderer)
{
m_renderer->updateConfig ();
return;
}
if (isGlobal())
{
for (int z=0; z < KateGlobal::self()->views().size(); ++z)
(KateGlobal::self()->views())[z]->renderer()->updateConfig ();
}
}
const QString &KateRendererConfig::schema () const
{
if (m_schemaSet || isGlobal())
return m_schema;
return s_global->schema();
}
void KateRendererConfig::setSchema (const QString &schema)
{
if (m_schemaSet && m_schema == schema)
return;
configStart ();
m_schemaSet = true;
m_schema = schema;
setSchemaInternal( schema );
configEnd ();
}
void KateRendererConfig::reloadSchema()
{
if ( isGlobal() ) {
setSchemaInternal( m_schema );
foreach (KateView* view, KateGlobal::self()->views() )
view->renderer()->config()->reloadSchema();
}
else if ( m_renderer && m_schemaSet )
setSchemaInternal( m_schema );
}
void KateRendererConfig::setSchemaInternal( const QString &schema )
{
m_schemaSet = true;
m_schema = schema;
KConfigGroup config = KateGlobal::self()->schemaManager()->schema(schema);
KateDefaultColors colors;
m_backgroundColor = config.readEntry("Color Background", colors.color(Kate::Background));
m_backgroundColorSet = true;
m_selectionColor = config.readEntry("Color Selection", colors.color(Kate::SelectionBackground));
m_selectionColorSet = true;
m_highlightedLineColor = config.readEntry("Color Highlighted Line", colors.color(Kate::HighlightedLineBackground));
m_highlightedLineColorSet = true;
m_highlightedBracketColor = config.readEntry("Color Highlighted Bracket", colors.color(Kate::HighlightedBracket));
m_highlightedBracketColorSet = true;
m_wordWrapMarkerColor = config.readEntry("Color Word Wrap Marker", colors.color(Kate::WordWrapMarker));
m_wordWrapMarkerColorSet = true;
m_tabMarkerColor = config.readEntry("Color Tab Marker", colors.color(Kate::TabMarker));
m_tabMarkerColorSet = true;
m_indentationLineColor = config.readEntry("Color Indentation Line", colors.color(Kate::IndentationLine));
m_indentationLineColorSet = true;
m_iconBarColor = config.readEntry("Color Icon Bar", colors.color(Kate::IconBar));
m_iconBarColorSet = true;
m_foldingColor = config.readEntry("Color Code Folding", colors.color(Kate::CodeFolding));
m_foldingColorSet = true;
m_lineNumberColor = config.readEntry("Color Line Number", colors.color(Kate::LineNumber));
m_lineNumberColorSet = true;
m_separatorColor = config.readEntry("Color Separator", colors.color(Kate::Separator));
m_separatorColorSet = true;
m_spellingMistakeLineColor = config.readEntry("Color Spelling Mistake Line", colors.color(Kate::SpellingMistakeLine));
m_spellingMistakeLineColorSet = true;
m_modifiedLineColor = config.readEntry("Color Modified Lines", colors.color(Kate::ModifiedLine));
m_modifiedLineColorSet = true;
m_savedLineColor = config.readEntry("Color Saved Lines", colors.color(Kate::SavedLine));
m_savedLineColorSet = true;
m_searchHighlightColor = config.readEntry("Color Search Highlight", colors.color(Kate::SearchHighlight));
m_searchHighlightColorSet = true;
m_replaceHighlightColor = config.readEntry("Color Replace Highlight", colors.color(Kate::ReplaceHighlight));
m_replaceHighlightColorSet = true;
for (int i = Kate::FIRST_MARK; i <= Kate::LAST_MARK; i++) {
QColor col = config.readEntry(QString("Color MarkType %1").arg(i + 1), colors.mark(i));
m_lineMarkerColorSet[i] = true;
m_lineMarkerColor[i] = col;
}
QFont f (KGlobalSettings::fixedFont());
m_font = config.readEntry("Font", f);
m_fontMetrics = QFontMetricsF (m_font);
m_fontSet = true;
}
const QFont& KateRendererConfig::font() const
{
if (m_fontSet || isGlobal())
return m_font;
return s_global->font();
}
const QFontMetricsF& KateRendererConfig::fontMetrics() const
{
if (m_fontSet || isGlobal())
return m_fontMetrics;
return s_global->fontMetrics();
}
void KateRendererConfig::setFont(const QFont &font)
{
if (m_fontSet && m_font == font)
return;
configStart ();
m_fontSet = true;
m_font = font;
m_fontMetrics = QFontMetricsF (m_font);
configEnd ();
}
bool KateRendererConfig::wordWrapMarker () const
{
if (m_wordWrapMarkerSet || isGlobal())
return m_wordWrapMarker;
return s_global->wordWrapMarker();
}
void KateRendererConfig::setWordWrapMarker (bool on)
{
if (m_wordWrapMarkerSet && m_wordWrapMarker == on)
return;
configStart ();
m_wordWrapMarkerSet = true;
m_wordWrapMarker = on;
configEnd ();
}
const QColor& KateRendererConfig::backgroundColor() const
{
if (m_backgroundColorSet || isGlobal())
return m_backgroundColor;
return s_global->backgroundColor();
}
void KateRendererConfig::setBackgroundColor (const QColor &col)
{
if (m_backgroundColorSet && m_backgroundColor == col)
return;
configStart ();
m_backgroundColorSet = true;
m_backgroundColor = col;
configEnd ();
}
const QColor& KateRendererConfig::selectionColor() const
{
if (m_selectionColorSet || isGlobal())
return m_selectionColor;
return s_global->selectionColor();
}
void KateRendererConfig::setSelectionColor (const QColor &col)
{
if (m_selectionColorSet && m_selectionColor == col)
return;
configStart ();
m_selectionColorSet = true;
m_selectionColor = col;
configEnd ();
}
const QColor& KateRendererConfig::highlightedLineColor() const
{
if (m_highlightedLineColorSet || isGlobal())
return m_highlightedLineColor;
return s_global->highlightedLineColor();
}
void KateRendererConfig::setHighlightedLineColor (const QColor &col)
{
if (m_highlightedLineColorSet && m_highlightedLineColor == col)
return;
configStart ();
m_highlightedLineColorSet = true;
m_highlightedLineColor = col;
configEnd ();
}
const QColor& KateRendererConfig::lineMarkerColor(KTextEditor::MarkInterface::MarkTypes type) const
{
int index = 0;
if (type > 0) { while((type >> index++) ^ 1) {} }
index -= 1;
if ( index < 0 || index >= KTextEditor::MarkInterface::reservedMarkersCount() )
{
static QColor dummy;
return dummy;
}
if (m_lineMarkerColorSet[index] || isGlobal())
return m_lineMarkerColor[index];
return s_global->lineMarkerColor( type );
}
void KateRendererConfig::setLineMarkerColor (const QColor &col, KTextEditor::MarkInterface::MarkTypes type)
{
int index = static_cast<int>( log(static_cast<double>(type)) / log(2.0) );
Q_ASSERT( index >= 0 && index < KTextEditor::MarkInterface::reservedMarkersCount() );
if (m_lineMarkerColorSet[index] && m_lineMarkerColor[index] == col)
return;
configStart ();
m_lineMarkerColorSet[index] = true;
m_lineMarkerColor[index] = col;
configEnd ();
}
const QColor& KateRendererConfig::highlightedBracketColor() const
{
if (m_highlightedBracketColorSet || isGlobal())
return m_highlightedBracketColor;
return s_global->highlightedBracketColor();
}
void KateRendererConfig::setHighlightedBracketColor (const QColor &col)
{
if (m_highlightedBracketColorSet && m_highlightedBracketColor == col)
return;
configStart ();
m_highlightedBracketColorSet = true;
m_highlightedBracketColor = col;
configEnd ();
}
const QColor& KateRendererConfig::wordWrapMarkerColor() const
{
if (m_wordWrapMarkerColorSet || isGlobal())
return m_wordWrapMarkerColor;
return s_global->wordWrapMarkerColor();
}
void KateRendererConfig::setWordWrapMarkerColor (const QColor &col)
{
if (m_wordWrapMarkerColorSet && m_wordWrapMarkerColor == col)
return;
configStart ();
m_wordWrapMarkerColorSet = true;
m_wordWrapMarkerColor = col;
configEnd ();
}
const QColor& KateRendererConfig::tabMarkerColor() const
{
if (m_tabMarkerColorSet || isGlobal())
return m_tabMarkerColor;
return s_global->tabMarkerColor();
}
void KateRendererConfig::setTabMarkerColor (const QColor &col)
{
if (m_tabMarkerColorSet && m_tabMarkerColor == col)
return;
configStart ();
m_tabMarkerColorSet = true;
m_tabMarkerColor = col;
configEnd ();
}
const QColor& KateRendererConfig::indentationLineColor() const
{
if (m_indentationLineColorSet || isGlobal())
return m_indentationLineColor;
return s_global->indentationLineColor();
}
void KateRendererConfig::setIndentationLineColor (const QColor &col)
{
if (m_indentationLineColorSet && m_indentationLineColor == col)
return;
configStart ();
m_indentationLineColorSet = true;
m_indentationLineColor = col;
configEnd ();
}
const QColor& KateRendererConfig::iconBarColor() const
{
if (m_iconBarColorSet || isGlobal())
return m_iconBarColor;
return s_global->iconBarColor();
}
void KateRendererConfig::setIconBarColor (const QColor &col)
{
if (m_iconBarColorSet && m_iconBarColor == col)
return;
configStart ();
m_iconBarColorSet = true;
m_iconBarColor = col;
configEnd ();
}
const QColor& KateRendererConfig::foldingColor() const
{
if (m_foldingColorSet || isGlobal())
return m_foldingColor;
return s_global->foldingColor();
}
void KateRendererConfig::setFoldingColor (const QColor &col)
{
if (m_foldingColorSet && m_foldingColor == col)
return;
configStart ();
m_foldingColorSet = true;
m_foldingColor = col;
configEnd ();
}
const QColor& KateRendererConfig::lineNumberColor() const
{
if (m_lineNumberColorSet || isGlobal())
return m_lineNumberColor;
return s_global->lineNumberColor();
}
void KateRendererConfig::setLineNumberColor (const QColor &col)
{
if (m_lineNumberColorSet && m_lineNumberColor == col)
return;
configStart ();
m_lineNumberColorSet = true;
m_lineNumberColor = col;
configEnd ();
}
const QColor& KateRendererConfig::separatorColor() const
{
if (m_separatorColorSet || isGlobal())
return m_separatorColor;
return s_global->separatorColor();
}
void KateRendererConfig::setSeparatorColor(const QColor& col)
{
if (m_separatorColorSet && m_separatorColor == col)
return;
configStart ();
m_separatorColorSet = true;
m_separatorColor = col;
configEnd ();
}
const QColor& KateRendererConfig::spellingMistakeLineColor() const
{
if (m_spellingMistakeLineColorSet || isGlobal())
return m_spellingMistakeLineColor;
return s_global->spellingMistakeLineColor();
}
void KateRendererConfig::setSpellingMistakeLineColor (const QColor &col)
{
if (m_spellingMistakeLineColorSet && m_spellingMistakeLineColor == col)
return;
configStart ();
m_spellingMistakeLineColorSet = true;
m_spellingMistakeLineColor = col;
configEnd ();
}
const QColor& KateRendererConfig::modifiedLineColor() const
{
if (m_modifiedLineColorSet || isGlobal())
return m_modifiedLineColor;
return s_global->modifiedLineColor();
}
void KateRendererConfig::setModifiedLineColor(const QColor &col)
{
if (m_modifiedLineColorSet && m_modifiedLineColor == col)
return;
configStart ();
m_modifiedLineColorSet = true;
m_modifiedLineColor = col;
configEnd ();
}
const QColor& KateRendererConfig::savedLineColor() const
{
if (m_savedLineColorSet || isGlobal())
return m_savedLineColor;
return s_global->savedLineColor();
}
void KateRendererConfig::setSavedLineColor(const QColor &col)
{
if (m_savedLineColorSet && m_savedLineColor == col)
return;
configStart ();
m_savedLineColorSet = true;
m_savedLineColor = col;
configEnd ();
}
const QColor& KateRendererConfig::searchHighlightColor() const
{
if (m_searchHighlightColorSet || isGlobal())
return m_searchHighlightColor;
return s_global->searchHighlightColor();
}
void KateRendererConfig::setSearchHighlightColor(const QColor &col)
{
if (m_searchHighlightColorSet && m_searchHighlightColor == col)
return;
configStart ();
m_searchHighlightColorSet = true;
m_searchHighlightColor = col;
configEnd ();
}
const QColor& KateRendererConfig::replaceHighlightColor() const
{
if (m_replaceHighlightColorSet || isGlobal())
return m_replaceHighlightColor;
return s_global->replaceHighlightColor();
}
void KateRendererConfig::setReplaceHighlightColor(const QColor &col)
{
if (m_replaceHighlightColorSet && m_replaceHighlightColor == col)
return;
configStart ();
m_replaceHighlightColorSet = true;
m_replaceHighlightColor = col;
configEnd ();
}
bool KateRendererConfig::showIndentationLines () const
{
if (m_showIndentationLinesSet || isGlobal())
return m_showIndentationLines;
return s_global->showIndentationLines();
}
void KateRendererConfig::setShowIndentationLines (bool on)
{
if (m_showIndentationLinesSet && m_showIndentationLines == on)
return;
configStart ();
m_showIndentationLinesSet = true;
m_showIndentationLines = on;
configEnd ();
}
bool KateRendererConfig::showWholeBracketExpression () const
{
if (m_showWholeBracketExpressionSet || isGlobal())
return m_showWholeBracketExpression;
return s_global->showWholeBracketExpression();
}
void KateRendererConfig::setShowWholeBracketExpression (bool on)
{
if (m_showWholeBracketExpressionSet && m_showWholeBracketExpression == on)
return;
configStart ();
m_showWholeBracketExpressionSet = true;
m_showWholeBracketExpression = on;
configEnd ();
}
bool KateRendererConfig::animateBracketMatching () const
{
return s_global->m_animateBracketMatching;
}
void KateRendererConfig::setAnimateBracketMatching (bool on)
{
if (!isGlobal()) {
s_global->setAnimateBracketMatching (on);
} else if (on != m_animateBracketMatching) {
configStart ();
m_animateBracketMatching = on;
configEnd ();
}
}
//END
// kate: space-indent on; indent-width 2; replace-tabs on;