KTextEditor

kateconfig.h
1 /*
2  SPDX-FileCopyrightText: 2003 Christoph Cullmann <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #ifndef KATE_CONFIG_H
8 #define KATE_CONFIG_H
9 
10 #include <ktexteditor_export.h>
11 
12 #include "ktexteditor/view.h"
13 #include <KEncodingProber>
14 #include <ktexteditor/markinterface.h>
15 
16 #include <functional>
17 #include <map>
18 #include <memory>
19 
20 #include <QBitRef>
21 #include <QColor>
22 #include <QObject>
23 #include <QVector>
24 
25 class KConfigGroup;
26 namespace KTextEditor
27 {
28 class ViewPrivate;
29 }
30 namespace KTextEditor
31 {
32 class DocumentPrivate;
33 }
34 class KateRenderer;
35 
36 namespace KTextEditor
37 {
38 class EditorPrivate;
39 }
40 
41 class KConfig;
42 
43 class QTextCodec;
44 
49 class KTEXTEDITOR_EXPORT KateConfig
50 {
51 public:
57  void configStart();
58 
63  void configEnd();
64 
69  bool isGlobal() const
70  {
71  return !m_parent;
72  }
73 
80  {
81  return m_parent ? m_parent->configKeys() : *m_configKeys.get();
82  }
83 
89  QVariant value(const int key) const;
90 
99  bool setValue(const int key, const QVariant &value);
100 
106  QVariant value(const QString &key) const;
107 
115  bool setValue(const QString &key, const QVariant &value);
116 
117 protected:
122  KateConfig(const KateConfig *parent = nullptr);
123 
127  virtual ~KateConfig();
128 
133  {
134  public:
143  ConfigEntry(int enumId, const char *configId, QString command, QVariant defaultVal, std::function<bool(const QVariant &)> valid = nullptr)
144  : enumKey(enumId)
145  , configKey(configId)
146  , commandName(command)
147  , defaultValue(defaultVal)
148  , value(defaultVal)
149  , validator(valid)
150  {
151  }
152 
156  const int enumKey;
157 
162  const char *const configKey;
163 
169 
174 
179 
185  std::function<bool(const QVariant &)> validator;
186  };
187 
192  void readConfigEntries(const KConfigGroup &config);
193 
198  void writeConfigEntries(KConfigGroup &config) const;
199 
205  void addConfigEntry(ConfigEntry &&entry);
206 
211  void finalizeConfigEntries();
212 
216  virtual void updateConfig() = 0;
217 
218 private:
223  const std::map<int, ConfigEntry> &fullConfigEntries() const
224  {
225  return m_parent ? m_parent->fullConfigEntries() : m_configEntries;
226  }
231  const QHash<QString, const ConfigEntry *> &fullConfigKeyToEntry() const
232  {
233  return m_parent ? m_parent->fullConfigKeyToEntry() : *m_configKeyToEntry.get();
234  }
235 
236 private:
240  const KateConfig *const m_parent = nullptr;
241 
245  uint configSessionNumber = 0;
246 
250  bool configIsRunning = false;
251 
259  std::map<int, ConfigEntry> m_configEntries;
260 
264  std::unique_ptr<QStringList> m_configKeys;
265 
269  std::unique_ptr<QHash<QString, const ConfigEntry *>> m_configKeyToEntry;
270 };
271 
272 class KTEXTEDITOR_EXPORT KateGlobalConfig : public KateConfig
273 {
274 private:
275  friend class KTextEditor::EditorPrivate;
276 
280  KateGlobalConfig();
281 
282 public:
283  static KateGlobalConfig *global()
284  {
285  return s_global;
286  }
287 
291  enum ConfigEntryTypes {
295  EncodingProberType,
296 
300  FallbackEncoding
301  };
302 
303 public:
307  void readConfig(const KConfigGroup &config);
308 
312  void writeConfig(KConfigGroup &config);
313 
314 protected:
315  void updateConfig() override;
316 
317 public:
318  KEncodingProber::ProberType proberType() const
319  {
320  return KEncodingProber::ProberType(value(EncodingProberType).toInt());
321  }
322 
323  bool setProberType(KEncodingProber::ProberType type)
324  {
325  return setValue(EncodingProberType, type);
326  }
327 
333  QTextCodec *fallbackCodec() const;
334 
335  QString fallbackEncoding() const
336  {
337  return value(FallbackEncoding).toString();
338  }
339 
340  bool setFallbackEncoding(const QString &encoding)
341  {
342  return setValue(FallbackEncoding, encoding);
343  }
344 
345 private:
346  static KateGlobalConfig *s_global;
347 };
348 
349 class KTEXTEDITOR_EXPORT KateDocumentConfig : public KateConfig
350 {
351 private:
352  friend class KTextEditor::EditorPrivate;
353 
354  KateDocumentConfig();
355 
356 public:
360  explicit KateDocumentConfig(KTextEditor::DocumentPrivate *doc);
361 
362  inline static KateDocumentConfig *global()
363  {
364  return s_global;
365  }
366 
370  enum ConfigEntryTypes {
374  TabWidth,
375 
379  IndentationWidth,
380 
384  OnTheFlySpellCheck,
385 
389  IndentOnTextPaste,
390 
394  ReplaceTabsWithSpaces,
395 
399  BackupOnSaveLocal,
400 
404  BackupOnSaveRemote,
405 
409  BackupOnSavePrefix,
410 
414  BackupOnSaveSuffix,
415 
419  IndentationMode,
420 
424  TabHandlingMode,
425 
429  StaticWordWrap,
430 
434  StaticWordWrapColumn,
435 
439  PageUpDownMovesCursor,
440 
444  SmartHome,
445 
449  ShowTabs,
450 
454  IndentOnTab,
455 
459  KeepExtraSpaces,
460 
464  BackspaceIndents,
465 
469  ShowSpacesMode,
470 
474  TrailingMarkerSize,
475 
479  RemoveSpacesMode,
480 
484  NewlineAtEOF,
485 
489  OverwriteMode,
490 
494  Encoding,
495 
499  EndOfLine,
500 
504  AllowEndOfLineDetection,
505 
509  ByteOrderMark,
510 
514  SwapFile,
515 
519  SwapFileDirectory,
520 
524  SwapFileSyncInterval,
525 
529  LineLengthLimit
530  };
531 
532 public:
536  void readConfig(const KConfigGroup &config);
537 
541  void writeConfig(KConfigGroup &config);
542 
543 protected:
544  void updateConfig() override;
545 
546 public:
547  int tabWidth() const
548  {
549  return value(TabWidth).toInt();
550  }
551 
552  void setTabWidth(int tabWidth)
553  {
554  setValue(TabWidth, QVariant(tabWidth));
555  }
556 
557  int indentationWidth() const
558  {
559  return value(IndentationWidth).toInt();
560  }
561 
562  void setIndentationWidth(int indentationWidth)
563  {
564  setValue(IndentationWidth, QVariant(indentationWidth));
565  }
566 
567  bool onTheFlySpellCheck() const
568  {
569  return value(OnTheFlySpellCheck).toBool();
570  }
571 
572  void setOnTheFlySpellCheck(bool on)
573  {
574  setValue(OnTheFlySpellCheck, QVariant(on));
575  }
576 
577  bool indentPastedText() const
578  {
579  return value(IndentOnTextPaste).toBool();
580  }
581 
582  void setIndentPastedText(bool on)
583  {
584  setValue(IndentOnTextPaste, QVariant(on));
585  }
586 
587  bool replaceTabsDyn() const
588  {
589  return value(ReplaceTabsWithSpaces).toBool();
590  }
591 
592  void setReplaceTabsDyn(bool on)
593  {
594  setValue(ReplaceTabsWithSpaces, QVariant(on));
595  }
596 
597  bool backupOnSaveLocal() const
598  {
599  return value(BackupOnSaveLocal).toBool();
600  }
601 
602  void setBackupOnSaveLocal(bool on)
603  {
604  setValue(BackupOnSaveLocal, QVariant(on));
605  }
606 
607  bool backupOnSaveRemote() const
608  {
609  return value(BackupOnSaveRemote).toBool();
610  }
611 
612  void setBackupOnSaveRemote(bool on)
613  {
614  setValue(BackupOnSaveRemote, QVariant(on));
615  }
616 
617  QString backupPrefix() const
618  {
619  return value(BackupOnSavePrefix).toString();
620  }
621 
622  void setBackupPrefix(const QString &prefix)
623  {
624  setValue(BackupOnSavePrefix, QVariant(prefix));
625  }
626 
627  QString backupSuffix() const
628  {
629  return value(BackupOnSaveSuffix).toString();
630  }
631 
632  void setBackupSuffix(const QString &suffix)
633  {
634  setValue(BackupOnSaveSuffix, QVariant(suffix));
635  }
636 
637  QString indentationMode() const
638  {
639  return value(IndentationMode).toString();
640  }
641 
642  void setIndentationMode(const QString &identationMode)
643  {
644  setValue(IndentationMode, identationMode);
645  }
646 
647  enum TabHandling {
648  tabInsertsTab = 0,
649  tabIndents = 1,
650  tabSmart = 2
651  };
652 
653  enum WhitespaceRendering { None, Trailing, All };
654 
655  int tabHandling() const
656  {
657  return value(TabHandlingMode).toInt();
658  }
659 
660  void setTabHandling(int tabHandling)
661  {
662  setValue(TabHandlingMode, tabHandling);
663  }
664 
665  bool wordWrap() const
666  {
667  return value(StaticWordWrap).toBool();
668  }
669 
670  void setWordWrap(bool on)
671  {
672  setValue(StaticWordWrap, on);
673  }
674 
675  int wordWrapAt() const
676  {
677  return value(StaticWordWrapColumn).toInt();
678  }
679 
680  void setWordWrapAt(int col)
681  {
682  setValue(StaticWordWrapColumn, col);
683  }
684 
685  bool pageUpDownMovesCursor() const
686  {
687  return value(PageUpDownMovesCursor).toBool();
688  }
689 
690  void setPageUpDownMovesCursor(bool on)
691  {
692  setValue(PageUpDownMovesCursor, on);
693  }
694 
695  void setKeepExtraSpaces(bool on)
696  {
697  setValue(KeepExtraSpaces, on);
698  }
699 
700  bool keepExtraSpaces() const
701  {
702  return value(KeepExtraSpaces).toBool();
703  }
704 
705  void setBackspaceIndents(bool on)
706  {
707  setValue(BackspaceIndents, on);
708  }
709 
710  bool backspaceIndents() const
711  {
712  return value(BackspaceIndents).toBool();
713  }
714 
715  void setSmartHome(bool on)
716  {
717  setValue(SmartHome, on);
718  }
719 
720  bool smartHome() const
721  {
722  return value(SmartHome).toBool();
723  }
724 
725  void setShowTabs(bool on)
726  {
727  setValue(ShowTabs, on);
728  }
729 
730  bool showTabs() const
731  {
732  return value(ShowTabs).toBool();
733  }
734 
735  void setShowSpaces(WhitespaceRendering mode)
736  {
737  setValue(ShowSpacesMode, mode);
738  }
739 
740  WhitespaceRendering showSpaces() const
741  {
742  return WhitespaceRendering(value(ShowSpacesMode).toInt());
743  }
744 
745  void setMarkerSize(int markerSize)
746  {
747  setValue(TrailingMarkerSize, markerSize);
748  }
749 
750  int markerSize() const
751  {
752  return value(TrailingMarkerSize).toInt();
753  }
754 
761  void setRemoveSpaces(int triState)
762  {
763  setValue(RemoveSpacesMode, triState);
764  }
765 
766  int removeSpaces() const
767  {
768  return value(RemoveSpacesMode).toInt();
769  }
770 
771  void setNewLineAtEof(bool on)
772  {
773  setValue(NewlineAtEOF, on);
774  }
775 
776  bool newLineAtEof() const
777  {
778  return value(NewlineAtEOF).toBool();
779  }
780 
781  void setOvr(bool on)
782  {
783  setValue(OverwriteMode, on);
784  }
785 
786  bool ovr() const
787  {
788  return value(OverwriteMode).toBool();
789  }
790 
791  void setTabIndents(bool on)
792  {
793  setValue(IndentOnTab, on);
794  }
795 
796  bool tabIndentsEnabled() const
797  {
798  return value(IndentOnTab).toBool();
799  }
800 
806  QTextCodec *codec() const;
807 
808  QString encoding() const
809  {
810  return value(Encoding).toString();
811  }
812 
813  bool setEncoding(const QString &encoding)
814  {
815  return setValue(Encoding, encoding);
816  }
817 
818  enum Eol { eolUnix = 0, eolDos = 1, eolMac = 2 };
819 
820  int eol() const
821  {
822  return value(EndOfLine).toInt();
823  }
824 
830  QString eolString();
831 
832  void setEol(int mode)
833  {
834  setValue(EndOfLine, mode);
835  }
836 
837  bool bom() const
838  {
839  return value(ByteOrderMark).toBool();
840  }
841 
842  void setBom(bool bom)
843  {
844  setValue(ByteOrderMark, bom);
845  }
846 
847  bool allowEolDetection() const
848  {
849  return value(AllowEndOfLineDetection).toBool();
850  }
851 
852  void setAllowEolDetection(bool on)
853  {
854  setValue(AllowEndOfLineDetection, on);
855  }
856 
857  QString swapDirectory() const
858  {
859  return value(SwapFileDirectory).toString();
860  }
861 
862  void setSwapDirectory(const QString &directory)
863  {
864  setValue(SwapFileDirectory, directory);
865  }
866 
867  enum SwapFileMode { DisableSwapFile = 0, EnableSwapFile, SwapFilePresetDirectory };
868 
869  SwapFileMode swapFileMode() const
870  {
871  return SwapFileMode(value(SwapFile).toInt());
872  }
873 
874  void setSwapFileMode(int mode)
875  {
876  setValue(SwapFile, mode);
877  }
878 
879  int swapSyncInterval() const
880  {
881  return value(SwapFileSyncInterval).toInt();
882  }
883 
884  void setSwapSyncInterval(int interval)
885  {
886  setValue(SwapFileSyncInterval, interval);
887  }
888 
889  int lineLengthLimit() const
890  {
891  return value(LineLengthLimit).toInt();
892  }
893 
894  void setLineLengthLimit(int limit)
895  {
896  setValue(LineLengthLimit, limit);
897  }
898 
899 private:
900  static KateDocumentConfig *s_global;
901  KTextEditor::DocumentPrivate *m_doc = nullptr;
902 };
903 
904 class KTEXTEDITOR_EXPORT KateViewConfig : public KateConfig
905 {
906 private:
907  friend class KTextEditor::EditorPrivate;
908 
912  KateViewConfig();
913 
914 public:
918  explicit KateViewConfig(KTextEditor::ViewPrivate *view);
919 
923  ~KateViewConfig() override;
924 
925  inline static KateViewConfig *global()
926  {
927  return s_global;
928  }
929 
934  enum ConfigEntryTypes {
935  AllowMarkMenu,
936  AutoBrackets,
937  AutoCenterLines,
938  AutomaticCompletionInvocation,
939  BackspaceRemoveComposedCharacters,
940  BookmarkSorting,
941  CharsToEncloseSelection,
942  DefaultMarkType,
943  DynWordWrapAlignIndent,
944  DynWordWrapIndicators,
945  DynWrapAnywhere,
946  DynWrapAtStaticMarker,
947  DynamicWordWrap,
948  FoldFirstLine,
949  InputMode,
950  KeywordCompletion,
951  MaxHistorySize,
952  MousePasteAtCursorPosition,
953  PersistentSelection,
954  ScrollBarMiniMapWidth,
955  ScrollPastEnd,
956  SearchFlags,
957  ShowBracketMatchPreview,
958  ShowFoldingBar,
959  ShowFoldingPreview,
960  ShowIconBar,
961  ShowLineCount,
962  ShowLineModification,
963  ShowLineNumbers,
964  ShowScrollBarMarks,
965  ShowScrollBarMiniMap,
966  ShowScrollBarMiniMapAll,
967  ShowScrollBarPreview,
968  ShowScrollbars,
969  ShowWordCount,
970  TextDragAndDrop,
971  SmartCopyCut,
972  UserSetsOfCharsToEncloseSelection,
973  ViInputModeStealKeys,
974  ViRelativeLineNumbers,
975  WordCompletion,
976  WordCompletionMinimalWordLength,
977  WordCompletionRemoveTail,
978  };
979 
980 public:
984  void readConfig(const KConfigGroup &config);
985 
989  void writeConfig(KConfigGroup &config);
990 
991 protected:
992  void updateConfig() override;
993 
994 public:
995  bool dynWordWrap() const
996  {
997  return value(DynamicWordWrap).toBool();
998  }
999  void setDynWordWrap(bool on)
1000  {
1001  setValue(DynamicWordWrap, on);
1002  }
1003  bool dynWrapAnywhere() const
1004  {
1005  return value(DynWrapAnywhere).toBool();
1006  }
1007 
1008  bool dynWrapAtStaticMarker() const
1009  {
1010  return value(DynWrapAtStaticMarker).toBool();
1011  }
1012 
1013  int dynWordWrapIndicators() const
1014  {
1015  return value(DynWordWrapIndicators).toInt();
1016  }
1017 
1018  int dynWordWrapAlignIndent() const
1019  {
1020  return value(DynWordWrapAlignIndent).toInt();
1021  }
1022 
1023  bool lineNumbers() const
1024  {
1025  return value(ShowLineNumbers).toBool();
1026  }
1027 
1028  bool scrollBarMarks() const
1029  {
1030  return value(ShowScrollBarMarks).toBool();
1031  }
1032 
1033  bool scrollBarPreview() const
1034  {
1035  return value(ShowScrollBarPreview).toBool();
1036  }
1037 
1038  bool scrollBarMiniMap() const
1039  {
1040  return value(ShowScrollBarMiniMap).toBool();
1041  }
1042 
1043  bool scrollBarMiniMapAll() const
1044  {
1045  return value(ShowScrollBarMiniMapAll).toBool();
1046  }
1047 
1048  int scrollBarMiniMapWidth() const
1049  {
1050  return value(ScrollBarMiniMapWidth).toInt();
1051  }
1052 
1053  /* Whether to show scrollbars */
1054  enum ScrollbarMode { AlwaysOn = 0, ShowWhenNeeded, AlwaysOff };
1055 
1056  int showScrollbars() const
1057  {
1058  return value(ShowScrollbars).toInt();
1059  }
1060 
1061  bool iconBar() const
1062  {
1063  return value(ShowIconBar).toBool();
1064  }
1065 
1066  bool foldingBar() const
1067  {
1068  return value(ShowFoldingBar).toBool();
1069  }
1070 
1071  bool foldingPreview() const
1072  {
1073  return value(ShowFoldingPreview).toBool();
1074  }
1075 
1076  bool lineModification() const
1077  {
1078  return value(ShowLineModification).toBool();
1079  }
1080 
1081  int bookmarkSort() const
1082  {
1083  return value(BookmarkSorting).toInt();
1084  }
1085 
1086  int autoCenterLines() const
1087  {
1088  return value(AutoCenterLines).toInt();
1089  }
1090 
1091  enum SearchFlags {
1092  IncMatchCase = 1 << 0,
1093  IncHighlightAll = 1 << 1,
1094  IncFromCursor = 1 << 2,
1095  PowerMatchCase = 1 << 3,
1096  PowerHighlightAll = 1 << 4,
1097  PowerFromCursor = 1 << 5,
1098  // PowerSelectionOnly = 1 << 6, Better not save to file // Sebastian
1099  PowerModePlainText = 1 << 7,
1100  PowerModeWholeWords = 1 << 8,
1101  PowerModeEscapeSequences = 1 << 9,
1102  PowerModeRegularExpression = 1 << 10,
1103  PowerUsePlaceholders = 1 << 11
1104  };
1105 
1106  uint searchFlags() const
1107  {
1108  return value(SearchFlags).toUInt();
1109  }
1110  void setSearchFlags(uint flags)
1111  {
1112  setValue(SearchFlags, flags);
1113  }
1114 
1115  int maxHistorySize() const
1116  {
1117  return value(MaxHistorySize).toInt();
1118  }
1119 
1120  uint defaultMarkType() const
1121  {
1122  return value(DefaultMarkType).toUInt();
1123  }
1124 
1125  bool allowMarkMenu() const
1126  {
1127  return value(AllowMarkMenu).toBool();
1128  }
1129 
1130  bool persistentSelection() const
1131  {
1132  return value(PersistentSelection).toBool();
1133  }
1134 
1135  KTextEditor::View::InputMode inputMode() const
1136  {
1137  return static_cast<KTextEditor::View::InputMode>(value(InputMode).toUInt());
1138  }
1139 
1140  bool viInputModeStealKeys() const
1141  {
1142  return value(ViInputModeStealKeys).toBool();
1143  }
1144 
1145  bool viRelativeLineNumbers() const
1146  {
1147  return value(ViRelativeLineNumbers).toBool();
1148  }
1149 
1150  // Do we still need the enum and related functions below?
1151  enum TextToSearch { Nowhere = 0, SelectionOnly = 1, SelectionWord = 2, WordOnly = 3, WordSelection = 4 };
1152 
1153  bool automaticCompletionInvocation() const
1154  {
1155  return value(AutomaticCompletionInvocation).toBool();
1156  }
1157 
1158  bool wordCompletion() const
1159  {
1160  return value(WordCompletion).toBool();
1161  }
1162 
1163  bool keywordCompletion() const
1164  {
1165  return value(KeywordCompletion).toBool();
1166  }
1167 
1168  int wordCompletionMinimalWordLength() const
1169  {
1170  return value(WordCompletionMinimalWordLength).toInt();
1171  }
1172 
1173  bool wordCompletionRemoveTail() const
1174  {
1175  return value(WordCompletionRemoveTail).toBool();
1176  }
1177 
1178  bool textDragAndDrop() const
1179  {
1180  return value(TextDragAndDrop).toBool();
1181  }
1182 
1183  bool smartCopyCut() const
1184  {
1185  return value(SmartCopyCut).toBool();
1186  }
1187 
1188  bool mousePasteAtCursorPosition() const
1189  {
1190  return value(MousePasteAtCursorPosition).toBool();
1191  }
1192 
1193  bool scrollPastEnd() const
1194  {
1195  return value(ScrollPastEnd).toBool();
1196  }
1197 
1198  bool foldFirstLine() const
1199  {
1200  return value(FoldFirstLine).toBool();
1201  }
1202 
1203  bool showWordCount() const
1204  {
1205  return value(ShowWordCount).toBool();
1206  }
1207  void setShowWordCount(bool on)
1208  {
1209  setValue(ShowWordCount, on);
1210  }
1211 
1212  bool showLineCount() const
1213  {
1214  return value(ShowLineCount).toBool();
1215  }
1216 
1217  void setShowLineCount(bool on)
1218  {
1219  setValue(ShowLineCount, on);
1220  }
1221 
1222  bool autoBrackets() const
1223  {
1224  return value(AutoBrackets).toBool();
1225  }
1226 
1227  bool encloseSelectionInChars() const
1228  {
1229  return !value(CharsToEncloseSelection).toString().isEmpty();
1230  }
1231 
1232  QString charsToEncloseSelection() const
1233  {
1234  return value(CharsToEncloseSelection).toString();
1235  }
1236 
1237  bool backspaceRemoveComposed() const
1238  {
1239  return value(BackspaceRemoveComposedCharacters).toBool();
1240  }
1241 
1242 private:
1243  static KateViewConfig *s_global;
1244  KTextEditor::ViewPrivate *m_view = nullptr;
1245 };
1246 
1247 class KTEXTEDITOR_EXPORT KateRendererConfig : public KateConfig
1248 {
1249 private:
1250  friend class KTextEditor::EditorPrivate;
1251 
1255  KateRendererConfig();
1256 
1257 public:
1261  explicit KateRendererConfig(KateRenderer *renderer);
1262 
1266  ~KateRendererConfig() override;
1267 
1268  inline static KateRendererConfig *global()
1269  {
1270  return s_global;
1271  }
1272 
1273 public:
1277  void readConfig(const KConfigGroup &config);
1278 
1282  void writeConfig(KConfigGroup &config);
1283 
1284 protected:
1285  void updateConfig() override;
1286 
1287 public:
1288  const QString &schema() const;
1289  void setSchema(const QString &schema);
1290 
1296  void reloadSchema();
1297 
1303  const QFont &baseFont() const;
1304 
1305  void setFont(const QFont &font);
1306 
1307  bool wordWrapMarker() const;
1308  void setWordWrapMarker(bool on);
1309 
1310  const QColor &backgroundColor() const;
1311  void setBackgroundColor(const QColor &col);
1312 
1313  const QColor &selectionColor() const;
1314  void setSelectionColor(const QColor &col);
1315 
1316  const QColor &highlightedLineColor() const;
1317  void setHighlightedLineColor(const QColor &col);
1318 
1319  const QColor &lineMarkerColor(KTextEditor::MarkInterface::MarkTypes type = KTextEditor::MarkInterface::markType01) const; // markType01 == Bookmark
1320  void setLineMarkerColor(const QColor &col, KTextEditor::MarkInterface::MarkTypes type = KTextEditor::MarkInterface::markType01);
1321 
1322  const QColor &highlightedBracketColor() const;
1323  void setHighlightedBracketColor(const QColor &col);
1324 
1325  const QColor &wordWrapMarkerColor() const;
1326  void setWordWrapMarkerColor(const QColor &col);
1327 
1328  const QColor &tabMarkerColor() const;
1329  void setTabMarkerColor(const QColor &col);
1330 
1331  const QColor &indentationLineColor() const;
1332  void setIndentationLineColor(const QColor &col);
1333 
1334  const QColor &iconBarColor() const;
1335  void setIconBarColor(const QColor &col);
1336 
1337  const QColor &foldingColor() const;
1338  void setFoldingColor(const QColor &col);
1339 
1340  // the line number color is used for the line numbers on the left bar
1341  const QColor &lineNumberColor() const;
1342  void setLineNumberColor(const QColor &col);
1343  const QColor &currentLineNumberColor() const;
1344  void setCurrentLineNumberColor(const QColor &col);
1345 
1346  // the color of the separator between line numbers and icon bar
1347  const QColor &separatorColor() const;
1348  void setSeparatorColor(const QColor &col);
1349 
1350  const QColor &spellingMistakeLineColor() const;
1351  void setSpellingMistakeLineColor(const QColor &col);
1352 
1353  bool showIndentationLines() const;
1354  void setShowIndentationLines(bool on);
1355 
1356  bool showWholeBracketExpression() const;
1357  void setShowWholeBracketExpression(bool on);
1358 
1359  bool animateBracketMatching() const;
1360  void setAnimateBracketMatching(bool on);
1361 
1362  const QColor &templateBackgroundColor() const;
1363  const QColor &templateEditablePlaceholderColor() const;
1364  const QColor &templateFocusedEditablePlaceholderColor() const;
1365  const QColor &templateNotEditablePlaceholderColor() const;
1366 
1367  const QColor &modifiedLineColor() const;
1368  void setModifiedLineColor(const QColor &col);
1369 
1370  const QColor &savedLineColor() const;
1371  void setSavedLineColor(const QColor &col);
1372 
1373  const QColor &searchHighlightColor() const;
1374  void setSearchHighlightColor(const QColor &col);
1375 
1376  const QColor &replaceHighlightColor() const;
1377  void setReplaceHighlightColor(const QColor &col);
1378 
1379 private:
1383  void setSchemaInternal(const QString &schema);
1384 
1389  void setFontWithDroppedStyleName(const QFont &font);
1390 
1391  QString m_schema;
1392  QFont m_font;
1393  QColor m_backgroundColor;
1394  QColor m_selectionColor;
1395  QColor m_highlightedLineColor;
1396  QColor m_highlightedBracketColor;
1397  QColor m_wordWrapMarkerColor;
1398  QColor m_tabMarkerColor;
1399  QColor m_indentationLineColor;
1400  QColor m_iconBarColor;
1401  QColor m_foldingColor;
1402  QColor m_lineNumberColor;
1403  QColor m_currentLineNumberColor;
1404  QColor m_separatorColor;
1405  QColor m_spellingMistakeLineColor;
1406  QVector<QColor> m_lineMarkerColor;
1407 
1408  QColor m_templateBackgroundColor;
1409  QColor m_templateEditablePlaceholderColor;
1410  QColor m_templateFocusedEditablePlaceholderColor;
1411  QColor m_templateNotEditablePlaceholderColor;
1412 
1413  QColor m_modifiedLineColor;
1414  QColor m_savedLineColor;
1415  QColor m_searchHighlightColor;
1416  QColor m_replaceHighlightColor;
1417 
1418  bool m_wordWrapMarker = false;
1419  bool m_showIndentationLines = false;
1420  bool m_showWholeBracketExpression = false;
1421  bool m_animateBracketMatching = false;
1422 
1423  bool m_schemaSet : 1;
1424  bool m_fontSet : 1;
1425  bool m_wordWrapMarkerSet : 1;
1426  bool m_showIndentationLinesSet : 1;
1427  bool m_showWholeBracketExpressionSet : 1;
1428  bool m_backgroundColorSet : 1;
1429  bool m_selectionColorSet : 1;
1430  bool m_highlightedLineColorSet : 1;
1431  bool m_highlightedBracketColorSet : 1;
1432  bool m_wordWrapMarkerColorSet : 1;
1433  bool m_tabMarkerColorSet : 1;
1434  bool m_indentationLineColorSet : 1;
1435  bool m_iconBarColorSet : 1;
1436  bool m_foldingColorSet : 1;
1437  bool m_lineNumberColorSet : 1;
1438  bool m_currentLineNumberColorSet : 1;
1439  bool m_separatorColorSet : 1;
1440  bool m_spellingMistakeLineColorSet : 1;
1441  bool m_templateColorsSet : 1;
1442  bool m_modifiedLineColorSet : 1;
1443  bool m_savedLineColorSet : 1;
1444  bool m_searchHighlightColorSet : 1;
1445  bool m_replaceHighlightColorSet : 1;
1446  QBitArray m_lineMarkerColorSet;
1447 
1448 private:
1449  static KateRendererConfig *s_global;
1450  KateRenderer *m_renderer = nullptr;
1451 };
1452 
1453 #endif
QVariant value
The concrete value, per default == defaultValue.
Definition: kateconfig.h:178
Base Class for the Kate Config Classes Current childs are KateDocumentConfig/KateDocumentConfig/KateD...
Definition: kateconfig.h:49
std::function< bool(const QVariant &)> validator
An optional validator function, only when these returns true we accept a given new value...
Definition: kateconfig.h:185
const int enumKey
Enum key for this config entry, shall be unique.
Definition: kateconfig.h:156
QString mode() const override
Return the name of the currently used mode.
QStringList configKeys() const
All known config keys.
Definition: kateconfig.h:79
One config entry.
Definition: kateconfig.h:132
Handles all of the work of rendering the text (used for the views and printing)
Definition: katerenderer.h:45
uint toUInt(bool *ok) const const
int toInt(bool *ok) const const
bool isGlobal() const
Is this a global config object?
Definition: kateconfig.h:69
const QString commandName
Command name as used in e.g.
Definition: kateconfig.h:168
bool isEmpty() const const
The KTextEditor namespace contains all the public API that is required to use the KTextEditor compone...
KateDocumentConfig * config()
Configuration.
const QVariant defaultValue
Default value if nothing special was configured.
Definition: kateconfig.h:173
MarkTypes
Predefined mark types.
ConfigEntry(int enumId, const char *configId, QString command, QVariant defaultVal, std::function< bool(const QVariant &)> valid=nullptr)
Construct one config entry.
Definition: kateconfig.h:143
InputMode
Possible input modes.
Definition: view.h:186
int lineLengthLimit() const
reads the line length limit from config, if it is not overridden
const char *const configKey
KConfig entry key for this config entry, shall be unique in its group e.g.
Definition: kateconfig.h:162
bool toBool() const const
KTextEditor::EditorPrivate One instance of this class is hold alive during a kate part session...
Definition: kateglobal.h:66
QString toString() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Tue Aug 11 2020 22:59:58 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.