# Kate Part (KF5): New Default Styles for better Color Schemes

Kate Part gained 17 new default styles in addition to the existing 14 default styles. These changes are available for Kate based on the KDE frameworks 5 initiative and currently live in ktexteditor.git module.

Default Styles are predefined font and color styles that are used by Kate Part’s syntax highlighting. For instance, Kate Part always had a default style for comments. Therewith, the comments in all syntax highlighting files look the same (by default, a gray color). Or keywords are by default always bold and black.

However, during the last years it became apparent that the list of 14 default styles were not always enough. Consequently, lots of syntax highlighting files defined their own hard-coded colors. For instance, doxygen comments were hard-coded in a dark blue color. The problem with hard-coded colors is that they do not adapt when changing the default styles. Hence, doxygen comments were barely readable on a dark color scheme.

Therefore, a discussion took place on kwrite-devel (thread 1, thread 2, thread 3) that ended in 17 new default styles and a categorization of these as follows (the new default styles are bold):

Category “Normal Text and Source Code

• dsNormal: default for normal text and source code.
• dsKeyword: Used for language keywords.
• dsFunction: Used for function definitions and function calls.
• dsVariable: Used for variables, if applicable. Example: \$foo in PHP.
• dsControlFlow: Used for control flow highlighting, e.g., if, then, else, return, continue.
• dsOperator: Used for operators such as +, -, *, / and :: etc.
• dsBuiltIn: Used for built-in language classes and functions, if applicable.
• dsExtension: Used for extensions, such as Qt or boost.
• dsPreprocessor: Used for preprocessor statements.
• dsAttribute: Used for attributes of functions or objects, e.g. @override in Java, or __declspec(…) and __attribute__((…))in C/C++.

Category “Strings & Characters

• dsChar: Used for a single character.
• dsSpecialChar: Used for an escaped character in strings, e.g. “hello\n”.
• dsString: Default for strings.
• dsVerbatimString: Used for verbatim strings such as HERE docs.
• dsSpecialString: Used for special strings such as regular expressions in ECMAScript or LaTeX math mode.
• dsImport: Used for includes, imports, modules, or LaTeX packages

Category “Numbers, Types & Constants

• dsDataType: Used for data types such as int, char, float etc.
• dsDecVal: Used for decimal values.
• dsBaseN: Used for numbers with base other than 10.
• dsFloat: Used for floating point numbers.
• dsConstant: Used for language constants, e.g. True, False, None in Python or nullptr in C/C++.

• dsComment: Used for normal comments.
• dsDocumentation: Used for comments that reflect API documentation, e.g., the default style for /** */ comments.
• dsAnnotation: Used for annotations in comments, e.g. @param in Doxygen or JavaDoc.
• dsCommentVar: Used to refer to variables in a comment, e.g. after @param in Doxygen or JavaDoc.
• dsRegionMarker: Used for region markers, typically defined by BEGIN/END.
• dsInformation: Used for information, e.g. the keyword @note in Doxygen.
• dsWarning: Used for warnings, e.g. the keyword @warning in Doxygen.
• dsAlert: Used for comment specials such as TODO and WARNING in comments.

Category “Miscellaneous

• dsOthers: Used for attributes that do not match any of the other default styles.
• dsError: Used to indicate wrong syntax.

### Existing Syntax Highlighting Files

If the new default styles are not used, syntax highlighting files are backwards compatible to Kate Part in KDE SC 4. However, the plan is to use the new default styles where applicable to avoid hard-coded colors. To this end, the kateversion attribute in the language element will be set to 5.0 (yes, Kate Part’s version changed from 3 to 5 to match KDE frameworks 5) to avoid loading incompatible syntax highlighting xml files in older Kate Part versions. Example:

<language name="C++" kateversion="5.0" [other attributes omitted]>

With the new default styles, the Default Styles tab looks as follows:

In comparison, the KDE 4.x version looks like this:

The new default style colors are not fixed yet, so improvements and additional color themes we can ship with Kate Part by default are a welcome addition!

### A Note at 3rd Party Developers

There are other implementations (such as in Qt Creator or for Haskell). If you developers read this, we encourage you to add these default styles as well once Kate Part 5 is released (stable). Otherwise, the new syntax highlighting files may not be compatible.