KSyntaxHighlighting::Repository
#include <repository.h>
Public Types | |
enum | DefaultTheme { LightTheme, DarkTheme } |
Public Member Functions | |
Repository () | |
void | addCustomSearchPath (const QString &path) |
QVector< QString > | customSearchPaths () const |
Theme | defaultTheme (DefaultTheme t=LightTheme) |
Theme | defaultTheme (DefaultTheme t=LightTheme) const |
Definition | definitionForFileName (const QString &fileName) const |
Definition | definitionForMimeType (const QString &mimeType) const |
Definition | definitionForName (const QString &defName) const |
QVector< Definition > | definitions () const |
QVector< Definition > | definitionsForFileName (const QString &fileName) const |
QVector< Definition > | definitionsForMimeType (const QString &mimeType) const |
void | reload () |
Theme | theme (const QString &themeName) const |
Theme | themeForPalette (const QPalette &palette) |
Theme | themeForPalette (const QPalette &palette) const |
QVector< Theme > | themes () const |
Detailed Description
Syntax highlighting repository.
Introduction
The Repository gives access to all syntax Definitions available on the system, typically described in *.xml files. The Definition files are read from the resource that is compiled into the executable, and from the file system. If a Definition exists in the resource and on the file system, then the one from the file system is chosen.
Definitions and Themes
Typically, only one instance of the Repository is needed. This single instance can be thought of as a singleton you keep alive throughout the lifetime of your application. Then, either call definitionForName() with the given language name (e.g. "QML" or "Java"), or definitionForFileName() to obtain a Definition based on the filename/mimetype of the file. The function definitions() returns a list of all available syntax Definitions.
In addition to Definitions, the Repository also provides a list of Themes. A Theme is defined by a set of default text style colors as well as editor colors. These colors together provide all required colros for drawing all primitives of a text editor. All available Themes can be queried through themes(), and a Theme with a specific name is obtained through theme(). Additionally, defaultTheme() provides a way to obtain a default theme for either a light or a black color theme.
Search Paths
All highlighting Definition and Theme files are compiled into the shared KSyntaxHighlighting library by using the Qt resource system. Loading additional files from disk is supported as well.
Loading syntax Definition files works as follows:
- First, all syntax highlighting files are loaded that are located in QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("org.kde.syntax-highlighting/syntax"), QStandardPaths::LocateDirectory); Under Unix, this uses $XDG_DATA_HOME and $XDG_DATA_DIRS, which could map to $HOME/.local5/share/org.kde.syntax-highlighting/syntax and /usr/share/org.kde.syntax-highlighting/syntax.
- Next, for backwards compatibility with Kate, all syntax highlighting files are loaded that are located in QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("katepart5/syntax"), QStandardPaths::LocateDirectory); Again, under Unix, this uses $XDG_DATA_HOME and $XDG_DATA_DIRS, which could map to $HOME/.local5/share/katepart5/syntax and /usr/share/katepart5/syntax.
- Then, all files compiled into the library through resources are loaded. The internal resource path is ":/org.kde.syntax-highlighting/syntax". This path should never be touched by other applications.
- Then, all custom files compiled into resources are loaded. The resource path is ":/org.kde.syntax-highlighting/syntax-addons". This path can be used by other libraries/applications to bundle specialized definitions. Per default this path isn't used by the framework itself.
- Finally, the search path can be extended by calling addCustomSearchPath(). A custom search path can either be a path on disk or again a path to a Qt resource.
Similarly, loading Theme files works as follows:
- First, all Theme files are loaded that are located in QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("org.kde.syntax-highlighting/themes"), QStandardPaths::LocateDirectory); Under Unix, this uses $XDG_DATA_HOME and $XDG_DATA_DIRS, which could map to $HOME/.local5/share/org.kde.syntax-highlighting/themes and /usr/share/org.kde.syntax-highlighting/themes.
- Then, all files compiled into the library through resources are loaded. The internal resource path is ":/org.kde.syntax-highlighting/themes". This path should never be touched by other applications.
- Then, all custom files compiled into resources are loaded. The resource path is ":/org.kde.syntax-highlighting/themes-addons". This path can be used by other libraries/applications to bundle specialized themes. Per default this path isn't used by the framework itself.
- Finally, all Themes located in the paths added addCustomSearchPath() are loaded.
- Note
- Whenever a Definition or a Theme exists twice, the variant with higher version is used.
- The QStandardPaths lookup can be disabled by compiling the framework with the -DNO_STANDARD_PATHS define.
- See also
- Definition, Theme, AbstractHighlighter
- Since
- 5.28
Definition at line 127 of file repository.h.
Member Enumeration Documentation
◆ DefaultTheme
Built-in default theme types.
- See also
- defaultTheme()
Enumerator | |
---|---|
LightTheme | Theme with a light background color. |
DarkTheme | Theme with a dark background color. |
Definition at line 214 of file repository.h.
Constructor & Destructor Documentation
◆ Repository()
Repository::Repository | ( | ) |
Create a new syntax definition repository.
This will read the meta data information of all available syntax definition, which is a moderately expensive operation, it's therefore recommended to keep a single instance of Repository around as long as you need highlighting in your application.
Definition at line 104 of file repository.cpp.
Member Function Documentation
◆ addCustomSearchPath()
void Repository::addCustomSearchPath | ( | const QString & | path | ) |
Add a custom search path to the repository.
This path will be searched in addition to the usual locations for syntax and theme definition files. Both locations on disk as well as Qt resource paths are supported.
- Note
- Internally, the two sub-folders
path/syntax
as well aspath/themes
are searched for additional Definitions and Themes. Do not append syntax or themes topath
yourself. - Calling this triggers a reload() of the repository.
- Since
- 5.39
Definition at line 415 of file repository.cpp.
◆ customSearchPaths()
Returns the list of custom search paths added to the repository.
By default, this list is empty.
- See also
- addCustomSearchPath()
- Since
- 5.39
Definition at line 421 of file repository.cpp.
◆ defaultTheme() [1/2]
Theme Repository::defaultTheme | ( | Repository::DefaultTheme | t = LightTheme | ) |
Returns a default theme instance of the given type.
The returned Theme is guaranteed to be a valid theme.
KF6: remove in favor of const variant
Definition at line 180 of file repository.cpp.
◆ defaultTheme() [2/2]
Theme Repository::defaultTheme | ( | Repository::DefaultTheme | t = LightTheme | ) | const |
Returns a default theme instance of the given type.
The returned Theme is guaranteed to be a valid theme.
- Since
- 5.79
Definition at line 172 of file repository.cpp.
◆ definitionForFileName()
Definition Repository::definitionForFileName | ( | const QString & | fileName | ) | const |
Returns the best matching Definition for the file named fileName
.
The match is performed based on the extensions and mimetype of the definition files. If multiple matches are found, the one with the highest priority is returned.
If no match is found, Definition::isValid() of the returned instance returns false.
Definition at line 125 of file repository.cpp.
◆ definitionForMimeType()
Definition Repository::definitionForMimeType | ( | const QString & | mimeType | ) | const |
Returns the best matching Definition to the type named mimeType
.
If no match is found, Definition::isValid() of the returned instance returns false.
- Since
- 5.50
Definition at line 135 of file repository.cpp.
◆ definitionForName()
Definition Repository::definitionForName | ( | const QString & | defName | ) | const |
Returns the Definition named defName
.
If no Definition is found, Definition::isValid() of the returned instance returns false.
- Note
- This uses case sensitive, untranslated names. For instance, the javascript.xml definition file sets its name to JavaScript. Therefore, only the string "JavaScript" will return a valid Definition file.
Definition at line 120 of file repository.cpp.
◆ definitions()
QVector< Definition > Repository::definitions | ( | ) | const |
Returns all available Definitions.
Definitionss are ordered by translated section and translated names, for consistent displaying.
Definition at line 145 of file repository.cpp.
◆ definitionsForFileName()
QVector< Definition > Repository::definitionsForFileName | ( | const QString & | fileName | ) | const |
Returns all Definitions for the file named fileName
sorted by priority.
The match is performed based on the extensions and mimetype of the definition files.
- Since
- 5.56
Definition at line 130 of file repository.cpp.
◆ definitionsForMimeType()
QVector< Definition > Repository::definitionsForMimeType | ( | const QString & | mimeType | ) | const |
Returns all Definitions to the type named mimeType
sorted by priority.
- Since
- 5.56
Definition at line 140 of file repository.cpp.
◆ reload()
void Repository::reload | ( | ) |
Reloads the repository.
This is a moderately expensive operations and should thus only be triggered when the installed syntax definition files changed.
Definition at line 396 of file repository.cpp.
◆ theme()
Returns the theme called themeName
.
If the requested theme cannot be found, the retunred Theme is invalid, see Theme::isValid().
Definition at line 162 of file repository.cpp.
◆ themeForPalette() [1/2]
Returns the best matching theme for the given palette.
- Since
- 5.77
KF6: remove in favor of const variant
Definition at line 213 of file repository.cpp.
◆ themeForPalette() [2/2]
Returns the best matching theme for the given palette.
- Since
- 5.79
Definition at line 185 of file repository.cpp.
◆ themes()
Returns all available color themes.
The returned list should never be empty.
Definition at line 150 of file repository.cpp.
The documentation for this class was generated from the following files:
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Sep 22 2023 04:04:26 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.