KSyntaxHighlighting::Repository

Search for usage in LXR

KSyntaxHighlighting::Repository Class Reference

#include <repository.h>

Public Types

enum  DefaultTheme { LightTheme, DarkTheme }
 

Public Member Functions

 Repository ()
 
void addCustomSearchPath (const QString &path)
 
QVector< QStringcustomSearchPaths () 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< Definitiondefinitions () const
 
QVector< DefinitiondefinitionsForFileName (const QString &fileName) const
 
QVector< DefinitiondefinitionsForMimeType (const QString &mimeType) const
 
void reload ()
 
Theme theme (const QString &themeName) const
 
Theme themeForPalette (const QPalette &palette)
 
Theme themeForPalette (const QPalette &palette) const
 
QVector< Themethemes () 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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 as path/themes are searched for additional Definitions and Themes. Do not append syntax or themes to path yourself.
Calling this triggers a reload() of the repository.
Since
5.39

Definition at line 415 of file repository.cpp.

◆ customSearchPaths()

QVector< QString > Repository::customSearchPaths ( ) const

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()

Theme Repository::theme ( const QString themeName) const

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]

Theme Repository::themeForPalette ( const QPalette palette)

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]

Theme Repository::themeForPalette ( const QPalette palette) const

Returns the best matching theme for the given palette.

Since
5.79

Definition at line 185 of file repository.cpp.

◆ themes()

QVector< Theme > Repository::themes ( ) const

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:
This file is part of the KDE documentation.
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.