Syntax Highlighting QML API {#qml_api}
==================
- [Basic Highlighting](#basic_highlighting)
- [Advanced Use](#advanced_use)
- [Further References](#refs)
## Basic Highlighting
If all you need is doing syntax highlighting for a fixed language and using a color
theme matching the current system palette this is a matter of adding the `SyntaxHighlighter`
component from the `org.kde.syntaxhighlighting` QML module to a text control.
~~~
import QtQuick.Controls 2.15
import org.kde.syntaxhighlighting 1.0
TextArea {
text: "..."
SyntaxHighlighter {
id: myHighlighter
textEdit: parent
definition: "C++"
}
}
~~~
## Advanced Use
For more complex uses the syntax definition might not be fixed but depend on input data (e.g.
derived from its mimetype or file name), or a user selection. In the C++ API this is enabled
by the `Repository` class, which is now also available in QML as a singleton object.
The following example shows how to use this for a simple syntax selection combo box.
~~~
ComboBox {
model: Repository.definitions
displayText: currentValue.translatedName + " (" + currentValue.translatedSection + ")"
textRole: "translatedName"
onCurrentIndexChanged: myHighlighter.definition = currentValue
}
~~~
Handling color themes is also possible, similarly to syntax definitions. Themes can be listed,
their properties can be accessed and they can be set by theme object or name on the highlighter.
Like in the C++ API it's also possible to just ask for the light or dark default theme.
## Further References
There's a more complete and pure-QML example in `examples/qml/example.qml` provided as part of
the KSyntaxHighlighting source code that can be run with `qmlscene`.