Warning, /frameworks/syntax-highlighting/docs/qml-api.md is written in an unsupported language. File is not indexed.
0001 Syntax Highlighting QML API {#qml_api}
0002 ==================
0003
0004 - [Basic Highlighting](#basic_highlighting)
0005 - [Advanced Use](#advanced_use)
0006 - [Further References](#refs)
0007
0008 <a name="basic_highlighting">
0009
0010 ## Basic Highlighting
0011
0012 If all you need is doing syntax highlighting for a fixed language and using a color
0013 theme matching the current system palette this is a matter of adding the `SyntaxHighlighter`
0014 component from the `org.kde.syntaxhighlighting` QML module to a text control.
0015
0016 ~~~
0017 import QtQuick.Controls 2.15
0018 import org.kde.syntaxhighlighting 1.0
0019
0020 TextArea {
0021 text: "..."
0022 SyntaxHighlighter {
0023 id: myHighlighter
0024 textEdit: parent
0025 definition: "C++"
0026 }
0027 }
0028 ~~~
0029
0030 <a name="advanced_use">
0031
0032 ## Advanced Use
0033
0034 For more complex uses the syntax definition might not be fixed but depend on input data (e.g.
0035 derived from its mimetype or file name), or a user selection. In the C++ API this is enabled
0036 by the `Repository` class, which is now also available in QML as a singleton object.
0037
0038 The following example shows how to use this for a simple syntax selection combo box.
0039
0040 ~~~
0041 ComboBox {
0042 model: Repository.definitions
0043 displayText: currentValue.translatedName + " (" + currentValue.translatedSection + ")"
0044 textRole: "translatedName"
0045 onCurrentIndexChanged: myHighlighter.definition = currentValue
0046 }
0047 ~~~
0048
0049 Handling color themes is also possible, similarly to syntax definitions. Themes can be listed,
0050 their properties can be accessed and they can be set by theme object or name on the highlighter.
0051 Like in the C++ API it's also possible to just ask for the light or dark default theme.
0052
0053 <a name="refs">
0054
0055 ## Further References
0056
0057 There's a more complete and pure-QML example in `examples/qml/example.qml` provided as part of
0058 the KSyntaxHighlighting source code that can be run with `qmlscene`.