Merge remote-tracking branch 'origin/13.0'

Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs

Change-Id: I2a3d92a14e4dd16897d19f7d8a8c7b0ec30d14a5
This commit is contained in:
Eike Ziller
2024-02-19 14:44:54 +01:00
196 changed files with 6735 additions and 3421 deletions

View File

@@ -18,7 +18,7 @@ What's new?
### Qt Application Manager
Adds support for Qt 6 based applications with CMake for creating, building,
deploying, running, and debugging on devices that use the
deploying, running, and debugging for devices that use the
[Qt Application Manager](https://doc.qt.io/QtApplicationManager/).
([Documentation](https://doc.qt.io/qtcreator/creator-overview-qtasam.html))
@@ -63,6 +63,7 @@ Editing
([QTCREATORBUG-21826](https://bugreports.qt.io/browse/QTCREATORBUG-21826))
* Improved the coding style settings by separating Clang Format and other coding
style settings, and using a plain text editor for custom Clang Format settings
([Documentation](https://doc-snapshots.qt.io/qtcreator-13.0/creator-preferences-cpp-code-style.html))
* Fixed that the class wizards used the class name for the include guard
instead of the file name
([QTCREATORBUG-30140](https://bugreports.qt.io/browse/QTCREATORBUG-30140))
@@ -96,6 +97,7 @@ Editing
* Added automatic setup up of language servers for `YAML`, `JSON`, and `Bash`
(requires `npm`)
([Documentation](https://doc-snapshots.qt.io/qtcreator-13.0/creator-language-servers.html#adding-language-servers))
### Widget Designer
@@ -123,6 +125,7 @@ Projects
* Added a section `Vanished Targets` to `Projects` mode in case the project
was configured for kits that have vanished, as a replacement for the automatic
creation of "Replacement" kits
([Documentation](https://doc-snapshots.qt.io/qtcreator-13.0/creator-how-to-activate-kits.html#copy-custom-settings-from-vanished-targets))
* Added the status of devices to the device lists
([QTCREATORBUG-20941](https://bugreports.qt.io/browse/QTCREATORBUG-20941))
* Added the `Preferences > Build & Run > General > Application environment`
@@ -130,6 +133,8 @@ Projects
([QTCREATORBUG-29530](https://bugreports.qt.io/browse/QTCREATORBUG-29530))
* Added a file wizard for Qt translation (`.ts`) files
([QTCREATORBUG-29775](https://bugreports.qt.io/browse/QTCREATORBUG-29775))
* Improved the environment settings by making the changes explicit in a
separate, text-based editor
* Increased the maximum width of the target selector
([QTCREATORBUG-30038](https://bugreports.qt.io/browse/QTCREATORBUG-30038))
* Fixed that the `Left` cursor key did not always collapse the current item
@@ -164,6 +169,7 @@ Projects
* Added `Generate Kit` to the Python interpreter preferences for generating a
Python kit with this interpreter
([Documentation](https://doc-snapshots.qt.io/qtcreator-13.0/creator-python-development.html#create-kits-for-python-interpreters))
* Added the target setup page when loading unconfigured Python projects
* Added a `requirements.txt` file to the application wizard
* Fixed that the same Python interpreter could be auto-detected multiple times
@@ -244,6 +250,7 @@ Platforms
* Fixed deployment and running applications for iOS 17 devices
(application output, debugging, and profiling are not supported)
([QTCREATORBUG-29682](https://bugreports.qt.io/browse/QTCREATORBUG-29682))
([Documentation](https://doc-snapshots.qt.io/qtcreator-13.0/creator-developing-ios.html))
### Remote Linux

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -195,7 +195,7 @@
To view the available AVDs, select \preferences > \uicontrol Devices.
You can add more AVDs.
\image qtcreator-android-avd-manager.png {Android device in Devices}
\image qtcreator-android-avd-manager.webp {Android device in Devices}
You can see the status of the selected device in \uicontrol {Current state}.
To update the status information, select \uicontrol Refresh.

View File

@@ -262,7 +262,7 @@
You can build applications for and run them on bare metal devices
in the same way as for and on the desktop. For more information, see
\l{Building for Multiple Platforms} and \l{Running on Multiple Platforms}.
\l{Building for Multiple Platforms} and \l{Run on many platforms}.
\sa {Enable and disable plugins}
*/

View File

@@ -180,7 +180,7 @@
case-sensitivity. Select \uicontrol {Show Non-matching Lines} to
hide the lines that match the filter.
Press \key {Ctrl+F} to \l{Finding and Replacing}{search} for a string from
Press \key {Ctrl+F} to \l{Search in current file}{search} for a string in
the output.
To increase or decrease the output text size, select \inlineimage icons/plus.png
@@ -188,7 +188,7 @@
(\uicontrol {Zoom Out}), or press \key Ctrl++ or \key Ctrl+-.
To hide the output, select the \inlineimage icons/rightsidebaricon.png
(\uicontrol {Hide/Show Right Sidebar}) button or press \key {Alt+Shift+0}.
(\uicontrol {Hide Right Sidebar}) button or press \key {Alt+Shift+0}.
\section1 CLICOLOR_FORCE Environment Variable

View File

@@ -1985,7 +1985,7 @@
\li Select the \inlineimage icons/run_small.png
(\uicontrol Run) button to verify that the
\l {Running on Multiple Platforms}{build and run kit selector}
\l {Run on many platforms}{build and run kit selector}
picked a runnable target and you can run the application.
\li Make sure the debugger is \l{Setting Up Debugger}{set up properly}.

View File

@@ -80,7 +80,7 @@
\li To debug applications on \l{glossary-device}{devices}, check that
Qt 5.0, or later, libraries are installed on the device and
\l{Running on Multiple Platforms}{select the corresponding kit for the device}
\l{Run on many platforms}{select the corresponding kit for the device}
before you start debugging.
\endlist

View File

@@ -64,7 +64,7 @@
\endif
\endlist
\l{Search Results} shows the location and number of search hits in the
\l{Search Results View} shows the location and number of search hits in the
current project.
\if defined(qtcreator)

View File

@@ -36,12 +36,15 @@
key components of \QC. You can use the code editor in the
\uicontrol Edit mode.
\endif
\if defined(qtdesignstudio)
\li \l{Finding}
Use the incremental and advanced search to search from currently
Use the incremental and advanced search to search in currently
open projects or files on the file system or use the locator to
browse through projects, files, classes, functions, documentation
and file systems.
\endif
\li \l{Refactoring}

View File

@@ -11,7 +11,7 @@
\page creator-diff-editor.html
\if defined(qtdesignstudio)
\previouspage qt-quick-toolbars.html
\nextpage creator-finding-overview.html
\nextpage studio-finding.html
\else
\previouspage creator-macros.html
\nextpage creator-clang-codemodel.html

View File

@@ -1,51 +0,0 @@
// Copyright (C) 2018 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// **********************************************************************
// NOTE: the sections are not ordered by their logical order to avoid
// reshuffling the file each time the index order changes (i.e., often).
// Run the fixnavi.pl script to adjust the links to the index order.
// **********************************************************************
/*!
\page creator-finding-overview.html
\if defined(qtdesignstudio)
\previouspage creator-diff-editor.html
\else
\previouspage creator-clang-codemodel.html
\endif
\nextpage creator-editor-finding.html
\title Finding
\list
\li \l{Finding and Replacing}
The incremental search highlights the matching strings in the
window while typing and the advanced search enables you to
search from currently open projects or files on the file system.
You can conduct incremental and advanced searches in parallel.
In addition, you can search for symbols when you want to
refactor code.
\li \l{Searching with the Locator}
Use the locator to browse
through projects, files, classes, functions, documentation and
file systems.
\if defined(qtdesignstudio)
\li \l{Jump to the Code}
Jump to the code for a specific component directly from
the \uicontrol {2D} view or \uicontrol {Navigator} view.
You can also jump to the code of a particular
\uicontrol {State} or \uicontrol {Connection} from their
corresponding views.
\endif
\endlist
*/

View File

@@ -2,9 +2,13 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\previouspage creator-editor-finding.html
\page creator-editor-locator.html
\previouspage creator-how-to-advanced-search.html
\if defined(qtdesignstudio)
\nextpage creator-jump-to-the-code.html
\else
\nextpage creator-how-tos.html
\endif
\title Searching with the Locator

View File

@@ -65,7 +65,11 @@
The editor toolbar is context sensitive and shows items relevant to the file
currently open in the editor.
\image qtcreator-editor-toolbar.webp {Edit mode toolbar}
\image qtcreator-editor-toolbar.webp {Editor toolbar for a C++ source file}
\caption Editor toolbar when a C++ source file is open
\image qtcreator-editor-toolbar-qml.webp {Editor toolbar for a QML file}
\caption Editor toolbar when a QML file is open
\table
\header
@@ -104,6 +108,10 @@
between \QC and language servers, view server capabilities, and set
language server preferences.
\li \l {Language Servers}
\row
\li \inlineimage icons/live-preview.png
\li Preview changes to QML code live in your application.
\li \l {Previewing on Desktop}
\row
\li \inlineimage icons/debugger_singleinstructionmode.png
\li Run Clang-Tidy or Clazy to analyze the currently open file.

View File

@@ -98,7 +98,7 @@
state chart.
\endtable
To search from the state chart, select \uicontrol {Search} and start typing
To search in the state chart, select \uicontrol {Search} and start typing
in the \uicontrol Filter field. The search checks the whole SCXML tree for
attributes that match the search criteria.

View File

@@ -1,29 +1,40 @@
// Copyright (C) 2022 The Qt Company Ltd.
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\previouspage creator-finding-overview.html
\page creator-editor-finding.html
\nextpage creator-editor-locator.html
\if defined(qtdesignstudio)
\previouspage studio-finding.html
\nextpage creator-how-to-advanced-search.html
\else
\previouspage creator-how-tos.html
\endif
\title Finding and Replacing
\ingroup creator-how-to-search
\title Search in current file
The incremental search highlights the matching strings in the editor while
you type.
To search through the currently open file:
\list 1
\li Press \key {Ctrl+F} or select \uicontrol Edit >
\li Press \key {Ctrl+F} or go to \uicontrol Edit >
\uicontrol {Find/Replace} > \uicontrol {Find/Replace}.
\li In \uicontrol Find, enter the text you are looking for.
\image qtcreator-find-incremental.png
\image qtcreator-find-from-current-file.webp {Search hits highlighted in editor}
If the text is found, all occurrences are highlighted as you type.
All occurrences of the text are highlighted in the editor as you
type.
\li To go to the next occurrence, click \inlineimage icons/next.png
(\uicontrol {Find Next}), or press \key F3. To go to the previous
occurrence click \inlineimage icons/prev.png
\li To go to the next occurrence, select \inlineimage icons/next.png
(\uicontrol {Find Next}), or press \key F3.
\li To go to the previous occurrence, select \inlineimage icons/prev.png
(\uicontrol {Find Previous}), or press \key {Shift+F3}.
\li To select all found occurrences in a file, select
@@ -31,9 +42,13 @@
\endlist
You can restrict the search in the \uicontrol Find field by selecting
\inlineimage icons/qtcreator-new-search-icon.png
. Select one or several search criteria:
\note Select text before selecting \uicontrol {Find/Replace} to search only
from the selection.
\section1 Set search criteria
To restrict the search in the \uicontrol Find box, select
\inlineimage icons/qtcreator-new-search-icon.png and set search criteria:
\list
@@ -42,38 +57,33 @@
\li To search only whole words, select \uicontrol {Whole Words Only}.
\li To search using regular expressions, select
\li To search using \l{QRegularExpression}{regular expressions}, select
\uicontrol {Use Regular Expressions}. Regular expressions used in \QC
are modeled on Perl regular expressions. For more information on
using regular expressions, see the documentation for the
QRegularExpression Class.
are modeled on Perl regular expressions
\endlist
\note If you have selected text before selecting \uicontrol {Find/Replace}, the
search is conducted within the selection.
\section1 Replace text
To replace occurrences of the existing text, enter the new text in the
\uicontrol {Replace with} field.
To replace occurrences of the existing text, enter the new text in
\uicontrol {Replace with}.
\list
\li To replace the selected occurrence, select \uicontrol {Replace}.
\li To replace the selected occurrence and move to the next one,
click \uicontrol {Find Next} or press \key {Ctrl+=}.
\li To replace the selected occurrence and move to the previous one,
click \uicontrol {Find Previous}.
\li To replace all occurrences in the file, click
select \uicontrol {Replace & Find}.
\li To replace all occurrences in the file, select
\uicontrol {Replace All}.
\endlist
The \uicontrol {Preserve Case when Replacing} option can be selected to
preserve the case of the original text when replacing. This option is not
compatible with the \uicontrol {Use Regular Expressions} search option, and will
thus be disabled when regular expressions are used. When the option is used,
the case of the occurrence will be conserved, according to the following
\section1 Preserve case when replacing
To preserve the case of the original text when replacing, select
\inlineimage icons/qtcreator-new-search-icon.png and then select
\uicontrol {Preserve Case when Replacing}. You cannot use this option
together with \uicontrol {Use Regular Expressions}.
The case of the of the occurrence is preserved according to the following
rules:
\list
@@ -88,163 +98,127 @@
\li Other occurrences are replaced with the new text as entered.
\li If an occurrence and the new text have the same prefix or suffix,
then the case of the prefix and/or suffix are preserved, and the
other rules are applied on the rest of the occurrence only.
the case of the prefix and suffix are preserved, and the
other rules are applied to the rest of the occurrence.
\endlist
\section1 Highlight search hits
The locations of search hits, breakpoints, and bookmarks in your document
are highlighted on the editor scroll bar. To turn highlighting off, select
\preferences > \uicontrol {Text Editor} >
\uicontrol Display > \uicontrol {Highlight search results on the scrollbar}.
To search using more advanced options, select \uicontrol Advanced.
\image qtcreator-options-text-editor-display.png {Text Editor Display preferences}
\section1 Advanced Search
\section1 Search globally
To search through projects, files on a file system, files in all project
directories, or currently open files:
Select \uicontrol Advanced to open the \uicontrol {Search Results} view where
you can search in currently open projects or files on the file system. Or,
search for symbols to refactor code.
\if defined(qtcreator)
\sa {Search}{How To: Search}
\else
\sa {Search in projects or file systems}
\endif
\sa {Search Results View}
*/
/*!
\page creator-how-to-advanced-search.html
\if defined(qtdesignstudio)
\previouspage creator-editor-finding.html
\nextpage creator-editor-locator.html
\else
\previouspage creator-how-tos.html
\endif
\ingroup creator-how-to-search
\title Search in projects or file systems
The search scope and search criteria determine where \QC looks for the search
string, how it matches the string with text, and which results it shows.
\section1 Search in all projects
\list 1
\li Press \key {Ctrl+Shift+F} or select \uicontrol Edit >
\li Press \key {Ctrl+Shift+F} or go to \uicontrol Edit >
\uicontrol {Find/Replace} > \uicontrol {Advanced Find} >
\uicontrol {Open Advanced Find}.
\li Select the scope of your search:
\list
\li \uicontrol {All Projects} searches from all currently open
projects.
\image qtcreator-search-allprojects.png
\if defined(qtcreator)
If you cannot find some files, see
\l{Specify project contents} for how
to declare them as a part of the project.
\endif
\li \uicontrol {Current Project} searches from the project you
are currently editing.
\li \uicontrol {Files in All Project Directories} searches from
all project directories.
\li \uicontrol {Files in File System} recursively searches from
the selected directory.
\image qtcreator-search-filesystem.png
In the \uicontrol {Search engine} field, select the search
engine to use:
\list
\li Select \uicontrol Internal to use the \QC search
engine.
\li Select \uicontrol {Git Grep} to use Git to only
search tracked files in the Git work tree. To
restrict the search to the HEAD, a tag, a local or
remote branch, or a commit hash, enter a reference.
Leave the field empty to search through the file
system.
\if defined(qtcreator)
\li Select \uicontrol {Silver Searcher} to use the
experimental Silver Searcher plugin. For more
information, see \l{Enabling Silver Searcher}.
\endif
\endlist
\li \uicontrol {Current File} searches only from the current
file.
\li \uicontrol {Open Documents} searches from all open files.
\endlist
\li In the \uicontrol {File pattern} field, specify file patterns to
\li In \uicontrol Scope, select \uicontrol {All Projects}.
\image qtcreator-search-all-projects.webp {Search Results view}
\li In \uicontrol {Search for}, enter the string you are looking for.
\li Select options to make the search case sensitive, search only whole
words, or use regular expressions.
\li In \uicontrol {File pattern}, specify file patterns to
restrict the search to files that match the pattern. For example, to
search for a string only in \c {.cpp} and \c {.h} files, enter
\c {*.cpp,*.h}.
\li In the \uicontrol {Exclusion pattern} field, specify file patterns
\li In \uicontrol {Exclusion pattern}, specify file patterns
to omit files from the search.
\li Enter the text you are looking for and click \uicontrol Search.
\image qtcreator-search-results-matches.webp {Found matches in Search Results}
\l {Search Results} shows a list of files that have the searched text.
\list
\li To see all occurrences in a file, double-click the file name
in the list.
\li To go to an occurrence, double-click it.
\li To repeat the search after you have made changes to the
listed files, for example, select
\uicontrol {Search Again}.
\endlist
\li Select \uicontrol Search.
\endlist
The search results are stored in the search history from which you can
select earlier searches.
To clear the search results, select the \inlineimage icons/clean_pane_small.png
(\uicontrol Clear) button.
To expand and collapse the search results, select the
\uicontrol {Expand All} button.
To start a new search, select the \inlineimage icons/qtcreator-new-search-icon.png
(\uicontrol {New Search}) button.
\note You can use \uicontrol {Advanced Find} also to search for symbols. For
more information, see
\if defined(qtcreator)
\l{Finding Symbols}.
\else
\l{Finding QML Types}.
If you cannot find some files, see \l{Specify project contents} for
how to declare them as a part of the project.
\endif
\if defined(qtcreator)
\section1 Enabling Silver Searcher
\section1 Search in the file system
You can use Silver Searcher as a search engine in \QC if you install
Silver Searcher on the development PC.
\note Enable the SilverSearcher plugin to use it.
To use Silver Searcher:
In addition to the options available for searching from all projects, you can
select the search engine to use and the directory to search in.
\list 1
\li Download and install Silver Searcher from
\l {https://geoff.greer.fm/ag/}{The Silver Searcher} or
\l {https://github.com/ggreer/the_silver_searcher}{GitHub}.
You might have to build Silver Searcher from sources for some
platforms.
\li When searching, select \uicontrol {Silver Searcher} in the
\uicontrol {Search engine} field.
\li If Silver Searcher is not found, you might have installed it in a
location that is not found via the \c{PATH} environment variable.
Select \preferences > \uicontrol Environment > \uicontrol System,
then select \uicontrol Change in the \uicontrol Environment field,
and add the entry \c{PATH=/path/to/bin:${PATH}}.
\li In \uicontrol Scope, select \uicontrol {Files in File System}.
\image qtcreator-search-file-system.webp {Search Results view}
\li In \uicontrol {Search for}, enter the string you are looking for.
\li In \uicontrol {Search engine}, select the search engine to use:
\list
\li Select \uicontrol Internal to use the \QC search
engine.
\li Select \uicontrol {Git Grep} to use Git to only
search tracked files in the Git work tree. To
restrict the search to the HEAD, a tag, a local or
remote branch, or a commit hash, enter a reference.
Leave the field empty to search through the file
system.
\if defined(qtcreator)
\li Select \uicontrol {Silver Searcher} to use the
experimental Silver Searcher plugin.
\endif
\endlist
\li In \uicontrol Directory, select the directory to search in.
Select \uicontrol Browse to locate the directory or
\uicontrol Current to search in the directory where the currently
active file is.
\li Select \uicontrol Search.
\endlist
\sa {Enable and disable plugins}
\section1 Search and replace
To replace occurrences of the existing text:
\list 1
\li Select \uicontrol {Search & Replace}.
\image qtcreator-search-results-reg-exp.webp {Search results when searching and replacing}
\li Enter the new text in \uicontrol {Replace with}.
\li Select \uicontrol Replace.
\endlist
To preserve the case of the original text when replacing,
select \uicontrol {Preserve case}. The rules listed in
\l {Preserve case when replacing} apply here as well.
\if defined(qtcreator)
\sa {Search}{How To: Search}, {Finding Symbols}, {Turn on Silver Searcher}
\else
\sa {Search in current file}
\endif
\sa {Search Results View}
*/

View File

@@ -0,0 +1,53 @@
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page creator-how-to-silver-searcher.html
\previouspage creator-how-tos.html
\ingroup creator-how-to-search
\title Turn on Silver Searcher
You can use Silver Searcher as a search engine in \QC if you install
Silver Searcher on the computer.
\image qtcreator-search-file-system.webp {Files in File System scope in Search Results view}
\note Enable the SilverSearcher plugin to use it.
To use Silver Searcher:
\list 1
\li Download and install Silver Searcher from
\l {https://geoff.greer.fm/ag/}{The Silver Searcher} or
\l {https://github.com/ggreer/the_silver_searcher}{GitHub}.
You might have to build Silver Searcher from sources for some
platforms.
\li When searching, select \uicontrol {Silver Searcher} in
\uicontrol {Search engine}.
\endlist
If \QC cannot find Silver Searcher, you might have installed it in a
location that is not set in the \c{PATH} environment variable.
\section1 Set location of Silver Searcher
To tell \QC where Silver Searcher is:
\list 1
\li Go to \preferences > \uicontrol Environment > \uicontrol System.
\image qtcreator-preferences-environment-system.webp {System preferences}
\li In \uicontrol Environment, select \uicontrol Change.
\li In \uicontrol {Edit Environment}, add the path to the Silver Searcher
executable:
\badcode
PATH=</path/to/bin>:${PATH}
\endcode
\image qtcreator-edit-environment.webp {Edit Environment dialog}
\endlist
\sa {Enable and disable plugins}, {Search}{How To: Search},
{Batch edit environment settings}
*/

View File

@@ -65,6 +65,10 @@
\generatelist creator-how-to-lsp
\section2 Search
\generatelist creator-how-to-search
\section1 Manage Kits
\generatelist creator-how-to-manage-kits
@@ -404,34 +408,43 @@
/*!
\page creator-how-to-search-and-replace-using-regexp.html
\previouspage creator-how-to-move-between-open-files.html
\previouspage creator-how-tos.html
\ingroup creator-how-to-edit
\ingroup creator-how-to-search
\title Search and replace across files using a regular expression
\title Search and replace using a regular expression
As an example, say you want to replace equality checks (\c {foo == bar})
with a function (\c {foo.equals(bar)}):
Search and replace across files using regular expressions in the
\uicontrol {Search Results} view.
Regular expressions used in \QC are modeled on Perl regular expressions.
For more information about using regular expressions, see
\l QRegularExpression.
For example, to replace equality checks (\c {foo == bar}) with a function
(\c {foo.equals(bar)}):
\list 1
\li Ensure that any work you have done is committed to version control,
as the changes cannot be undone.
\li Press \key {Ctrl+Shift+F} to bring up the \uicontrol {Advanced Find}
form.
\li Change the scope to whatever is appropriate for your search.
\li Under the \uicontrol {Search for} text field, select
the \uicontrol {Use regular expressions} check box.
\li Enter the following text in the \uicontrol {Search for} text field:
\li Commit your changes to version control, as you cannot undo the
replace action.
\li Press \key {Ctrl+Shift+F} or go to \uicontrol Edit >
\uicontrol {Find/Replace} > \uicontrol {Advanced Find} >
\uicontrol {Open Advanced Find} to open \uicontrol {Search Results}.
\image qtcreator-search-reg-exp.webp {Regular expression in Search Results view}
\li In \uicontrol Scope, select whatever is appropriate for your search.
\li Select \uicontrol {Use regular expressions}.
\li Enter the following text in \uicontrol {Search for}:
\badcode
if \((.*) == (.*)\)
\endcode
\li Press \uicontrol {Search & Replace} to see a list of search results.
\li In the \uicontrol {Replace with} text field, enter the following text:
\li Select \uicontrol {Search & Replace} to see a list of search results.
\image qtcreator-search-results-reg-exp.webp {Search results for the regular expression}
\li In \uicontrol {Replace with}, enter the following text:
\badcode
if (\1.strictlyEquals(\2))
\endcode
\li Press \uicontrol Replace to replace all instances of the text.
\li Select \uicontrol Replace to replace all instances of the text.
\endlist
\sa {Advanced Search}, {Edit Code}{How To: Edit Code}, {Edit Mode}
\sa {Edit Code}{How To: Edit Code}, {Search}{How To: Search}, {Edit Mode}
*/

View File

@@ -76,7 +76,7 @@
\li \l{Connecting Remote Linux Devices}
\li \l{Deploying to Remote Linux}
\li \l{Remote Linux Run Settings}
\li \l{Running on Remote Linux Devices}
\li \l{Run on remote Linux devices}
\li \l{https://doc.qt.io/qtcreator/creator-overview-qtasam.html}
{Qt Creator Plugin for Qt Application Manager}
\endlist
@@ -110,7 +110,7 @@
\li \l{Connecting QNX Devices}
\li \l{Deploying to QNX Neutrino}
\li \l{QNX Run Settings}
\li \l{Running on QNX Devices}
\li \l{Run on QNX devices}
\li \l{Qt for QNX}
\endlist

View File

@@ -1,24 +1,25 @@
// Copyright (C) 2017 The Qt Company Ltd.
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
//! [running on embedded linux]
\page creator-how-to-run-on-remote-linux.html
\previouspage creator-how-tos.html
\section1 Running on Remote Linux Devices
\ingroup creator-how-to-run
To build the application and run it on a device:
\title Run on remote Linux devices
To build an application and run it on a device:
\list 1
\li Specify a connection to the device. For more information, see
\l{Connecting Remote Linux Devices}.
\li Specify a connection to the device.
\li Click the \uicontrol Run button.
\li Select \inlineimage icons/run_small.png (\uicontrol Run).
\endlist
\QC uses the compiler specified in the project build settings
(tool chain) to build the application.
\QC uses the compiler from the kit (tool chain) to build the application.
\QC copies the application files to the connected device and runs the
application. The application views are
@@ -33,5 +34,6 @@
Debugging works transparently if GDB server is installed on the device and
it is compatible with the GDB on the host.
//! [running on embedded linux]
\sa {Connecting Remote Linux Devices}, {Run on many platforms}, {Compilers},
{Embedded Platforms}, {kit-preferences}{Kits}
*/

View File

@@ -44,7 +44,7 @@
\list
\li \l{Connecting Android Devices}
\li \l{Deploying to Android}
\li \l{Running on Multiple Platforms}
\li \l{Run on many platforms}
\li \l{Creating a Mobile Application}
\li \l{Debugging on Android Devices}
\li \l{Qt for Android}
@@ -64,7 +64,7 @@
\list
\li \l{Connecting iOS Devices}
\li \l{Running on Multiple Platforms}
\li \l{Run on many platforms}
\li \l{Creating a Mobile Application}
\li \l{Qt for iOS}
\endlist

View File

@@ -21,12 +21,12 @@
\section1 Build Configurations
Build configurations have everything you need to compile the sources into
binaries. Build configurations use the tools and settings defined in their
corresponding kit.
\annotatedlist creator-reference-build-configurations
\section1 Run Configurations
\annotatedlist creator-reference-run-configurations
\section1 Editors
\annotatedlist creator-reference-editors
@@ -59,6 +59,17 @@
\annotatedlist creator-reference-preferences-text-editor
\section1 Run Configurations
Run configurations start the application in the location where the
\e {deploy configuration} copied it. By default, when you select
\uicontrol Run, \QC builds the project, deploys it to the device
defined in the kit, and runs it there. If you did not make changes
to the project since you last built and deployed it, \QC simply runs
it again.
\annotatedlist creator-reference-run-configurations
\section1 UI Design
Design UIs with either \l{User Interfaces}{Qt Quick or Qt Widgets}.

View File

@@ -0,0 +1,408 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth
Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is numbered 2
because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your freedom to
share and change it. By contrast, the GNU General Public Licenses are
intended to guarantee your freedom to share and change free software--to
make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any other
libraries whose authors decide to use it. You can use it for your
libraries, too.
When we speak of free software, we are referring to freedom, not price.
Our General Public Licenses are designed to make sure that you have the
freedom to distribute copies of free software (and charge for this
service if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone
to deny you these rights or to ask you to surrender the rights. These
restrictions translate to certain responsibilities for you if you
distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis or
for a fee, you must give the recipients all the rights that we gave you.
You must make sure that they, too, receive or can get the source code.
If you link a program with the library, you must provide complete object
files to the recipients so that they can relink them with the library,
after making changes to the library and recompiling it. And you must
show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright the
library, and (2) offer you this license which gives you legal permission
to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain that
everyone understands that there is no warranty for this free library. If
the library is modified by someone else and passed on, we want its
recipients to know that what they have is not the original version, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software patents.
We wish to avoid the danger that companies distributing free software
will individually obtain patent licenses, thus in effect transforming
the program into proprietary software. To prevent this, we have made it
clear that any patent must be licensed for everyone's free use or not
licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs.
This license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to
a program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However,
in a textual and legal sense, the linked executable is a combined work,
a derivative of the original library, and the ordinary General Public
License treats it as such.
Because of this blurred distinction, using the ordinary General Public
License for libraries did not effectively promote software sharing,
because most developers did not use the libraries. We concluded that
weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to
achieve this as regards changes in header files, but we have achieved it
as regards changes in the actual functions of the Library.) The hope is
that this will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee
is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or
translated straightforwardly into another language. (Hereinafter,
translation is included without limitation in the term
"modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code
means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output
from such a program is covered only if its contents constitute a
work based on the Library (independent of the use of the Library in
a tool for writing it). Whether that is true depends on what the
Library does and what the program that uses the Library does. 1. You
may copy and distribute verbatim copies of the Library's complete
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for
a fee. 2. You may modify your copy or copies of the Library or any
portion of it, thus forming a work based on the Library, and copy
and distribute such modifications or work under the terms of Section
1 above, provided that you also meet all of these conditions: a) The
modified work must itself be a software library. b) You must cause
the files modified to carry prominent notices stating that you
changed the files and the date of any change. c) You must cause the
whole of the work to be licensed at no charge to all third parties
under the terms of this License. d) If a facility in the modified
Library refers to a function or a table of data to be supplied by an
application program that uses the facility, other than as an
argument passed when the facility is invoked, then you must make a
good faith effort to ensure that, in the event an application does
not supply such function or table, the facility still operates, and
performs whatever part of its purpose remains meaningful.
(For example, a function in a library to compute square roots
has a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function
must be optional: if the application does not supply it, the
square root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work
based on the Library, the distribution of the whole must be on the
terms of this License, whose permissions for other licensees extend
to the entire whole, and thus to each and every part regardless of
who wrote it.
Thus, it is not the intent of this section to claim rights or
contest your rights to work written entirely by you; rather, the
intent is to exercise the right to control the distribution of
derivative or collective works based on the Library.
In addition, mere aggregation of another work not based on the
Library with the Library (or with a work based on the Library) on a
volume of a storage or distribution medium does not bring the other
work under the scope of this License. 3. You may opt to apply the
terms of the ordinary GNU General Public License instead of this
License to a given copy of the Library. To do this, you must alter
all the notices that refer to this License, so that they refer to
the ordinary GNU General Public License, version 2, instead of to
this License. (If a newer version than version 2 of the ordinary GNU
General Public License has appeared, then you can specify that
version instead if you wish.) Do not make any other change in these
notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of the
Library into a program that is not a library. 4. You may copy and
distribute the Library (or a portion or derivative of it, under
Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you accompany it with the
complete corresponding machine-readable source code, which must be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code. 5. A
program that contains no derivative of any portion of the Library,
but is designed to work with the Library by being compiled or linked
with it, is called a "work that uses the Library". Such a work, in
isolation, is not a derivative work of the Library, and therefore
falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because
it contains portions of the Library), rather than a "work that uses
the library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a
derivative work. (Executables containing this object code plus
portions of the Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section
6. Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself. 6.
As an exception to the Sections above, you may also compile or link
a "work that uses the Library" with the Library to produce a work
containing portions of the Library, and distribute that work under
terms of your choice, provided that the terms permit modification of
the work for the customer's own use and reverse engineering for
debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are
covered by this License. You must supply a copy of this License.
If the work during execution displays copyright notices, you
must include the copyright notice for the Library among them, as
well as a reference directing the user to the copy of this
License. Also, you must do one of these things: a) Accompany the
work with the complete corresponding machine-readable source
code for the Library including whatever changes were used in the
work (which must be distributed under Sections 1 and 2 above);
and, if the work is an executable linked with the Library, with
the complete machine-readable "work that uses the Library", as
object code and/or source code, so that the user can modify the
Library and then relink to produce a modified executable
containing the modified Library. (It is understood that the user
who changes the contents of definitions files in the Library
will not necessarily be able to recompile the application to use
the modified definitions.) b) Accompany the work with a written
offer, valid for at least three years, to give the same user the
materials specified in Subsection 6a, above, for a charge no
more than the cost of performing this distribution. c) If
distribution of the work is made by offering access to copy from
a designated place, offer equivalent access to copy the above
specified materials from the same place. d) Verify that the user
has already received a copy of these materials or that you have
already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is
normally distributed (in either source or binary form) with the
major components (compiler, kernel, and so on) of the operating
system on which the executable runs, unless that component itself
accompanies the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you
cannot use both them and the Library together in an executable that
you distribute. 7. You may place library facilities that are a work
based on the Library side-by-side in a single library together with
other library facilities not covered by this License, and distribute
such a combined library, provided that the separate distribution of
the work based on the Library and of the other library facilities is
otherwise permitted, and provided that you do these two things: a)
Accompany the combined library with a copy of the same work based on
the Library, uncombined with any other library facilities. This must
be distributed under the terms of the Sections above. b) Give
prominent notice with the combined library of the fact that part of
it is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work. 8. You may not copy,
modify, sublicense, link with, or distribute the Library except as
expressly provided under this License. Any attempt otherwise to
copy, modify, sublicense, link with, or distribute the Library is
void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights, from
you under this License will not have their licenses terminated so
long as such parties remain in full compliance. 9. You are not
required to accept this License, since you have not signed it.
However, nothing else grants you permission to modify or distribute
the Library or its derivative works. These actions are prohibited by
law if you do not accept this License. Therefore, by modifying or
distributing the Library (or any work based on the Library), you
indicate your acceptance of this License to do so, and all its terms
and conditions for copying, distributing or modifying the Library or
works based on it. 10. Each time you redistribute the Library (or
any work based on the Library), the recipient automatically receives
a license from the original licensor to copy, distribute, link with
or modify the Library subject to these terms and conditions. You may
not impose any further restrictions on the recipients' exercise of
the rights granted herein. You are not responsible for enforcing
compliance by third parties to this License. 11. If, as a
consequence of a court judgment or allegation of patent infringement
or for any other reason (not limited to patent issues), conditions
are imposed on you (whether by court order, agreement or otherwise)
that contradict the conditions of this License, they do not excuse
you from the conditions of this License. If you cannot distribute so
as to satisfy simultaneously your obligations under this License and
any other pertinent obligations, then as a consequence you may not
distribute the Library at all. For example, if a patent license
would not permit royalty-free redistribution of the Library by all
those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable
under any particular circumstance, the balance of the section is
intended to apply, and the section as a whole is intended to apply
in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is
willing to distribute software through any other system and a
licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed
to be a consequence of the rest of this License. 12. If the
distribution and/or use of the Library is restricted in certain
countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License. 13. The
Free Software Foundation may publish revised and/or new versions of
the Library General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library specifies a version number of this License which applies to
it and "any later version", you have the option of following the
terms and conditions either of that version or of any later version
published by the Free Software Foundation. If the Library does not
specify a license version number, you may choose any version ever
published by the Free Software Foundation. 14. If you wish to
incorporate parts of the Library into other free programs whose
distribution conditions are incompatible with these, write to the
author to ask for permission. For software which is copyrighted by
the Free Software Foundation, write to the Free Software Foundation;
we sometimes make exceptions for this. Our decision will be guided
by the two goals of preserving the free status of all derivatives of
our free software and of promoting the sharing and reuse of software
generally.
NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE,
THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS"
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU.
SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS
REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY
(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE
OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS

View File

@@ -37,15 +37,6 @@
the sources into binaries. Build configurations use the tools and settings
defined in their corresponding kit.
\li \l{Running on Multiple Platforms}
\e {Run configurations} start the application in the location
where it was copied by the \e{deploy configuration}. By default,
when you select the \uicontrol Run function, \QC builds the project,
deploys it to the device defined in the kit, and runs it there. However,
if you have not made any changes to the project since you last
built and deployed it, \QC simply runs it again.
\li \l{Deploying to Devices}
\e {Deploy configurations} handle the packaging and copying of
@@ -63,16 +54,5 @@
\endlist
\section1 Related Topics
\list
\li \l{Customizing the Build Process}
By default, running an application also builds it and deploys it to
a location from where it can be run on the device. You can change
the relationship between the build, run, and deploy configurations.
\endlist
\sa {Build and Run}{How To: Build and Run}
*/

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2020 The Qt Company Ltd.
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// **********************************************************************
@@ -30,25 +30,28 @@
\list 1
\li Click the \uicontrol {Build and Run Kit Selector} icon (1) or select
\li Select the \uicontrol {Build and Run Kit Selector} icon or go to
\uicontrol Build > \uicontrol {Open Build and Run Kit Selector} to select the
build and run \l{glossary-buildandrun-kit}{kit} or an
\l{Managing Android Virtual Devices (AVD)}{Android device}.
\image qtcreator-kit-selector.png "Kit selector"
\image qtcreator-kit-selector.webp {Kit selector}
\li Choose \uicontrol Build > \uicontrol {Build Project} or press
\key {Ctrl+B}.
You can also select the \uicontrol Run button (2) to also deploy and run
the application after building it.
Or, select \inlineimage icons/run_small.png (\uicontrol Run) to
deploy and run the application after building it.
\endlist
While the application is being built, the \uicontrol Build button (3)
changes to a \uicontrol {Cancel Build} button. To cancel the build, select
While the application is being built, the \inlineimage icons/build.png
(\uicontrol Build) button changes to a \inlineimage icons/cancel-build.png
(\uicontrol {Cancel Build}) button. To cancel the build, select
the button, press \key {Alt+Backspace}, or select \uicontrol Build >
\uicontrol {Cancel Build}. If you selected a build command and
\uicontrol {Cancel Build}.
If you selected a build command and
decide you would also like to run the application, you can select the
\uicontrol Run button to schedule running the project after building is done.

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2020 The Qt Company Ltd.
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// **********************************************************************
@@ -9,35 +9,48 @@
/*!
\page creator-build-process-customizing.html
\previouspage creator-setup-webassembly.html
\nextpage creator-testing.html
\previouspage creator-how-tos.html
\title Customizing the Build Process
\ingroup creator-how-to-build
To configure how projects are built, deployed, and run, select
\title Customize the build process
To configure how projects are built, deployed, and run, go to
\preferences > \uicontrol {Build & Run} > \uicontrol General.
\image qtcreator-project-options-deploy.png "Project General preferences"
\image qtcreator-preferences-build-run-general.webp {Build & Run General preferences}
By default, the \uicontrol {Always deploy project before running it} (1) and
\uicontrol {Build the Whole Project} (2) options are enabled. Therefore,
when you select the \uicontrol Run function, \QC checks for changes in the
project files and also builds and deploys the project if necessary.
By default, \uicontrol {Always deploy project before running it} (1) and
\uicontrol {Build the Whole Project} (2) are selected. Therefore, when
you select \inlineimage icons/run_small.png (\uicontrol Run), \QC checks
for changes in the project files and also builds and deploys the project if
necessary.
To deploy applications without building them or to just build the
application that you want to run, select the appropriate options
in the \uicontrol {Build before deploying} field.
in \uicontrol {Build before deploying}.
\section1 Stop applications before building
By default, the applications that the project contains are stopped
before rebuilding the project. To stop just the current application,
the applications in the same build directory, all applications,
or no applications, select the appropriate option in the
\uicontrol {Stop applications before building} field.
before rebuilding the project.
To stop just the current application, the applications in the same build
directory, all applications, or no applications, select the appropriate
option in \uicontrol {Stop applications before building}.
\section1 Use jom
On Windows, you can use \c jom instead of \c nmake for building the project
to distribute the compilation process to multiple CPU cores. You can download
\c jom from \l{http://download.qt.io/official_releases/jom}{Qt Downloads}.
To use \c jom, select the \uicontrol {Use jom instead of nmake} check box.
Deselect the check box if you experience build problems.
to distribute the compilation process to multiple CPU cores.
To use \c jom:
\list 1
\li Download \c jom from \l{http://download.qt.io/official_releases/jom}
{Qt Downloads}.
\li Select \uicontrol {Use jom instead of nmake}.
\endlist
Clear the check box if builds fail.
*/

View File

@@ -198,8 +198,8 @@
directory in the \l {File System} view.
Declaring files as a part of the project also makes them visible to the
\l{Searching with the Locator}{locator} and \l{Advanced Search}
{project-wide search}.
\l{Searching with the Locator}{locator} and
\l{Search in projects or file systems}{project-wide search}.
\section1 CMake Projects

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2021 The Qt Company Ltd.
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// **********************************************************************
@@ -9,68 +9,76 @@
/*!
\page creator-running-targets.html
\if defined(qtdesignstudio)
\previouspage studio-live-preview.html
\else
\previouspage creator-building-targets.html
\endif
\nextpage creator-deployment.html
\previouspage creator-how-tos.html
\title Running on Multiple Platforms
\ingroup creator-how-to-run
\title Run on many platforms
By default, running an application also builds it and deploys it to a
location from where it can be run on the desktop, on a device emulator or
location from where it can run on the desktop, on a device emulator or
simulator, or on a \l{glossary-device}{device} that is connected to
the development PC.
the computer.
To run executable files without deploying them first, select \uicontrol Build >
\uicontrol {Run Without Deployment}. To make this the default option, deselect the
\preferences > \uicontrol {Build & Run} >
\uicontrol General > \uicontrol {Always deploy project before running it}
check box.
\section1 Run applications
To run applications:
\list 1
\li Click the \uicontrol {Build and Run Kit Selector} icon (1) or select
\li Select the \uicontrol {Build and Run Kit Selector} icon or go to
\uicontrol Build > \uicontrol {Open Build and Run Kit Selector} to select the
build and run \l{glossary-buildandrun-kit}{kit}.
\image qtcreator-kit-selector.png "Kit selector"
\image qtcreator-kit-selector.webp {Kit selector}
\li Click the \uicontrol Run button (2).
\li Select \inlineimage icons/run_small.png (\uicontrol Run).
\endlist
\section1 Run on mobile and embedded devices
If you have connected \l{Mobile Platforms}{mobile devices} or
\l{Embedded Platforms}{embedded devices} to the computer
or added virtual devices, such as \l{Managing Android Virtual Devices (AVD)}
{Android Virtual Devices (AVD)}, you can select them in the kit selector.
Select \uicontrol Manage to manage device settings. For example, you can add
AVDs or manually start disconnected AVDs.
\section1 Select run targets
If your project has several run targets defined, such as
\l{Running Autotests}{tests}, you can select them in the kit selector.
\image qtcreator-kit-selector-run-targets.png "Run targets in the kit selector"
\image qtcreator-kit-selector-run-targets.png {Run targets in the kit selector}
If you have connected \l{Mobile Platforms}{mobile devices} or
\l{Embedded Platforms}{embedded devices} to the development PC
or added virtual devices, such as \l{Managing Android Virtual Devices (AVD)}
{Android Virtual Devices (AVD)}, you can select them in the kit selector.
Select \uicontrol Manage to manage device settings. For example, you can add
AVDs or manually start disconnected AVDs.
\section1 Run without deploying
\l {Application Output} displays the status of the
application while it is running. You can select the \uicontrol Run button
to re-run applications without building them first. This is
useful when developing Qt Quick applications because the QML files are
interpreted at runtime. Therefore, the application does not need to be
To run executable files without deploying them first, select \uicontrol Build >
\uicontrol {Run Without Deployment}.
To make this the default option, go to \preferences >
\uicontrol {Build & Run} > \uicontrol General, and clear
\uicontrol {Always deploy project before running it}.
\section1 Run without building
\l {Application Output} displays the status of the application while it is
running.
\image qtcreator-application-output.webp {Application Output view}
Select \inlineimage icons/run_small.png (\uicontrol Run)
to re-run applications without building them first.
This is useful when developing Qt Quick applications because the QML files
are interpreted at runtime. Therefore, the application does not need to be
built again if you edited only QML files. This saves time especially if
the application has large image files that would need to be bundled
into the resource file before running the application.
\image qtcreator-application-output.webp {Application Output view}
\include linux-mobile/creator-projects-running-generic-linux.qdocinc running on embedded linux
\if defined(qtcreator)
\include qnx/creator-projects-running-qnx.qdocinc running on qnx
\sa {Configure projects for running}, {Run Python applications}
\endif
\sa {Configure projects for running}, {Customize the build process},
{Run on QNX devices}, {Run on remote Linux devices},
{Run Python applications}, {Supported Platforms}
*/

View File

@@ -1,22 +1,21 @@
// Copyright (C) 2022 The Qt Company Ltd.
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
//! [running on qnx]
\page creator-how-to-run-on-qnx.html
\previouspage creator-how-tos.html
\section1 Running on QNX Devices
\ingroup creator-how-to-run
\title Run on QNX devices
To build an application and run it on a device:
\list 1
\li Connect the device to the development PC or to the Wi-Fi network.
\li Configure the device and specify a connection to it. For more
information, see \l{Connecting QNX Devices}.
\li Connect the device to the computer or to the Wi-Fi network.
\li Configure the device and specify a connection to it.
\li Make sure that your kit has your QNX device set.
\li Click the \uicontrol Run button.
\li Select \inlineimage icons/run_small.png (\uicontrol Run).
\endlist
\QC uses the compiler specified in the QNX tool chain to build the
@@ -25,23 +24,23 @@
\note Debugging is currently only fully supported on Linux and \macos.
It is not possible to insert breakpoints during runtime on Windows.
\section2 Troubleshooting Errors
\section1 Troubleshoot errors
To support running, debugging, and stopping applications from \QC, the QNX
Neutrino RTOS has additional command-line tools and services, as described
in \l {Qt for QNX}.
\section3 Debug Output Cannot Be Shown
\section2 Debug output cannot be shown
For the command-line output to show up in the \uicontrol{Application Output},
\QC needs to be able to establish an SSH connection to the device.
\QC has to create an SSH connection to the device.
This is only possible if QNX Momentics is not running, and the SSH key
configured for the device is a 4096-bit key.
If these conditions are not met, you will get an error message saying debug
output cannot be shown.
\section3 Cannot Run, Debug, or Stop Applications
\section2 Cannot run, debug, or stop applications
The board support package (BSP) for the QNX device might be missing some
of the following applications that \QC needs to run, debug, and stop
@@ -49,5 +48,6 @@
\c printf, \c ps, \c read, \c sed, \c sleep, \c uname, \c slog2info, and
\c cat.
//! [running on qnx]
\sa {Connecting QNX Devices}, {Run on many platforms}, {Compilers},
{Embedded Platforms}, {kit-preferences}{Kits}
*/

View File

@@ -36,11 +36,6 @@
\li \l{Using Text Editing Macros}
\li \l{Comparing Files}
\endlist
\li \l{Finding}
\list
\li \l{Finding and Replacing}
\li \l{Searching with the Locator}
\endlist
\li \l{Refactoring}
\li \l{Configuring the Editor}
\li \l{Using GitHub Copilot}
@@ -54,7 +49,6 @@
\li \l{Previewing in Browsers}
\endlist
\li \l{Building for Multiple Platforms}
\li \l{Running on Multiple Platforms}
\li \l{Deploying to Devices}
\list
\li \l{Deploying to Android}
@@ -74,7 +68,6 @@
\li \l{Connecting Remote Linux Devices}
\li \l{Building Applications for the Web}
\endlist
\li \l{Customizing the Build Process}
\endlist
\li \l{Testing}
\list
@@ -149,6 +142,8 @@
\generatelist creator-how-to-configure-editors
\li Manage Language Servers
\generatelist creator-how-to-lsp
\li Search
\generatelist creator-how-to-search
\endlist
\li Manage Kits
\generatelist creator-how-to-manage-kits

View File

@@ -50,7 +50,6 @@
\li \b {\l{Coding}}
\list
\li \l{Writing Code}
\li \l{Finding}
\li \l{Refactoring}
\li \l{Configuring the Editor}
\endlist
@@ -58,7 +57,6 @@
\list
\li \l{Validating with Target Hardware}
\li \l{Building for Multiple Platforms}
\li \l{Running on Multiple Platforms}
\li \l{Deploying to Devices}
\li \l{Connecting Devices}
\endlist

View File

@@ -19,7 +19,7 @@
If you add animation to the states, you can
\l{Validating with Target Hardware}{preview}
or \l{Running on Multiple Platforms}{run}
or \l{Run on many platforms}{run}
the application to test the animation.
//! [scxml state machines]

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2019 The Qt Company Ltd.
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
@@ -8,44 +8,44 @@
\title Previewing on Desktop
\if defined(qtcreator)
To preview the currently active QML file on the desktop, select
\uicontrol Build > \uicontrol {QML Preview}.
\image qtcreator-live-preview.png
\else
To preview the currently active QML file on the desktop:
\list
\if defined(qtcreator)
\li Select \inlineimage icons/live-preview.png (\uicontrol {Live Preview})
on the \l{Edit Mode}{editor} toolbar.
\image qtcreator-live-preview.webp {Application running on top of the editor view}
\li Select \uicontrol Build > \uicontrol {QML Preview}.
\endlist
\else
\li Select the \uicontrol {Live Preview} button on the top toolbar.
\li Press \key {Alt+P}.
\image studio-live-preview.webp
\endlist
\image studio-live-preview.webp
\endif
To preview any QML file in the project:
To preview any QML file that belongs to the project,
\list
\li Select the \uicontrol {Live Preview} button on the top toolbar.
\li Right-click the
filename in the \l Projects view, and select \uicontrol {Preview File}.
\li Right-click the filename in the \l Projects view, and select
\uicontrol {Preview File}.
\endlist
\if defined(qtdesignstudio)
To preview the whole UI, select \uicontrol {Live Preview}
when viewing the main QML file of the project.
To view the UI in different sizes, select the zooming level on the toolbar.
\section1 Overriding the Preview Tool
\section1 Selecting the Preview Tool
By default, the QML runtime is used for previewing.
By default, the QML runtime is used for previewing. To use some
other tool, specify it in the \uicontrol {QML viewer} field in the run
settings of the project in the Projects mode.
To use some other tool:
\note Click \inlineimage icons/settings.png
to access the setting options.
\image studio-run-settings.png "Run settings"
\list 1
\li Select \inlineimage icons/settings.png to go to
\uicontrol {Run Settings}.
\image studio-run-settings.webp {Run Settings}
\li In \uicontrol {Override device QML viewer}, select the folder where
the preview tool executable is located.
\endlist
\endif
*/

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2021 The Qt Company Ltd.
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
@@ -12,38 +12,35 @@
\title Validating with Target Hardware
You can use the live preview feature to preview a UI file or the entire
UI on the desktop, as well as on embedded Linux
devices. The changes you make to the UI are instantly visible
to you in the preview. While the preview is available on Android devices,
it does not instantly reflect the changes made to the UI in the editor. It
shows the snapshot of your project from the moment you start the preview on
the device.
Preview a UI file or the entire UI on the desktop, as well as on embedded
Linux devices to instantly view the changes you make to the UI. On Android
devices, the preview shows the snapshot of your project from the moment
you start the preview on the device, not your changes.
In addition, you can use \QDV to run
\if defined(qtcreator)
\image qtcreator-live-preview.webp {Application running on top of the editor}
\else
\image studio-live-preview.webp
\endif
Or, use \QDV to run
\if defined(qtcreator)
\l{Create Qt Quick UI Prototypes}{Qt Quick UI projects}
\else
applications
\endif
in most widely-used web browsers on the desktop and in mobile devices This
enables you to easily share your designs with reviewers who don't have \QC.
\if defined(qtcreator)
\image qtcreator-live-preview.png
\else
\image studio-live-preview.webp
\endif
in most widely-used web browsers on the desktop and in mobile devices and
share your designs with reviewers who don't have \QC.
\list
\li \l{Previewing on Desktop}
You can preview individual QML files or the whole UI.
Preview individual QML files or the whole UI.
\li \l{Previewing on Devices}
\if defined(qtcreator)
You can preview Qt Quick applications on devices that you have
connected to the development PC. For more information, see
Preview Qt Quick applications on devices that you
connect to the development PC. For more information, see
\l {Connecting Devices}.
\else
When you install \QDS, everything you need for previewing on
@@ -54,17 +51,16 @@
\if defined(qtdesignstudio)
\li \l{Previewing Android applications}
You can preview Android applications live using an Android
emulator.
Preview Android applications live using an Android emulator.
\li \l{Sharing Applications Online}
You can share applications online and view them in a web browser.
Share applications online and view them in a web browser.
\else
\li \l{Previewing in Browsers}
You can open \l{https://designviewer.qt.io/}{\QDV}
Open \l{https://designviewer.qt.io/}{\QDV}
in a browser and load applications to it.
\endif
\endlist

View File

@@ -68,7 +68,7 @@
To use an \l{Terminal} {internal terminal}, select \preferences >
\uicontrol Terminal > \uicontrol {Use internal terminal}.
\endif
\li Search from the selected directory.
\li Search in the selected directory.
\li View file properties, such as name, path, MIME type, default editor,
line endings, indentation, owner, size, last read and modified
dates, and permissions.

View File

@@ -60,9 +60,9 @@
\section1 Find and filter output
To search from output, press \key {Ctrl+F} when the view is active. Enter
To search in output, press \key {Ctrl+F} when the view is active. Enter
search criteria in the \uicontrol Find field. For more information, see
\l{Finding and Replacing}.
\l{Search in current file}.
To filter output, enter a string in the \uicontrol Filter field.

View File

@@ -44,7 +44,8 @@
\li To open links in a browser, files in the editor, or folders in the
\l Projects view, hover the mouse over them, and press \key Ctrl.
\li To \l{Finding and Replacing}{search} through the output, press \key {Ctrl+F}.
\li To \l{Search in current file}{search} through the output, press
\key {Ctrl+F}.
\li To make the font larger or smaller, select the \inlineimage icons/plus.png
and \inlineimage icons/minus.png

View File

@@ -89,7 +89,7 @@
\li Add and remove subprojects.
\li Find unused functions.
\endif
\li Search from the selected directory.
\li Search in the selected directory.
\li Open a terminal window in the project directory. To specify the
terminal to use on Linux and \macos, select \preferences >

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2023 The Qt Company Ltd.
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// **********************************************************************
@@ -78,25 +78,87 @@
\ingroup creator-reference-output-views
\ingroup studio-reference-output-views
\title Search Results
\title Search Results View
\brief Lets you search through projects, files on a file system or the
currently open files.
\brief Search through projects, files on a file system or the
currently open files and view search results.
The search history (1) stores the search results. You can select earlier
searches from the history.
The search scope determines where \QC searches for the search string:
\image qtcreator-search-results.webp {Search Results - criteria}
\list
\li \uicontrol {All Projects} searches in all projects.
\li \uicontrol {Current Project} searches in the currently active
project.
\li \uicontrol {Files in All Project Directories} recursively searches
in all project directories.
\li \uicontrol {Files in File System} recursively searches in
the selected directory.
\li \uicontrol {Current File} searches only from the current
file.
\li \uicontrol {Open Documents} searches in all open files.
\endlist
The figure below shows an example search result for all
occurrences of the search string in the specified directory.
In \uicontrol {File pattern} and \uicontrol {Exclusion pattern}, specify
file patterns to further restrict the search scope.
\image qtcreator-search-results-matches.webp {Search Results - matches found}
The search criteria determine how \QC matches the search
string with text and which results it shows:
For more information about the different search options, see
\l {Finding and Replacing}.
\list
\li To consider case, select \uicontrol {Case sensitive}.
\li To search only whole words, select \uicontrol {Whole words only}.
\li To search using \l{QRegularExpression}{regular expressions}, select
\uicontrol {Use regular expressions}.
\endlist
\image qtcreator-search-file-system.webp {Search Results view with search options}
\section1 Viewing Search Results
After you select \uicontrol Search or \uicontrol {Search & Replace}, the view
shows a list of files that have search hits.
\image qtcreator-search-results-matches.webp {Found matches in Search Results}
To show search hits in the editor:
\list
\li To see all occurrences in a file, double-click the file name
in the list.
\li To go to an occurrence, double-click it.
\endlist
To repeat the search after you have made changes to the listed files,
for example, select \uicontrol {Search Again}.
\section1 Search Results View Toolbar
The toolbar contains options for searching again and navigating search
results:
\list
\li To clear the search results, select
\inlineimage icons/clean_pane_small.png (\uicontrol Clear).
\li To expand and collapse the search results, select
\inlineimage icons/qtcreator-expand.png (\uicontrol {Expand All}).
\li To start a new search, select
\inlineimage icons/qtcreator-new-search-icon.png
(\uicontrol {New Search}).
\li If the active project has long paths, select \uicontrol {../}
(\uicontrol {Show Paths in Relation to Active Project}) to show
relative paths.
\li To show the results of earlier searches, select them in
\uicontrol History.
\endlist
\sa {View output}
\if defined(qtcreator)
\sa {Search}{How To: Search}
\endif
*/
/*!

View File

@@ -40,7 +40,7 @@
\li \inlineimage numbers/03.png
\li Run button
\li Run the application on the selected target platform.
\li \l{Running on Multiple Platforms}
\li \l{Run on many platforms}
\row
\li \inlineimage numbers/04.png
\li Debug button

View File

@@ -110,7 +110,7 @@
You can now build Qt applications in WebAssembly format and run them in
a web browser as described in \l {Building for Multiple Platforms} and
\l{Running on Multiple Platforms}.
\l{Run on many platforms}.
\sa {Enable and disable plugins}
*/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@@ -0,0 +1,39 @@
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page studio-finding.html
\previouspage creator-diff-editor.html
\nextpage creator-editor-finding.html
\title Finding
\list
\li \l{Search in current file}
The incremental search highlights the matching strings in the
editor while you type.
\li \l{Search in projects or file systems}
With advanced search, you can search in currently open projects or
files on the file system.
\li \l{Searching with the Locator}
Use the locator to browse
through projects, files, classes, functions, documentation and
file systems.
\li \l{Jump to the Code}
Jump to the code for a specific component directly from
the \uicontrol {2D} view or \uicontrol {Navigator} view.
You can also jump to the code of a particular
\uicontrol {State} or \uicontrol {Connection} from their
corresponding views.
\endlist
*/

View File

@@ -211,7 +211,8 @@
\endlist
\li \l{Finding}
\list
\li \l{Finding and Replacing}
\li \l{Search in current file}
\li \l{Search in projects or file systems}
\li \l{Searching with the Locator}
\li \l{Jump to the Code}
\endlist

View File

@@ -258,9 +258,22 @@
"Description": "Syntax highlighting definition ruby.xml",
"Homepage": "https://invent.kde.org/frameworks/syntax-highlighting/-/tree/master/data/syntax",
"License": "GNU Lesser General Public License v2.0 or later",
"LicenseFile": "doc/qtcreator/src/overview/license-LGPLv2.1.txt",
"LicenseFile": "doc/qtcreator/src/overview/license-LGPLv2.0.txt",
"Copyright": "Copyright (C) 2004 by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi). Copyright (C) 2004 by Stefan Lang (langstefan@gmx.at). Copyright (C) 2008 by Robin Pedersen (robinpeder@gmail.com). Copyright (C) 2011 by Miquel Sabaté (mikisabate@gmail.com)."
},
{
"Id": "ksyntaxhighlighting-toml",
"Name": "KSyntaxHighlighting: toml.xml",
"QDocModule": "qtcreator",
"QtParts": ["tools"],
"QtUsage": "Used for the generic highlighter for text files.",
"Path": "src/libs/3rdparty/syntax-highlighting/data/syntax",
"Description": "Syntax highlighting definition toml.xml",
"Homepage": "https://invent.kde.org/frameworks/syntax-highlighting/-/tree/master/data/syntax",
"License": "GNU Lesser General Public License v2.0",
"LicenseFile": "doc/qtcreator/src/overview/license-LGPLv2.0.txt",
"Copyright": "Copyright (C) flying-sheep@web.de"
},
{
"Id": "ksyntaxhighlighting-valgrind-suppression",
"Name": "KSyntaxHighlighting: valgrind-suppression.xml",
@@ -300,6 +313,19 @@
"LicenseFile": "doc/qtcreator/src/overview/license-LGPLv2.1.txt",
"Copyright": "Copyright (C) 2004, Jan Villat <jan.villat@net2000.ch>. Changes by: 2018 Nibaldo González <nibgonz@gmail.com>, 2007 Sebastian Pipping <webmaster@hartwork.org>."
},
{
"Id": "ksyntaxhighlighting-yaml",
"Name": "KSyntaxHighlighting: yaml.xml",
"QDocModule": "qtcreator",
"QtParts": ["tools"],
"QtUsage": "Used for the generic highlighter for text files.",
"Path": "src/libs/3rdparty/syntax-highlighting/data/syntax",
"Description": "Syntax highlighting definition yaml.xml",
"Homepage": "https://invent.kde.org/frameworks/syntax-highlighting/-/tree/master/data/syntax",
"License": "GNU Lesser General Public License v2.1",
"LicenseFile": "doc/qtcreator/src/overview/license-LGPLv2.1.txt",
"Copyright": "Copyright (C) Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)"
},
{
"Id": "std-span-martinmoene",
"Name": "std::span Implementation for C++11 and Later",

View File

@@ -11,7 +11,7 @@ int main(int argc, char *argv[])
QQmlApplicationEngine engine;
// The first subfolder is the libraryName followed by the regular
// folder structure: LibraryName/Subfolder
const QUrl url(u"qrc:/ExampleProjectApp/example/example.qml"_qs);
const QUrl url(QStringLiteral("qrc:/ExampleProjectApp/example/example.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)

View File

@@ -11,7 +11,7 @@ int main(int argc, char *argv[])
QQmlApplicationEngine engine;
@if !%{HasLoadFromModule}
const QUrl url(u"qrc:/%{JS: value('ProjectName')}/Main.qml"_qs);
const QUrl url(QStringLiteral("qrc:/%{JS: value('ProjectName')}/Main.qml"));
@endif
@if %{HasFailureSignal}
QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed,

View File

@@ -43,7 +43,7 @@ int main(int argc, char *argv[])
QQmlApplicationEngine engine;
@if %{IsQt6}
const QUrl url(u"qrc:/%{JS: value('ProjectName')}/main.qml"_qs);
const QUrl url(QStringLiteral("qrc:/%{JS: value('ProjectName')}/main.qml"));
@else
const QUrl url(QStringLiteral("qrc:/main.qml"));
@endif

View File

@@ -83,4 +83,9 @@ QtcLibrary {
]
}
}
Export {
Depends { name: "cpp" }
cpp.includePaths: project.ide_source_tree + "/src/libs/3rdparty/"
}
}

View File

@@ -26,6 +26,7 @@ add_qtc_library(KSyntaxHighlighting
src/lib/definitiondownloader.cpp src/lib/definitiondownloader.h
src/lib/definitionref_p.h
src/lib/definition_p.h
src/lib/dynamicregexpcache_p.h
src/lib/foldingregion.cpp src/lib/foldingregion.h
src/lib/format.cpp src/lib/format.h src/lib/format_p.h
src/lib/htmlhighlighter.cpp src/lib/htmlhighlighter.h
@@ -44,7 +45,7 @@ add_qtc_library(KSyntaxHighlighting
src/lib/xml_p.h
)
set(export_symbol_declaration DEFINES KF5SyntaxHighlighting_EXPORTS)
set(export_symbol_declaration DEFINES KF6SyntaxHighlighting_EXPORTS)
if (QTC_STATIC_BUILD)
set(export_symbol_declaration PUBLIC_DEFINES KSYNTAXHIGHLIGHTING_STATIC_DEFINE)
endif()

View File

@@ -1,12 +1,12 @@
// This file was generated by ecm_setup_version(): DO NOT EDIT!
#ifndef SyntaxHighlighting_VERSION_H
#define SyntaxHighlighting_VERSION_H
#ifndef KSYNTAXHIGHLIGHTING_VERSION_H
#define KSYNTAXHIGHLIGHTING_VERSION_H
#define SyntaxHighlighting_VERSION_STRING "5.103.0"
#define SyntaxHighlighting_VERSION_MAJOR 5
#define SyntaxHighlighting_VERSION_MINOR 103
#define SyntaxHighlighting_VERSION_PATCH 0
#define SyntaxHighlighting_VERSION ((5<<16)|(103<<8)|(0))
#define KSYNTAXHIGHLIGHTING_VERSION_STRING "5.249.0"
#define KSYNTAXHIGHLIGHTING_VERSION_MAJOR 5
#define KSYNTAXHIGHLIGHTING_VERSION_MINOR 249
#define KSYNTAXHIGHLIGHTING_VERSION_PATCH 0
#define KSYNTAXHIGHLIGHTING_VERSION ((5<<16)|(249<<8)|(0))
#endif

View File

@@ -2,14 +2,12 @@
#ifndef KSYNTAXHIGHLIGHTING_EXPORT_H
#define KSYNTAXHIGHLIGHTING_EXPORT_H
#include <QtGlobal>
#ifdef KSYNTAXHIGHLIGHTING_STATIC_DEFINE
# define KSYNTAXHIGHLIGHTING_EXPORT
# define KSYNTAXHIGHLIGHTING_NO_EXPORT
#else
# ifndef KSYNTAXHIGHLIGHTING_EXPORT
# ifdef KF5SyntaxHighlighting_EXPORTS
# ifdef KF6SyntaxHighlighting_EXPORTS
/* We are building this library */
# define KSYNTAXHIGHLIGHTING_EXPORT Q_DECL_EXPORT
# else
@@ -43,8 +41,6 @@
#define KSYNTAXHIGHLIGHTING_DECL_DEPRECATED_TEXT(text) __declspec(deprecated(text))
#define ECM_GENERATEEXPORTHEADER_VERSION_VALUE(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
/* Take any defaults from group settings */
#if !defined(KSYNTAXHIGHLIGHTING_NO_DEPRECATED) && !defined(KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT)
# ifdef KF_NO_DEPRECATED
@@ -88,7 +84,7 @@
#define KSYNTAXHIGHLIGHTING_BUILD_DEPRECATED_SINCE(major, minor) 1
#ifdef KSYNTAXHIGHLIGHTING_NO_DEPRECATED
# define KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT 0x56700
# define KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT KSYNTAXHIGHLIGHTING_VERSION
#endif
#ifdef KSYNTAXHIGHLIGHTING_NO_DEPRECATED_WARNINGS
# define KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE 0
@@ -98,7 +94,7 @@
# ifdef KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT
# define KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT
# else
# define KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE 0x56700
# define KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE KSYNTAXHIGHLIGHTING_VERSION
# endif
#endif
@@ -107,112 +103,9 @@
#endif
#ifdef KSYNTAXHIGHLIGHTING_DEPRECATED
# define KSYNTAXHIGHLIGHTING_ENABLE_DEPRECATED_SINCE(major, minor) (ECM_GENERATEEXPORTHEADER_VERSION_VALUE(major, minor, 0) > KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT)
# define KSYNTAXHIGHLIGHTING_ENABLE_DEPRECATED_SINCE(major, minor) (((major<<16)|(minor<<8)) > KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT)
#else
# define KSYNTAXHIGHLIGHTING_ENABLE_DEPRECATED_SINCE(major, minor) 0
#endif
#if KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE >= 0x55700
# define KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_5_87(text) KSYNTAXHIGHLIGHTING_DECL_DEPRECATED_TEXT(text)
#else
# define KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_5_87(text)
#endif
#define KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_5(minor, text) KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_5_##minor(text)
#define KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION(major, minor, text) KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_##major(minor, "Since "#major"."#minor". " text)
#define KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_BELATED(major, minor, textmajor, textminor, text) KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_##major(minor, "Since "#textmajor"."#textminor". " text)
// Not yet implemented for MSVC
#define KSYNTAXHIGHLIGHTING_ENUMERATOR_DEPRECATED_VERSION(major, minor, text)
#define KSYNTAXHIGHLIGHTING_ENUMERATOR_DEPRECATED_VERSION_BELATED(major, minor, textmajor, textminor, text)
#endif /* KSYNTAXHIGHLIGHTING_EXPORT_H */
#ifndef ECM_GENERATEEXPORTHEADER_KSYNTAXHIGHLIGHTING_EXPORT_H
#define ECM_GENERATEEXPORTHEADER_KSYNTAXHIGHLIGHTING_EXPORT_H
#define KSYNTAXHIGHLIGHTING_DECL_DEPRECATED_TEXT(text) __declspec(deprecated(text))
#define ECM_GENERATEEXPORTHEADER_VERSION_VALUE(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
/* Take any defaults from group settings */
#if !defined(KSYNTAXHIGHLIGHTING_NO_DEPRECATED) && !defined(KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT)
# ifdef KF_NO_DEPRECATED
# define KSYNTAXHIGHLIGHTING_NO_DEPRECATED
# elif defined(KF_DISABLE_DEPRECATED_BEFORE_AND_AT)
# define KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT KF_DISABLE_DEPRECATED_BEFORE_AND_AT
# endif
#endif
#if !defined(KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT) && defined(KF_DISABLE_DEPRECATED_BEFORE_AND_AT)
# define KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT KF_DISABLE_DEPRECATED_BEFORE_AND_AT
#endif
#if !defined(KSYNTAXHIGHLIGHTING_NO_DEPRECATED_WARNINGS) && !defined(KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE)
# ifdef KF_NO_DEPRECATED_WARNINGS
# define KSYNTAXHIGHLIGHTING_NO_DEPRECATED_WARNINGS
# elif defined(KF_DEPRECATED_WARNINGS_SINCE)
# define KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE KF_DEPRECATED_WARNINGS_SINCE
# endif
#endif
#if !defined(KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE) && defined(KF_DEPRECATED_WARNINGS_SINCE)
# define KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE KF_DEPRECATED_WARNINGS_SINCE
#endif
#if defined(KSYNTAXHIGHLIGHTING_NO_DEPRECATED)
# undef KSYNTAXHIGHLIGHTING_DEPRECATED
# define KSYNTAXHIGHLIGHTING_DEPRECATED_EXPORT KSYNTAXHIGHLIGHTING_EXPORT
# define KSYNTAXHIGHLIGHTING_DEPRECATED_NO_EXPORT KSYNTAXHIGHLIGHTING_NO_EXPORT
#elif defined(KSYNTAXHIGHLIGHTING_NO_DEPRECATED_WARNINGS)
# define KSYNTAXHIGHLIGHTING_DEPRECATED
# define KSYNTAXHIGHLIGHTING_DEPRECATED_EXPORT KSYNTAXHIGHLIGHTING_EXPORT
# define KSYNTAXHIGHLIGHTING_DEPRECATED_NO_EXPORT KSYNTAXHIGHLIGHTING_NO_EXPORT
#else
# define KSYNTAXHIGHLIGHTING_DEPRECATED KSYNTAXHIGHLIGHTING_DECL_DEPRECATED
# define KSYNTAXHIGHLIGHTING_DEPRECATED_EXPORT KSYNTAXHIGHLIGHTING_DECL_DEPRECATED_EXPORT
# define KSYNTAXHIGHLIGHTING_DEPRECATED_NO_EXPORT KSYNTAXHIGHLIGHTING_DECL_DEPRECATED_NO_EXPORT
#endif
/* No deprecated API had been removed from build */
#define KSYNTAXHIGHLIGHTING_EXCLUDE_DEPRECATED_BEFORE_AND_AT 0
#define KSYNTAXHIGHLIGHTING_BUILD_DEPRECATED_SINCE(major, minor) 1
#ifdef KSYNTAXHIGHLIGHTING_NO_DEPRECATED
# define KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT 0x56700
#endif
#ifdef KSYNTAXHIGHLIGHTING_NO_DEPRECATED_WARNINGS
# define KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE 0
#endif
#ifndef KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE
# ifdef KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT
# define KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT
# else
# define KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE 0x56700
# endif
#endif
#ifndef KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT
# define KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT 0
#endif
#ifdef KSYNTAXHIGHLIGHTING_DEPRECATED
# define KSYNTAXHIGHLIGHTING_ENABLE_DEPRECATED_SINCE(major, minor) (ECM_GENERATEEXPORTHEADER_VERSION_VALUE(major, minor, 0) > KSYNTAXHIGHLIGHTING_DISABLE_DEPRECATED_BEFORE_AND_AT)
#else
# define KSYNTAXHIGHLIGHTING_ENABLE_DEPRECATED_SINCE(major, minor) 0
#endif
#if KSYNTAXHIGHLIGHTING_DEPRECATED_WARNINGS_SINCE >= 0x55700
# define KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_5_87(text) KSYNTAXHIGHLIGHTING_DECL_DEPRECATED_TEXT(text)
#else
# define KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_5_87(text)
#endif
#define KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_5(minor, text) KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_5_##minor(text)
#define KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION(major, minor, text) KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_##major(minor, "Since "#major"."#minor". " text)
#define KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_BELATED(major, minor, textmajor, textminor, text) KSYNTAXHIGHLIGHTING_DEPRECATED_VERSION_##major(minor, "Since "#textmajor"."#textminor". " text)
// Not yet implemented for MSVC
#define KSYNTAXHIGHLIGHTING_ENUMERATOR_DEPRECATED_VERSION(major, minor, text)
#define KSYNTAXHIGHLIGHTING_ENUMERATOR_DEPRECATED_VERSION_BELATED(major, minor, textmajor, textminor, text)
#endif /* ECM_GENERATEEXPORTHEADER_KSYNTAXHIGHLIGHTING_EXPORT_H */

View File

@@ -8,4 +8,5 @@ name = "pypi"
[packages]
click = "~= 8.0"
jinja2 = "~= 3.0"
lxml = "*"
PyYAML = "*"

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
<!DOCTYPE language
[
<!-- NOTE See https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#variable-references -->
<!ENTITY var_ref_re "[/\.\+\-_0-9A-Za-z]+">
@@ -12,7 +12,7 @@
SPDX-FileCopyrightText: 2004 Alexander Neundorf <neundorf@kde.org>
SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>
SPDX-FileCopyrightText: 2007, 2008, 2013, 2014 Matthew Woehlke <mw_triad@users.sourceforge.net>
SPDX-FileCopyrightText: 2013-2015, 2017-2020 Alex Turbov <i.zaufi@gmail.com>
SPDX-FileCopyrightText: 2013-2015, 2017-2023 Alex Turbov <i.zaufi@gmail.com>
SPDX-License-Identifier: LGPL-2.0-or-later
-->
@@ -26,7 +26,7 @@
<language
name="CMake"
version="<!--{version}-->"
kateversion="5.0"
kateversion="5.62"
section="Other"
extensions="CMakeLists.txt;*.cmake;*.cmake.in"
style="CMake"
@@ -94,6 +94,13 @@
<item><!--{ expr }--></item>
<!--[- endfor ]-->
</list>
<!--[- for expr in complex_generator_expressions ]-->
<list name="genex-<!--{expr.name}-->-subcommands">
<!--[- for cmd in expr.subcommands ]-->
<item><!--{ cmd }--></item>
<!--[- endfor ]-->
</list>
<!--[- endfor ]-->
<list name="standard-modules">
<!--[- for module in modules.utility ]-->
@@ -135,7 +142,7 @@
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
<DetectSpaces/>
<DetectSpaces />
<!--[ for command in commands -]-->
<WordDetect String="<!--{command.name}-->" insensitive="true" attribute="<!--{command.attribute}-->" context="<!--{command.name}-->_ctx"<!--[ if command.start_region ]--> beginRegion="<!--{command.start_region}-->"<!--[ endif -]--> <!--[- if command.end_region ]--> endRegion="<!--{command.end_region}-->"<!--[ endif ]--> />
<!--[ endfor -]-->
@@ -427,11 +434,22 @@
<DetectChar attribute="Comment" context="Comment" char="#" />
<DetectChar attribute="Generator Expression" context="#pop" char="&gt;" />
<keyword attribute="Generator Expression Keyword" context="#stay" String="generator-expressions" insensitive="false" />
<!--[- for expr in complex_generator_expressions ]-->
<WordDetect String="<!--{expr.name}-->" attribute="Generator Expression Keyword" context="genex_<!--{expr.name}-->_ctx" />
<!--[- endfor ]-->
<IncludeRules context="Detect Aliased Targets" />
<IncludeRules context="Detect Variable Substitutions" />
<DetectIdentifier />
</context>
<!--[- for expr in complex_generator_expressions ]-->
<context attribute="Generator Expression" lineEndContext="#stay" name="genex_<!--{expr.name}-->_ctx" fallthroughContext="#pop">
<DetectChar char=":" context="#stay" />
<DetectSpaces />
<keyword attribute="Generator Expression Sub-Command" context="#pop" String="genex-<!--{expr.name}-->-subcommands" insensitive="false" />
</context>
<!--[- endfor ]-->
</contexts>
<itemDatas>
@@ -460,6 +478,7 @@
<itemData name="Environment Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Standard Environment Variable" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Generator Expression Keyword" defStyleNum="dsKeyword" color="#b84040" selColor="#b84040" spellChecking="false" />
<itemData name="Generator Expression Sub-Command" defStyleNum="dsKeyword" color="#c05050" selColor="#c05050" spellChecking="false" />
<itemData name="Generator Expression" defStyleNum="dsOthers" color="#b86050" selColor="#b86050" spellChecking="false" />
<itemData name="Standard Module" defStyleNum="dsImport" spellChecking="false" />
<itemData name="Deprecated Module" defStyleNum="dsImport" spellChecking="false" />

View File

@@ -1,4 +1,4 @@
version: 44
version: 50
global-properties:
- ALLOW_DUPLICATE_CUSTOM_TARGETS
@@ -112,11 +112,12 @@ target-properties:
- AUTOGEN_BUILD_DIR
- AUTOGEN_ORIGIN_DEPENDS # Since 3.14
- AUTOGEN_TARGET_DEPENDS
- AUTOMOC_COMPILER_PREDEFINES # Since ???
- AUTOGEN_USE_SYSTEM_INCLUDE # Since 3.27
- AUTOMOC_COMPILER_PREDEFINES # Since 3.10
- AUTOMOC_DEPEND_FILTERS
- AUTOMOC_EXECUTABLE # Since 3.14
- AUTOMOC_MACRO_NAMES
- AUTOMOC_MOC_OPTIONS # Since ???
- AUTOMOC_MOC_OPTIONS
- AUTOMOC_PATH_PREFIX # Since 3.16
- AUTOMOC
- AUTOUIC
@@ -154,14 +155,23 @@ target-properties:
- <CONFIG>_POSTFIX
- CROSSCOMPILING_EMULATOR
- CUDA_ARCHITECTURES # Since 3.18
- CUDA_CUBIN_COMPILATION # Since 3.27
- CUDA_EXTENSIONS
- CUDA_FATBIN_COMPILATION # Since 3.27
- CUDA_OPTIX_COMPILATION # Since 3.27
- CUDA_PTX_COMPILATION
- CUDA_SEPARABLE_COMPILATION
- CUDA_RESOLVE_DEVICE_SYMBOLS
- CUDA_RUNTIME_LIBRARY # Since 3.17
- CUDA_EXTENSIONS
- CUDA_STANDARD
- CUDA_STANDARD_REQUIRED
- CXX_EXTENSIONS
- CXX_MODULE_DIRS # Since 3.28
- CXX_MODULE_DIRS_<NAME> # Since 3.28
- CXX_MODULE_SET # Since 3.28
- CXX_MODULE_SET_<NAME> # Since 3.28
- CXX_MODULE_SETS # Since 3.28
- CXX_SCAN_FOR_MODULES # Since 3.28
- CXX_STANDARD
- CXX_STANDARD_REQUIRED
# - DEBUG_POSTFIX # NOTE: Handled by `<CONFIG>_POSTFIX`
@@ -170,6 +180,7 @@ target-properties:
- DEPLOYMENT_REMOTE_DIRECTORY
- DEPRECATION # Since 3.17
- DISABLE_PRECOMPILE_HEADERS # Since 3.16
- DLL_NAME_WITH_SOVERSION # Since 3.27
- DOTNET_SDK # Since 3.23
- DOTNET_TARGET_FRAMEWORK # Since 3.17
- DOTNET_TARGET_FRAMEWORK_VERSION # Since 3.12
@@ -234,10 +245,12 @@ target-properties:
- INSTALL_REMOVE_ENVIRONMENT_RPATH # Since 3.16
- INSTALL_RPATH
- INSTALL_RPATH_USE_LINK_PATH
- INTERFACE_AUTOMOC_MACRO_NAMES # Since 3.27
- INTERFACE_AUTOUIC_OPTIONS
- INTERFACE_COMPILE_DEFINITIONS
- INTERFACE_COMPILE_FEATURES
- INTERFACE_COMPILE_OPTIONS
- INTERFACE_CXX_MODULE_SETS # Since 3.28
- INTERFACE_HEADER_SETS # Since 3.23
- INTERFACE_HEADER_SETS_TO_VERIFY # Since 3.24
- INTERFACE_INCLUDE_DIRECTORIES
@@ -261,6 +274,7 @@ target-properties:
- JOB_POOL_LINK
- LABELS
- <LANG>_CLANG_TIDY
- <LANG>_CLANG_TIDY_EXPORT_FIXES_DIR # Since 3.26
- <LANG>_COMPILER_LAUNCHER
- <LANG>_CPPCHECK # Since 3.10
- <LANG>_CPPLINT
@@ -451,18 +465,22 @@ test-properties:
- FIXTURES_CLEANUP
- FIXTURES_REQUIRED
- FIXTURES_SETUP
- GENERATED_RESOURCE_SPEC_FILE # Since 3.28
- LABELS
- MEASUREMENT
- PASS_REGULAR_EXPRESSION
- PROCESSOR_AFFINITY # Since 3.12
- PROCESSORS
- REQUIRED_FILES
- RESOURCE_GROUPS # Since 3.16
- RESOURCE_LOCK
- RUN_SERIAL
- SKIP_REGULAR_EXPRESSION # Since 3.16
- SKIP_RETURN_CODE
- TIMEOUT
- TIMEOUT_AFTER_MATCH
- TIMEOUT_SIGNAL_GRACE_PERIOD # Since 3.27
- TIMEOUT_SIGNAL_NAME # Since 3.27
- WILL_FAIL
- WORKING_DIRECTORY
@@ -473,6 +491,7 @@ source-properties:
- COMPILE_DEFINITIONS
- COMPILE_FLAGS
- COMPILE_OPTIONS # Since 3.11
- CXX_SCAN_FOR_MODULES # Since 3.28
- EXTERNAL_OBJECT
- Fortran_FORMAT
- Fortran_PREPROCESS # Since 3.18
@@ -490,6 +509,7 @@ source-properties:
- SKIP_AUTOMOC
- SKIP_AUTORCC
- SKIP_AUTOUIC
- SKIP_LINTING # Since 3.27
- SKIP_PRECOMPILE_HEADERS # Since 3.16
- SKIP_UNITY_BUILD_INCLUSION # Since 3.16
- Swift_DEPENDENCIES_FILE # Since 3.15
@@ -535,76 +555,155 @@ install-properties:
- CPACK_WIX_ACL
generator-expressions:
# Boolean Generator Expressions
# * Logical Operators
# Conditional Expressions
- IF
- 0
- 1
- BOOL
# Logical Operators
- AND
- OR
- NOT
# * String Comparisons
# String Comparisons
- STREQUAL
- EQUAL
- IN_LIST # Since 3.12
# Version Comparisons
- VERSION_LESS
- VERSION_GREATER
- VERSION_EQUAL
- VERSION_LESS_EQUAL
- VERSION_GREATER_EQUAL
# * Path Comparisons
- PATH_EQUAL # Since 3.24
# * Path Queries
# * Path Decomposition
# * Path Transformations
# TODO Need a bit deeper genex parsing to get sub-commands of `PATH`
- PATH # Since 3.24
# * Variable Queries
- TARGET_EXISTS # Since 3.12
- CONFIG
- PLATFORM_ID
- C_COMPILER_ID
- CXX_COMPILER_ID
- CUDA_COMPILER_ID # Since 3.15
- Fortran_COMPILER_ID
- C_COMPILER_VERSION
- CXX_COMPILER_VERSION
- CUDA_COMPILER_VERSION # Since 3.15
- Fortran_COMPILER_VERSION
- TARGET_POLICY
- COMPILE_FEATURES
- COMPILE_LANG_AND_ID # Since 3.15
- COMPILE_LANGUAGE
- LINK_LANG_AND_ID # Since 3.18
- LINK_LANGUAGE # Since 3.18
- DEVICE_LINK # Since 3.18
- HOST_LINK # Since 3.18
- LINK_LIBRARY # Since 3.24
- LINK_GROUP # Since 3.24
# String-Valued Generator Expressions
# * Escaped Characters
- ANGLE-R
- COMMA
- SEMICOLON
# * Conditional Expressions
- IF
# * String Transformations
# String Transformations
- LOWER_CASE
- UPPER_CASE
- MAKE_C_IDENTIFIER
# List Expressions
# * List Comparisons
- IN_LIST # Since 3.12
- name: LIST # Since 3.27
subcommands:
# * List Queries
- LENGTH
- GET
- SUBLIST
- FIND
# * List Transformations
- JOIN
- APPEND
- PREPEND
- INSERT
- POP_BACK
- POP_FRONT
- REMOVE_ITEM
- REMOVE_AT
- REMOVE_DUPLICATES
- FILTER
- TRANSFORM
- FRANSFORM
# * List Ordering
- REVERSE
- SORT
- JOIN
- REMOVE_DUPLICATES # Since 3.15
- FILTER # Since 3.15
- LOWER_CASE
- UPPER_CASE
- GENEX_EVAL # Since 3.12
- TARGET_GENEX_EVAL # Since 3.12
# * Variable Queries (NOTE Already included above)
# * Target-Dependent Queries
# Path Expressions
# * Path Comparisons
- PATH_EQUAL # Since 3.24
- name: PATH # Since 3.24
subcommands:
# * Path Queries
- HAS_ROOT_NAME
- HAS_ROOT_DIRECTORY
- HAS_ROOT_PATH
- HAS_FILENAME
- HAS_EXTENSION
- HAS_STEM
- HAS_RELATIVE_PART
- HAS_PARENT_PATH
- IS_ABSOLUTE
- IS_RELATIVE
- IS_PREFIX
# * Path Decomposition
- GET_ROOT_NAME
- GET_ROOT_DIRECTORY
- GET_ROOT_PATH
- GET_FILENAME
- GET_EXTENSION
- GET_STEM
- GET_RELATIVE_PART
- GET_PARENT_PATH
# * Path Transformations
- CMAKE_PATH
- APPEND
- REMOVE_FILENAME
- REPLACE_FILENAME
- REMOVE_EXTENSION
- REPLACE_EXTENSION
- NORMAL_PATH
- RELATIVE_PATH
- ABSOLUTE_PATH
# Shell Paths
- SHELL_PATH
# Configuration Expressions
- CONFIG
- OUTPUT_CONFIG # Since 3.20
- COMMAND_CONFIG # Since 3.20
# Toolchain And Language Expressions
# * Platform
- PLATFORM_ID
# * Compiler Version
- C_COMPILER_VERSION
- CXX_COMPILER_VERSION
- CUDA_COMPILER_VERSION # Since 3.15
- OBJC_COMPILER_VERSION # Since 3.16
- OBJCXX_COMPILER_VERSION # Since 3.16
- Fortran_COMPILER_VERSION
- HIP_COMPILER_VERSION # Since 3.21
- ISPC_COMPILER_VERSION # Since 3.19
# * Compiler Language And ID
- C_COMPILER_ID
- CXX_COMPILER_ID
- CUDA_COMPILER_ID # Since 3.15
- OBJC_COMPILER_ID # Since 3.16
- OBJCXX_COMPILER_ID # Since 3.16
- Fortran_COMPILER_ID
- HIP_COMPILER_ID # Since 3.21
- ISPC_COMPILER_ID # Since 3.19
- COMPILE_LANGUAGE # Since 3.3
- COMPILE_LANG_AND_ID # Since 3.15
# * Compile Features
- COMPILE_FEATURES
# * Compile Context
- COMPILE_ONLY # Since 3.27
# * Linker Language And ID
- LINK_LANGUAGE # Since 3.18
- LINK_LANG_AND_ID # Since 3.18
# * Link Features
- LINK_LIBRARY # Since 3.24
- LINK_GROUP # Since 3.24
# * Link Context
- LINK_ONLY
- DEVICE_LINK # Since 3.18
- HOST_LINK # Since 3.18
# Target-Dependent Expressions
- TARGET_EXISTS # Since 3.12
- TARGET_NAME_IF_EXISTS # Since 3.12
- TARGET_NAME
- TARGET_PROPERTY
- TARGET_OBJECTS
- TARGET_POLICY
- TARGET_FILE
- TARGET_FILE_BASE_NAME # Since 3.15
- TARGET_FILE_PREFIX # Since 3.15
- TARGET_FILE_SUFFIX # Since 3.15
- TARGET_FILE_NAME
- TARGET_FILE_DIR
- TARGET_IMPORT_FILE # Since 3.27
- TARGET_IMPORT_FILE_BASE_NAME # Since 3.27
- TARGET_IMPORT_FILE_PREFIX # Since 3.27
- TARGET_IMPORT_FILE_SUFFIX # Since 3.27
- TARGET_IMPORT_FILE_NAME # Since 3.27
- TARGET_IMPORT_FILE_DIR # Since 3.27
- TARGET_LINKER_FILE
- TARGET_LINKER_FILE_BASE_NAME # Since 3.15
- TARGET_LINKER_FILE_PREFIX # Since 3.15
@@ -612,7 +711,6 @@ generator-expressions:
- TARGET_LINKER_FILE_NAME
- TARGET_LINKER_FILE_DIR
- TARGET_SONAME_FILE
- TARGET_SONAME_FILE
- TARGET_SONAME_FILE_NAME
- TARGET_SONAME_FILE_DIR
- TARGET_PDB_FILE
@@ -622,19 +720,22 @@ generator-expressions:
- TARGET_BUNDLE_DIR_NAME # Since 3.24
- TARGET_BUNDLE_DIR
- TARGET_BUNDLE_CONTENT_DIR
- TARGET_PROPERTY
- TARGET_RUNTIME_DLLS # Since 3.21
- INSTALL_PREFIX
# Output-Related Expressions
- TARGET_NAME
- LINK_ONLY
- TARGET_RUNTIME_DLL_DIRS # Since 3.27
# Export And Install Expressions
- INSTALL_INTERFACE
- BUILD_INTERFACE
- MAKE_C_IDENTIFIER
- TARGET_OBJECTS
- SHELL_PATH
- OUTPUT_CONFIG # Since 3.20
- COMMAND_CONFIG # Since 3.20
- BUILD_LOCAL_INTERFACE # Since 3.26
- INSTALL_PREFIX
# Multi-level Expression Evaluation
- GENEX_EVAL # Since 3.12
- TARGET_GENEX_EVAL # Since 3.12
# Escaped Characters
- ANGLE-R
- COMMA
- SEMICOLON
# Deprecated Expressions
# - CONFIGURATION
variables:
# Variables that Provide Information
@@ -686,6 +787,7 @@ variables:
- CMAKE_JOB_POOL_LINK
- CMAKE_JOB_POOLS # Since 3.11
- CMAKE_<LANG>_COMPILER_AR
- CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT # Since 3.14
- CMAKE_<LANG>_COMPILER_RANLIB
- CMAKE_LINK_LIBRARY_SUFFIX
- CMAKE_LINK_SEARCH_END_STATIC
@@ -735,9 +837,17 @@ variables:
- CMAKE_VS_NsightTegra_VERSION
- CMAKE_VS_NUGET_PACKAGE_RESTORE # Since 3.23
- CMAKE_VS_PLATFORM_NAME
- CMAKE_VS_PLATFORM_NAME_DEFAULT # Since 3.14.3
- CMAKE_VS_PLATFORM_TOOLSET
- CMAKE_VS_PLATFORM_TOOLSET_CUDA
- CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
- CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR # Since 3.16
- CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE # Since 3.8
- CMAKE_VS_PLATFORM_TOOLSET_VERSION # Since 3.12
- CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER # Since 3.22
- CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION # Since 3.22
- CMAKE_VS_TARGET_FRAMEWORK_VERSION # Since 3.22
- CMAKE_VS_VERSION_BUILD_NUMBER # Since 3.26
- CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION # Since 3.27
- CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
- CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM # Since 3.19
- CMAKE_XCODE_BUILD_SYSTEM # Since 3.19
@@ -766,6 +876,7 @@ variables:
# Variables that Change Behavior
- BUILD_SHARED_LIBS
- CMAKE_ABSOLUTE_DESTINATION_FILES
- CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY # Since 3.27
- CMAKE_APPBUNDLE_PATH
- CMAKE_AUTOMOC_RELAXED_MODE
- CMAKE_BACKWARDS_COMPATIBILITY
@@ -973,16 +1084,20 @@ variables:
- CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
- CMAKE_AUTOGEN_ORIGIN_DEPENDS # Since 3.14
- CMAKE_AUTOGEN_PARALLEL
- CMAKE_AUTOGEN_USE_SYSTEM_INCLUDE # Since 3.27
- CMAKE_AUTOGEN_VERBOSE # Since 3.13
- CMAKE_AUTOMOC
- CMAKE_AUTOMOC_DEPEND_FILTERS
- CMAKE_AUTOMOC_MOC_OPTIONS
- CMAKE_AUTOMOC_PATH_PREFIX # Since 3.16
- CMAKE_AUTOMOC_EXECUTABLE # Since 3.27
- CMAKE_AUTORCC
- CMAKE_AUTORCC_OPTIONS
- CMAKE_AUTORCC_EXECUTABLE # Since 3.27
- CMAKE_AUTOUIC
- CMAKE_AUTOUIC_OPTIONS
- CMAKE_AUTOUIC_SEARCH_PATHS
- CMAKE_AUTOUIC_EXECUTABLE # Since 3.27
- CMAKE_BUILD_RPATH
- CMAKE_BUILD_RPATH_USE_ORIGIN # Since 3.14
- CMAKE_BUILD_WITH_INSTALL_NAME_DIR
@@ -993,14 +1108,17 @@ variables:
- CMAKE_<CONFIG>_POSTFIX
- CMAKE_CROSS_CONFIGS # Since 3.17
- CMAKE_CTEST_ARGUMENTS # Since 3.17
- CMAKE_CUDA_SEPARABLE_COMPILATION # Since 3.11
- CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS # Since 3.16
- CMAKE_CUDA_RUNTIME_LIBRARY # Since 3.17
- CMAKE_CUDA_SEPARABLE_COMPILATION # Since 3.11
- CMAKE_CXX_SCAN_FOR_MODULES # Since 3.28
- CMAKE_DEBUG_POSTFIX
- CMAKE_DEFAULT_BUILD_TYPE # Since 3.17
- CMAKE_DEFAULT_CONFIGS # Since 3.17
- CMAKE_DISABLE_PRECOMPILE_HEADERS # Since 3.17
- CMAKE_ENABLE_EXPORTS
- CMAKE_DLL_NAME_WITH_SOVERSION # Since 3.27
# `CMAKE_ENABLE_EXPORTS` has been moved to deprecated section
- CMAKE_EXECUTABLE_ENABLE_EXPORTS # Since 3.27
- CMAKE_EXE_LINKER_FLAGS
- CMAKE_EXE_LINKER_FLAGS_<CONFIG>
- CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT
@@ -1024,8 +1142,8 @@ variables:
- CMAKE_INSTALL_RPATH_USE_LINK_PATH
- CMAKE_INTERPROCEDURAL_OPTIMIZATION
- CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
- CMAKE_IOS_INSTALL_COMBINED
- CMAKE_<LANG>_CLANG_TIDY
- CMAKE_<LANG>_CLANG_TIDY_EXPORT_FIXES_DIR # Since 3.26
- CMAKE_<LANG>_COMPILER_LAUNCHER
- CMAKE_<LANG>_CPPCHECK # Since 3.10
- CMAKE_<LANG>_CPPLINT
@@ -1044,6 +1162,9 @@ variables:
- CMAKE_LIBRARY_PATH_FLAG
- CMAKE_LINK_DEF_FILE_FLAG
- CMAKE_LINK_DEPENDS_NO_SHARED
- CMAKE_LINK_DEPENDS_USE_LINKER # Since 3.27
- CMAKE_LINK_GROUP_USING_<FEATURE> # Since 3.24
- CMAKE_LINK_GROUP_USING_<FEATURE>_SUPPORTED # Since 3.24
- CMAKE_LINK_INTERFACE_LIBRARIES
- CMAKE_LINK_LIBRARY_FILE_FLAG
- CMAKE_LINK_LIBRARY_FLAG
@@ -1072,9 +1193,11 @@ variables:
- CMAKE_PCH_INSTANTIATE_TEMPLATES # Since 3.19
- CMAKE_PDB_OUTPUT_DIRECTORY
- CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG>
- CMAKE_PLATFORM_NO_VERSIONED_SONAME # Since 3.1
- CMAKE_POSITION_INDEPENDENT_CODE
- CMAKE_RUNTIME_OUTPUT_DIRECTORY
- CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
- CMAKE_SHARED_LIBRARY_ENABLE_EXPORTS # Since 3.27
- CMAKE_SHARED_LINKER_FLAGS
- CMAKE_SHARED_LINKER_FLAGS_<CONFIG>
- CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT
@@ -1095,6 +1218,10 @@ variables:
- CMAKE_USE_RELATIVE_PATHS
- CMAKE_VERIFY_INTERFACE_HEADER_SETS # Since 3.24
- CMAKE_VISIBILITY_INLINES_HIDDEN
- CMAKE_VS_DEBUGGER_COMMAND # Since 3.27
- CMAKE_VS_DEBUGGER_COMMAND_ARGUMENTS # Since 3.27
- CMAKE_VS_DEBUGGER_ENVIRONMENT # Since 3.27
- CMAKE_VS_DEBUGGER_WORKING_DIRECTORY # Since 3.27
- CMAKE_VS_GLOBALS # Since 3.13
- CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
- CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
@@ -1137,6 +1264,7 @@ variables:
- CMAKE_Fortran_MODOUT_FLAG
- CMAKE_HIP_ARCHITECTURES # Since 3.21
- CMAKE_HIP_EXTENSIONS # Since 3.21
- CMAKE_HIP_PLATFORM # Since 3.28
- CMAKE_HIP_STANDARD # Since 3.21
- CMAKE_HIP_STANDARD_REQUIRED # Since 3.21
- CMAKE_ISPC_HEADER_DIRECTORY # Since 3.19
@@ -1533,6 +1661,41 @@ variables:
- CPACK_COMMAND_HDIUTIL
- CPACK_COMMAND_SETFILE
- CPACK_COMMAND_REZ
# [built-in]: CPack Inno Setup Generator (Since 3.27)
- CPACK_INNOSETUP_USE_CMAKE_BOOL_FORMAT
- CPACK_INNOSETUP_ARCHITECTURE
- CPACK_INNOSETUP_INSTALL_ROOT
- CPACK_INNOSETUP_ALLOW_CUSTOM_DIRECTORY
- CPACK_INNOSETUP_PROGRAM_MENU_FOLDER
- CPACK_INNOSETUP_LANGUAGES
- CPACK_INNOSETUP_IGNORE_LICENSE_PAGE
- CPACK_INNOSETUP_IGNORE_README_PAGE
- CPACK_INNOSETUP_PASSWORD
- CPACK_INNOSETUP_USE_MODERN_WIZARD
- CPACK_INNOSETUP_ICON_FILE
- CPACK_INNOSETUP_SETUP_<directive>
- CPACK_INNOSETUP_CUSTOM_INSTALL_INSTRUCTIONS
- CPACK_INNOSETUP_MENU_LINKS
- CPACK_INNOSETUP_CREATE_UNINSTALL_LINK
- CPACK_INNOSETUP_RUN_EXECUTABLES
- CPACK_INNOSETUP_<compName>_INSTALL_DIRECTORY
- CPACK_INNOSETUP_VERIFY_DOWNLOADS
- CPACK_INNOSETUP_EXECUTABLE
- CPACK_INNOSETUP_EXECUTABLE_ARGUMENTS
- CPACK_INNOSETUP_DEFINE_<macro>
- CPACK_INNOSETUP_EXTRA_SCRIPTS
- CPACK_INNOSETUP_CODE_FILES
# [built-in]: CPack FreeBSD Generator (Since 3.10)
- CPACK_FREEBSD_PACKAGE_NAME
- CPACK_FREEBSD_PACKAGE_COMMENT
- CPACK_FREEBSD_PACKAGE_DESCRIPTION
- CPACK_FREEBSD_PACKAGE_WWW
- CPACK_FREEBSD_PACKAGE_LICENSE
- CPACK_FREEBSD_PACKAGE_LICENSE_LOGIC
- CPACK_FREEBSD_PACKAGE_MAINTAINER
- CPACK_FREEBSD_PACKAGE_ORIGIN
- CPACK_FREEBSD_PACKAGE_CATEGORIES
- CPACK_FREEBSD_PACKAGE_DEPS
# -CPackExt (Since 3.13)
- CPACK_EXTERNAL_REQUESTED_VERSIONS
- CPACK_EXTERNAL_ENABLE_STAGING
@@ -1970,6 +2133,7 @@ variables:
- CUPS_INCLUDE_DIR
# - FindCURL
- CURL_NO_CURL_CMAKE
- CURL_USE_STATIC_LIBS # Since 3.28
# - FindCurses
- CURSES_CFLAGS
- CURSES_HAVE_CURSES_H
@@ -1989,7 +2153,6 @@ variables:
- CXXTEST_TESTGEN_EXECUTABLE
- CXXTEST_TESTGEN_INTERPRETER
# - FindCygwin
# - FindDart
# - FindDCMTK
# - FindDevIL
# - FindDoxygen
@@ -1997,6 +2160,7 @@ variables:
# - FindEnvModules
- EnvModules_COMMAND
# - FindEXPAT
- EXPAT_USE_STATIC_LIBS # Since 3.28
# - FindFLEX
- FLEX_EXECUTABLE
# - FindFLTK
@@ -2598,6 +2762,11 @@ deprecated-or-internal-variables:
- CMAKE_OBJDUMP
# Mentioned in "Deprecated and Removed Features" of release notes 3.21
- CMAKE_SYSTEM_ARCH
# Superseded by `CMAKE_EXECUTABLE_ENABLE_EXPORTS`
- CMAKE_ENABLE_EXPORTS
- CMAKE_IOS_INSTALL_COMBINED # Since 3.28
# https://cmake.org/cmake/help/latest/manual/cmake-env-variables.7.html
# NOTE Added to syntax file version 14 at 3.15.0 version of CMake
@@ -2614,6 +2783,7 @@ environment-variables:
- CMAKE_COLOR_DIAGNOSTICS # Since 3.24
- CMAKE_CONFIGURATION_TYPES # Since 3.22
- CMAKE_CONFIG_TYPE
- CMAKE_CROSSCOMPILING_EMULATOR # Since 3.28
- CMAKE_EXPORT_COMPILE_COMMANDS # Since 3.17
- CMAKE_GENERATOR
- CMAKE_GENERATOR_INSTANCE
@@ -2657,11 +2827,13 @@ environment-variables:
# Environment Variables for CTest
- CMAKE_CONFIG_TYPE
- CTEST_INTERACTIVE_DEBUG_MODE
- CTEST_NO_TESTS_ACTION # Since 3.26
- CTEST_OUTPUT_ON_FAILURE
- CTEST_PARALLEL_LEVEL
- CTEST_PROGRESS_OUTPUT
- CTEST_USE_LAUNCHERS_DEFAULT
- DASHBOARD_TEST_FROM_CTEST
# Environment Variables for the CMake curses interface
- CCMAKE_COLORS
# Here are the `find_package` specific variables described at the
# https://cmake.org/cmake/help/latest/command/find_package.html
@@ -2731,6 +2903,7 @@ scripting-commands:
, OS_RELEASE
, OS_VERSION
, OS_PLATFORM
, MSYSTEM_PREFIX # Since 3.28
# Since 3.22
, DISTRIB_INFO
, DISTRIB_<name>
@@ -3380,6 +3553,8 @@ scripting-commands:
, CHECK_START
, CHECK_PASS
, CHECK_FAIL
# Since 3.26
, CONFIGURE_LOG
]
-
name: option
@@ -3520,10 +3695,12 @@ project-commands:
, COMMENT
, DEPFILE
, JOB_POOL # Since 3.15
, JOB_SERVER_AWARE # Since 3.28
, VERBATIM
, APPEND
, USES_TERMINAL
, COMMAND_EXPAND_LISTS
, DEPENDS_EXPLICIT_ONLY # Since 3.27
, TARGET
, PRE_BUILD
, PRE_LINK
@@ -3543,6 +3720,7 @@ project-commands:
, COMMENT
, DEPFILE
, JOB_POOL # Since 3.15
, JOB_SERVER_AWARE # Since 3.28
, VERBATIM
, APPEND
, USES_TERMINAL
@@ -3587,6 +3765,9 @@ project-commands:
, TARGET
]
has-target-name-after-kw: TARGET
-
name: cmake_file_api # Since 3.27
named-args: [QUERY, API_VERSION, CODEMODEL, CACHE, CMAKEFILES, TOOLCHAINS]
-
name: create_test_sourcelist
named-args: [EXTRA_INCLUDE, FUNCTION]
@@ -3614,6 +3795,7 @@ project-commands:
ASM
, ASM-ATT
, ASM_NASM
, ASM_MARMASM # Since 3.26
, ASM_MASM
, C
, CSharp
@@ -3650,6 +3832,7 @@ project-commands:
property-args: &get_target_property [target-properties]
-
name: get_test_property
named-args: [DIRECTORY] # Since 3.28
property-args: &get_test_property [test-properties]
-
name: include_directories
@@ -3741,7 +3924,7 @@ project-commands:
named-args: [AFTER, BEFORE]
-
name: link_libraries
named-args: [debug, optimized, general]
special-args: &link_libraries_sa [debug, optimized, general]
-
name: load_cache
named-args: [READ_WITH_PREFIX, EXCLUDE, INCLUDE_INTERNALS]
@@ -3793,7 +3976,10 @@ project-commands:
first-args-are-targets?: true # NOTE Multiple target args
-
name: set_tests_properties
named-args: [PROPERTIES]
named-args: [
DIRECTORY # Since 3.28
, PROPERTIES
]
property-args: *get_test_property
-
name: source_group
@@ -3888,6 +4074,7 @@ project-commands:
, cuda_std_17
, cuda_std_20
, cuda_std_23 # Since 3.21
, cuda_std_26 # Since 3.25
]
first-arg-is-target?: true
-
@@ -3913,6 +4100,7 @@ project-commands:
-
name: target_link_libraries
named-args: *target_compile_definitions
special-args: *link_libraries_sa
first-arg-is-target?: true
-
name: target_link_options
@@ -3935,6 +4123,10 @@ project-commands:
, BASE_DIRS
, FILES
]
special-args: [
HEADERS
, CXX_MODULES # Since 3.28
]
first-arg-is-target?: true
-
name: try_compile
@@ -3959,6 +4151,9 @@ project-commands:
, SOURCE_FROM_CONTENT
, SOURCE_FROM_VAR
, SOURCE_FROM_FILE
# Since 3.26
, LOG_DESCRIPTION
, NO_LOG
]
-
name: try_run
@@ -3987,6 +4182,9 @@ project-commands:
, NO_CACHE
, RUN_OUTPUT_STDOUT_VARIABLE
, RUN_OUTPUT_STDERR_VARIABLE
# Since 3.26
, LOG_DESCRIPTION
, NO_LOG
]
ctest-commands:
@@ -4150,7 +4348,6 @@ modules:
- CTestCoverageCollectGCOV
- CTestScriptMode
- CTestUseLaunchers
- Dart
- DeployQt4
- ExternalData
- ExternalProject
@@ -4196,7 +4393,6 @@ modules:
- FindCVS
- FindCxxTest
- FindCygwin
- FindDart
- FindDCMTK
- FindDevIL
- FindDoxygen
@@ -4339,6 +4535,7 @@ modules:
- CMakeExpandImportedTargets
- CMakeForceCompiler
- CMakeParseArguments
- Dart # Since 3.27
- Documentation
- MacroAddFileDependencies
- TestCXXAcceptsFlag
@@ -4350,6 +4547,7 @@ modules:
- WriteCompilerDetectionHeader
# Deprecated Find Modules
- FindCUDA
- FindDart # Since 3.27
- FindPythonInterp
- FindPythonLibs
- FindQt
@@ -4773,6 +4971,7 @@ standard-module-commands:
- BUILD_IN_SOURCE
- BUILD_ALWAYS
- BUILD_BYPRODUCTS
- BUILD_JOB_SERVER_AWARE # Since 3.28
- INSTALL_COMMAND
- TEST_COMMAND
- TEST_BEFORE_INSTALL
@@ -4800,6 +4999,7 @@ standard-module-commands:
- INDEPENDENT_STEP_TARGETS
- LIST_SEPARATOR
- COMMAND
- INSTALL_BYPRODUCTS # Since 3.26
special-args: [IGNORED, OPTIONAL, REQUIRED, CHECKOUT, REBASE, REBASE_CHECKOUT]
property-args: *get_target_property
- name: ExternalProject_Get_Property
@@ -4814,6 +5014,7 @@ standard-module-commands:
- INDEPENDENT
- BYPRODUCTS
- ALWAYS
- JOB_SERVER_AWARE # Since 3.28
- EXCLUDE_FROM_MAIN
- WORKING_DIRECTORY
- LOG
@@ -4901,7 +5102,10 @@ standard-module-commands:
- UPDATE_DISCONNECTED
- PATCH_COMMAND
- SOURCE_SUBDIR
- OVERRIDE_FIND_PACKAGE
- FIND_PACKAGE_ARGS
- SYSTEM
- EXCLUDE_FROM_ALL # Since 3.28
-
name: FetchContent_Populate
named-args:
@@ -5169,7 +5373,12 @@ standard-module-commands:
# FindDoxygen
-
name: doxygen_add_docs
named-args: [ALL, USE_STAMP_FILE, WORKING_DIRECTORY, COMMENT]
named-args:
- ALL
- USE_STAMP_FILE
- WORKING_DIRECTORY
- COMMENT
- CONFIG_FILE # Since 3.27
# FindEnvModules
-
name: env_module
@@ -5248,6 +5457,7 @@ standard-module-commands:
named-args: *pkgcm
-
name: pkg_get_variable
named-args: [DEFINE_VARIABLES] # Since 3.28
# FindProtobuf
-
name: protobuf_generate_cpp

View File

@@ -3,25 +3,31 @@
#
# Generate Kate syntax file for CMake
#
# SPDX-FileCopyrightText: 2017-2020 Alex Turbov <i.zaufi@gmail.com>
# SPDX-FileCopyrightText: 2017-2023 Alex Turbov <i.zaufi@gmail.com>
#
# To install prerequisites:
#
# $ pip install --user click jinja2 pyyaml
# $ pip install --user click jinja2 lxml pyyaml
#
# To use:
#
# $ ./generate-cmake-syntax.py cmake.yaml > ../syntax/cmake.xml
#
from __future__ import annotations
import functools
import re
from dataclasses import dataclass, field
import click
import jinja2
import re
import yaml
import sys
from lxml import etree
_TEMPLATED_NAME = re.compile('<[^>]+>')
_TEMPLATED_NAME = re.compile(r'(?:<[^>]+>)')
_PROPERTY_KEYS = [
'global-properties'
, 'directory-properties'
@@ -33,7 +39,7 @@ _PROPERTY_KEYS = [
]
_KW_RE_LIST = ['kw', 're']
_VAR_KIND_LIST = ['variables', 'deprecated-or-internal-variables', 'environment-variables']
_CONTROL_FLOW_LIST = set((
_CONTROL_FLOW_LIST = {
'break'
, 'continue'
, 'elseif'
@@ -45,39 +51,226 @@ _CONTROL_FLOW_LIST = set((
, 'if'
, 'return'
, 'while'
))
}
_VAR_REF_ENTITY = '&var_ref_re;'
_HEURISTICS = [
(
{'MAX(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?', 'MIN(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?'}
, 'M(AX|IN)(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?'
)
, ({'OUTPUTS', 'OUTPUT_(HEADER|SOURCE)'}, 'OUTPUT(S|_(HEADER|SOURCE))')
, ({'PREFIX', 'SUFFIX'}, '(PRE|SUF)FIX')
, ({'CPPCHECK', 'CPPLINT'}, 'CPP(CHECK|LINT)')
, ({'DEPENDS', 'PREDEPENDS'}, '(PRE)?DEPENDS')
, ({'ICON', 'ICONURL'}, 'ICON(URL)?')
, (
{
'&var%ref%re;(_INIT)?'
, 'DEBUG(_INIT)?'
, 'MINSIZEREL(_INIT)?'
, 'RELEASE(_INIT)?'
, 'RELWITHDEBINFO(_INIT)?'
}
, '(DEBUG|MINSIZEREL|REL(EASE|WITHDEBINFO)|&var%ref%re;)(_INIT)?'
)
, ({'RELEASE', 'RELWITHDEBINFO'}, 'REL(EASE|WITHDEBINFO)')
, ({'POST', 'POSTUN', 'PRE', 'PREUN'}, 'P(RE|OST)(UN)?')
, ({'AUTOPROV', 'AUTOREQ', 'AUTOREQPROV'}, 'AUTO(PROV|REQ(PROV)?)')
, ({'DEFINITIONS', 'OPTIONS'}, '(DEFINI|OP)TIONS')
, ({'LIB_NAMES', 'LIBRARY'}, 'LIB(_NAMES|RARY)')
, ({'EXTENSIONS', 'EXTRA_FLAGS'}, 'EXT(ENSIONS|RA_FLAGS)')
, ({'DISABLED', 'DISPLAY_NAME'}, 'DIS(ABLED|PLAY_NAME)')
, ({'LIBRARIES', 'LINK_LIBRARIES', 'STATIC_LINK_LIBRARIES'}, '((STATIC_)?LINK_)?LIBRARIES')
, ({'INCLUDE_DIRS', 'LIBRARY_DIRS'}, '(INCLUDE|LIBRARY)_DIRS')
, ({'BINARY_DIR', 'SOURCE_DIR'}, '(BINARY|SOURCE)_DIR')
, ({'CFLAGS(_OTHER)?', 'LDFLAGS(_OTHER)?'}, '(C|LD)FLAGS(_OTHER)?')
, ({'INCLUDE_DIRECTORIES', 'LIBRARIES'}, '(INCLUDE_DIRECTO|LIBRA)RIES')
, ({'POSTFLIGHT_&var%ref%re;_SCRIPT', 'PREFLIGHT_&var%ref%re;_SCRIPT'}, 'P(RE|OST)FLIGHT_&var%ref%re;_SCRIPT')
, ({'DIRECTORIES', 'FRAMEWORK_DIRECTORIES'}, '(FRAMEWORK_)?DIRECTORIES')
, ({'FILE_FLAG', 'FILE'}, 'FILE(_FLAG)?')
, ({'DIR_PERMISSIONS', 'FILE_PERMISSIONS'}, '(DIR|FILE)_PERMISSIONS')
, ({'COMPILER_LAUNCHER', 'LINKER_LAUNCHER'}, '(COMPIL|LINK)ER_LAUNCHER')
, ({'COMPILER', 'COMPILE_(DEFINI|OP)TIONS'}, 'COMPILE(R|_(DEFINI|OP)TIONS)')
, ({'LICENSEURL', 'LICENSE_(EXPRESSION|FILE_NAME)'}, 'LICENSE(URL|_(EXPRESSION|FILE_NAME))')
, ({'NO_SONAME', 'SONAME'}, '(NO_)?SONAME')
, ({'CODE_SIGN_ON_COPY', 'REMOVE_HEADERS_ON_COPY'}, '(CODE_SIGN|REMOVE_HEADERS)_ON_COPY')
, ({'(REFERENCE|REFERENCEPROP_&var%ref%re;_TAG)_&var%ref%re;'}, 'REFERENCE(PROP_&var%ref%re;_TAG)?_&var%ref%re;')
, ({'DISABLE_FIND_PACKAGE', 'REQUIRE_FIND_PACKAGE'}, '(DISABLE|REQUIRE)_FIND_PACKAGE')
, (
{'GROUP_USING_&var%ref%re;(_SUPPORTED)?', 'LIBRARY_USING_&var%ref%re;(_SUPPORTED)?'}
, '(GROUP|LIBRARY)_USING_&var%ref%re;(_SUPPORTED)?'
)
, (
{
'EXE_LINKER_FLAGS_&var%ref%re;(_INIT)?'
, 'MODULE_LINKER_FLAGS_&var%ref%re;(_INIT)?'
, 'SHARED_LINKER_FLAGS_&var%ref%re;(_INIT)?'
, 'STATIC_LINKER_FLAGS_&var%ref%re;(_INIT)?'
}
, '(EXE|MODULE|SHARED|STATIC)_LINKER_FLAGS_&var%ref%re;(_INIT)?'
)
, (
{
'ARCHIVE_OUTPUT_DIRECTORY'
, 'COMPILE_PDB_OUTPUT_DIRECTORY'
, 'LIBRARY_OUTPUT_DIRECTORY'
, 'PDB_OUTPUT_DIRECTORY'
, 'RUNTIME_OUTPUT_DIRECTORY'
}
, '(ARCHIVE|(COMPILE_)?PDB|LIBRARY|RUNTIME)_OUTPUT_DIRECTORY'
)
, (
{
'ARCHIVE_OUTPUT_(DIRECTORY|NAME)'
, 'LIBRARY_OUTPUT_(DIRECTORY|NAME)'
, 'RUNTIME_OUTPUT_(DIRECTORY|NAME)'
}
, '(ARCHIVE|LIBRARY|RUNTIME)_OUTPUT_(DIRECTORY|NAME)'
)
, ({'ASM&var_ref_re;', 'ASM&var_ref_re;FLAGS'}, 'ASM&var_ref_re;(FLAGS)?')
, (
{
'CMAKE_POLICY_DEFAULT_CMP[0-9]{4}'
, 'CMAKE_POLICY_WARNING_CMP[0-9]{4}'
}
, 'CMAKE_POLICY_(DEFAULT|WARNING)_CMP[0-9]{4}'
)
, ({'CMAKE_ARGV[0-9]+', 'CMAKE_MATCH_[0-9]+'}, 'CMAKE_(ARGV|MATCH_)[0-9]+')
]
@dataclass
class RePartNode:
children: dict[str, RePartNode] = field(default_factory=dict, hash=False)
is_leaf: bool = False
def try_transform_placeholder_string_to_regex(name):
@dataclass
class RegexCollection:
special_cases: list[str] = field(default_factory=list, hash=False)
re_tree: dict[str, RePartNode] = field(default_factory=dict, hash=False)
def add_case(self, regex: str) -> RegexCollection:
self.special_cases.append(regex)
return self
def update_tree(self, name_parts: list[str]) -> RegexCollection:
safe_var_ref = _VAR_REF_ENTITY.replace('_', '%')
current = functools.reduce(
lambda current, part: (
self.re_tree if current is None else current.children
).setdefault(part, RePartNode())
, safe_var_ref.join(name_parts).replace(f'{safe_var_ref}_{safe_var_ref}', safe_var_ref).split('_')
, None
)
current.is_leaf = True
return self
def try_transform_placeholder_string_to_regex(state: RegexCollection, name: str):
'''
NOTE Some placeholders are not IDs, but numbers...
`CMAKE_MATCH_<N>` 4 example
'''
m = _TEMPLATED_NAME.split(name)
if 'CMAKE_MATCH_' in m:
return 'CMAKE_MATCH_[0-9]+'
name_parts = _TEMPLATED_NAME.split(name)
match name_parts:
case ['CMAKE_MATCH_' as head, ''] | ['CMAKE_ARGV' as head, ''] | ['ARGV' as head, '']:
return state.add_case(head + '[0-9]+')
if 'CMAKE_ARGV' in m:
return 'CMAKE_ARGV[0-9]+'
case ['CMAKE_POLICY_DEFAULT_CMP' as head, ''] | ['CMAKE_POLICY_WARNING_CMP' as head, '']:
return state.add_case(head + '[0-9]{4}')
if 'CMAKE_POLICY_DEFAULT_CMP' in m:
return 'CMAKE_POLICY_DEFAULT_CMP[0-9]{4}'
case ['', '__TRYRUN_OUTPUT']:
return state.add_case(f'{_VAR_REF_ENTITY}__TRYRUN_OUTPUT')
if 'CMAKE_POLICY_WARNING_CMP' in m:
return 'CMAKE_POLICY_WARNING_CMP[0-9]{4}'
case (['ASM', ''] | ['ASM', 'FLAGS']) as asm_env:
return state.add_case(f'{asm_env[0]}{_VAR_REF_ENTITY}{asm_env[1]}')
if 'ARGV' in m:
return 'ARGV[0-9]+'
return state.update_tree(name_parts)
return '&var_ref_re;'.join(m) if 1 < len(m) else name
def is_first_subset_of_second(first, second):
subset = set(first)
fullset = set(second)
return subset.issubset(fullset)
def try_optimize_known_alt_groups(groups: list[str]) -> list[str]:
for case in _HEURISTICS:
if is_first_subset_of_second(case[0], groups):
groups = sorted([*filter(lambda item: item not in case[0], groups), case[1]])
return groups
def try_optimize_trailing_var_ref_regex(groups: list[str]) -> list[str]:
tail_var_ref_re = '_' + _VAR_REF_ENTITY.replace('_', '%')
candidates = [*filter(lambda s: s.endswith(tail_var_ref_re), groups)]
return sorted([
*filter(lambda item: item not in candidates, groups)
, f'({"|".join(try_optimize_known_alt_groups([s[:-len(tail_var_ref_re)] for s in candidates]))}){tail_var_ref_re}'
]) if len(candidates) > 1 else groups
def build_regex(state: list[str], kv: tuple[str, RePartNode]) -> list[str]:
name, value = kv
match (value, len(value.children)):
case (RePartNode(children={}, is_leaf=True), 0):
return [*state, name]
case (node, sz) if sz > 0:
alt_group = try_optimize_known_alt_groups(
try_optimize_trailing_var_ref_regex(
functools.reduce(build_regex, node.children.items(), [])
)
)
match (len(alt_group), node.is_leaf):
case (1, False):
return [*state, f'{name}_{alt_group[0]}']
case (1, True):
return [*state, f'{name}(_{alt_group[0]})?']
case (sz, False) if sz > 0:
return [*state, f'{name}_({"|".join(alt_group)})']
case (sz, True) if sz > 0:
return [*state, f'{name}(_({"|".join(alt_group)}))?']
case _:
raise AssertionError('Zero children?')
case _:
raise AssertionError(f'NOT MATCHED: {name=}{value=}')
return state
def try_placeholders_to_regex(names):
if not names:
return None
l = map(try_transform_placeholder_string_to_regex, names)
l = sorted(l, reverse=True)
return '\\b(?:' + '|'.join(l) + ')\\b'
data = functools.reduce(
try_transform_placeholder_string_to_regex
, names
, RegexCollection()
)
return (
'\\b(?:'
+ '|'.join(
try_optimize_known_alt_groups(
try_optimize_trailing_var_ref_regex(
functools.reduce(
build_regex
, data.re_tree.items()
, data.special_cases
)
)
)
).replace('%', '_')
+ ')\\b'
)
def partition_iterable(fn, iterable):
@@ -287,7 +480,8 @@ def cli(input_yaml, template):
del data['standard-module-commands']
# Fix node names to be accessible from Jinja template
data['generator_expressions'] = data['generator-expressions']
data['generator_expressions'] = (ex for ex in data['generator-expressions'] if isinstance(ex, str))
data['complex_generator_expressions'] = [ex for ex in data['generator-expressions'] if not isinstance(ex, str)]
data['deprecated_or_internal_variables'] = data['deprecated-or-internal-variables']
data['environment_variables'] = data['environment-variables']
del data['generator-expressions']

View File

@@ -0,0 +1,143 @@
#!/usr/bin/perl
# This perl script read stdin and write on stdout. It shall be an XML language file.
#
# * If the name of the language is 'HTML', then it creates the language 'PHP (HTML)'
# which shall be used for PHP hl.
#
# * If the name of the language is something else (say '*'), it creates the language '*/PHP'.
# This new language is the same as the old one, but is able to detect PHP everywhere.
#
# This script will correctly set extensions & mimetype, and will replace
# <IncludeRules context="##*"> by <IncludeRules context="##*/PHP">
#
# Generated languages need a language named 'PHP/PHP', which shall take care of PHP hl itself
# and which will be called every time something like <?php is encountred.
#
# This script also supports Twig and does the same as for PHP.
#
# SPDX-FileCopyrightText: Jan Villat <jan.villat@net2000.ch>
# License: LGPL
my $file = "";
open(my $input, '<:encoding(UTF-8)', $ARGV[0])
or die "Could not open file '$ARGV[0]': $!";
open(my $output, '>:encoding(UTF-8)', $ARGV[1])
or die "Could not open file '$ARGV[1]': $!";
my $language = $ARGV[1];
if ($language =~ /-php\.xml$/)
{
$language = "PHP";
}
else
{
$language = "Twig";
}
while (<$input>)
{
$file .= $_;
}
$warning = "\n\n<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT ***** -->\n";
$file =~ s/(?=<language)/$warning\n\n\n/;
$file =~ /<language.*?name="([^"]+)"/;
my $syntaxName = $1;
if ($syntaxName eq "HTML")
{
$root = 1;
}
if ($language eq "Twig")
{
$file =~ s/<language([^>]+)priority="[^"]*"/<language$1/s;
}
if ($root == 1)
{
$file =~ s/<language([^>]+)name="[^"]*"/<language$1name="$language (HTML)"/s;
$file =~ s/<language([^>]+)section="[^"]*"/<language$1section="Scripts"/s;
if ($language eq "PHP")
{
$file =~ s/<language([^>]+)extensions="[^"]*"/<language$1extensions="*.php;*.php3;*.wml;*.phtml;*.phtm;*.inc;*.ctp"/s;
$file =~ s/<language([^>]+)mimetype="[^"]*"/<language$1mimetype="text\/x-php4-src;text\/x-php3-src;text\/vnd.wap.wml;application\/x-php"/s;
$file =~ s/<language([^>]+)*/<language$1 indenter="cstyle"/s;
}
# Twig
else
{
$file =~ s/<language([^>]+)extensions="[^"]*"/<language$1extensions="*.twig;*.html.twig;*.htm.twig"/s;
$file =~ s/<language([^>]+)mimetype="[^"]*"/<language$1mimetype="text\/x-twig"/s;
}
}
else
{
$file =~ s/<language([^>]+)hidden="[^"]*"/<language$1/s;
$file =~ s/<language([^>]+)section="[^"]*"/<language$1section="Other"/s;
my $extra = " hidden=\"true\"";
my $mimetype = "";
my $extensions = "";
if ($language eq "Twig")
{
$mimetype = "text/x-twig";
if ($syntaxName eq "JavaScript")
{
$extra = " priority=\"1\"";
$extensions = "*.js.twig;*.mjs.twig;*.cjs.twig";
}
elsif ($syntaxName eq "TypeScript")
{
$extra = " priority=\"1\"";
$extensions = "*.ts.twig;*.mts.twig;*.cts.twig";
}
}
$file =~ s/<language([^>]+)mimetype="[^"]*"/<language$1mimetype="$mimetype"/s;
$file =~ s/<language([^>]+)name="([^"]*)"/<language$1name="$2\/$language"$extra/s;
$file =~ s/<language([^>]+)extensions="[^"]*"/<language$1extensions="$extensions"/s;
}
# replace list with a include
$file =~ s/<list name="([^"]+)">.*?<\/list>/<list name="$1"><include>$1##$syntaxName<\/include><\/list>/gs;
$file =~ s/<language([^>]+)kateversion="[^"]*"/<language$1kateversion="5.79"/s;
$file =~ s/ fallthrough="(true|1)"//gs;
if ($language eq "Twig")
{
# remove Mustache syntax
if ($root == 1)
{
$file =~ s/<context name="MustacheJS.*?<\/context>//gs;
$file =~ s/<StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="[^"]+[^\/]+\/>//gs;
}
}
elsif ($root == 1 || $ARGV[0] =~ /mustache.xml$/)
{
$file =~ s/<(?:RegExpr (attribute="Processing Instruction" context="PI"|context="PI" attribute="Processing Instruction")|itemData name="Processing Instruction")[^\/]+\/>|<context name="PI".*?<\/context>//gs;
}
my $find_language = "##$language/$language";
my $language_suffix = "/$language";
if ($language eq "PHP")
{
$find_language = "FindPHP";
}
$file =~ s/<IncludeRules\s([^>]*)context="([^"#]*)##(?!Alerts|Comments|Doxygen|Modelines)([^"]+)"/<IncludeRules $1context="$2##$3$language_suffix"/g;
$file =~ s/(<context\s[^>]*[^>\/]>)/$1\n<IncludeRules context="$find_language" \/>/g;
$file =~ s/(<context\s[^>]*[^>\/])\s*\/>/$1>\n<IncludeRules context="$find_language" \/>\n<\/context>/g;
if ($language eq "PHP")
{
$findphp = "<context name=\"FindPHP\" attribute=\"Normal Text\" lineEndContext=\"#stay\">\n<Detect2Chars context=\"##PHP/PHP\" char=\"&lt;\" char1=\"?\" lookAhead=\"true\" />\n</context>\n";
$file =~ s/(?=<\/contexts\s*>)/$findphp/;
}
print $output $file;
print $output $warning;

View File

@@ -0,0 +1,55 @@
#!/usr/bin/env ruby
#
# Generates the keyword lists for directives and variables used in nginx and
# prints them to stdout, ready to be copy & pasted into nginx.xml.
#
# SPDX-FileCopyrightText: 2023 Georg Gadinger <nilsding@nilsding.org>
# SPDX-License-Identifier: MIT
#
# Usage:
# % ./generate-nginx-lists.rb
#
# if you want to install the required dependencies provide `INSTALL_GEMS` in
# your ENV:
# % INSTALL_GEMS=1 ./generate-nginx-lists.rb
require "bundler/inline"
gemfile(ENV["INSTALL_GEMS"]) do
source "https://rubygems.org"
gem "nokogiri", "~> 1.14"
gem "faraday", "~> 2.7"
gem "builder", "~> 3.2"
end
def fetch_vars(url)
Faraday.get(url)
.then { Nokogiri::HTML.parse _1.body }
.css("div#content a[href]")
.map(&:text)
.reject { _1.end_with?("_") } # some vars are just a prefix, ignore those
.sort
.uniq
end
def build_xml_list(name, url: nil, items: [])
builder = Builder::XmlMarkup.new(indent: 2)
builder.comment! "see #{url} for a full list of #{name}"
builder.list(name:) do |b|
items.each do |item|
b.item item
end
end
end
{
directives: "https://nginx.org/en/docs/dirindex.html",
variables: "https://nginx.org/en/docs/varindex.html",
}.each do |name, url|
items = fetch_vars(url)
puts build_xml_list(name, url:, items:).gsub(/^/, ' ' * 4)
puts
end

View File

@@ -1,78 +0,0 @@
#!/usr/bin/perl
# This perl script read stdin and write on stdout. It shall be an XML language file.
#
# * If the name of the language is 'HTML', then it creates the language 'PHP (HTML)'
# which shall be used for PHP hl.
#
# * If the name of the language is something else (say '*'), it creates the language '*/PHP'.
# This new language is the same as the old one, but is able to detect PHP everywhere.
#
# This script will correctly set extensions & mimetype, and will replace
# <IncludeRules context="##*"> by <IncludeRules context="##*/PHP">
#
# Generated languages need a language named 'PHP/PHP', which shall take care of PHP hl itself
# and which will be called every time something like <?php is encountred.
#
# SPDX-FileCopyrightText: Jan Villat <jan.villat@net2000.ch>
# License: LGPL
my $file = "";
open(my $input, '<:encoding(UTF-8)', $ARGV[0])
or die "Could not open file '$ARGV[0]': $!";
open(my $output, '>:encoding(UTF-8)', $ARGV[1])
or die "Could not open file '$ARGV[1]': $!";
while (<$input>)
{
$file .= $_;
}
$warning = "\n\n<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT ***** -->\n";
$file =~ s/(?=<language)/$warning\n\n\n/;
if ($file =~ /<language[^>]+name="HTML"/)
{
$root = 1;
}
if ($root == 1)
{
$file =~ s/<language([^>]+)name="[^"]*"/<language$1name="PHP (HTML)"/s;
$file =~ s/<language([^>]+)section="[^"]*"/<language$1section="Scripts"/s;
$file =~ s/<language([^>]+)extensions="[^"]*"/<language$1extensions="*.php;*.php3;*.wml;*.phtml;*.phtm;*.inc;*.ctp"/s;
$file =~ s/<language([^>]+)mimetype="[^"]*"/<language$1mimetype="text\/x-php4-src;text\/x-php3-src;text\/vnd.wap.wml;application\/x-php"/s;
$file =~ s/<language([^>]+)*/<language$1 indenter="cstyle"/s;
}
else
{
if ($file =~ /<language[^>]+hidden="[^"]*"/) {
$file =~ s/<language([^>]+)name="([^"]*)"/<language$1name="$2\/PHP"/s;
$file =~ s/<language([^>]+)hidden="[^"]*"/<language$1hidden="true"/s;
}
else
{
$file =~ s/<language([^>]+)name="([^"]*)"/<language$1name="$2\/PHP" hidden="true"/s;
}
$file =~ s/<language([^>]+)section="[^"]*"/<language$1section="Other"/s;
$file =~ s/<language([^>]+)extensions="[^"]*"/<language$1extensions=""/s;
$file =~ s/<language([^>]+)mimetype="[^"]*"/<language$1mimetype=""/s;
}
if ($root == 1 || $ARGV[0] =~ /mustache.xml$/)
{
$file =~ s/<(?:RegExpr (attribute="Processing Instruction" context="PI"|context="PI" attribute="Processing Instruction")|itemData name="Processing Instruction")[^\/]+\/>|<context name="PI".*?<\/context>//gs;
}
$findphp = "<context name=\"FindPHP\" attribute=\"Normal Text\" lineEndContext=\"#stay\">\n<Detect2Chars context=\"##PHP/PHP\" char=\"&lt;\" char1=\"?\" lookAhead=\"true\" />\n</context>\n";
$file =~ s/<IncludeRules\s([^>]*)context="([^"#]*)##(?!Alerts|Comments|Doxygen|Modelines)([^"]+)"/<IncludeRules $1context="$2##$3\/PHP"/g;
$file =~ s/(<context\s[^>]*[^>\/]>)/$1\n<IncludeRules context="FindPHP" \/>/g;
$file =~ s/(<context\s[^>]*[^>\/])\s*\/>/$1>\n<IncludeRules context="FindPHP" \/>\n<\/context>/g;
$file =~ s/(?=<\/contexts\s*>)/$findphp/;
print $output $file;
print $output $warning;

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!DOCTYPE language>
<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT *****
cd data/generators
# increase version of spdx-comments.xml.tpl then

View File

@@ -0,0 +1,498 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2023 Jonathan Poelen <jonathan.poelen@gmail.com>
# SPDX-License-Identifier: MIT
from pathlib import Path
from collections import defaultdict
from typing import TextIO
import re
import sys
exclude_line = {
' - non-standard\n',
' - experimental\n',
' - deprecated\n',
'page-type: css-combinator\n',
'page-type: css-selector\n',
'page-type: css-module\n',
'page-type: landing-page\n',
'page-type: guide\n',
}
page_type_accepted = {
'page-type: css-type\n',
'page-type: css-function\n',
'page-type: css-property\n',
'page-type: css-keyword\n',
'page-type: css-shorthand-property\n',
'page-type: css-pseudo-element\n',
'page-type: css-pseudo-class\n',
'page-type: css-at-rule-descriptor\n',
'page-type: css-at-rule\n',
'page-type: css-media-feature\n',
'page-type: svg-attribute\n',
}
exclude_title = {
'<alpha-value>',
'<angle>',
'<angle-percentage>',
'<basic-shape>',
'<calc-constant>',
'<calc-sum>',
'<color-interpolation-method>',
'<color>',
'<custom-ident>',
'<dashed-ident>',
'<display-listitem>',
'<display-inside>',
'<dimension>',
'<easing-function>'
'<filter-function>',
'<flex>',
'<frequency-percentage>',
'<frequency>',
'<gradient>',
'<hex-color>',
'<hue>',
'<hue-interpolation-method>',
'<ident>',
'<image>',
'<integer>',
'<length>',
'<length-percentage>',
'<number>',
'<percentage>',
'<position>',
'<ratio>',
'<resolution>',
'<string>',
'<time-percentage>',
'<time>',
'<transform-function>',
'"!important"',
}
properties_ignore_value = (
'counter-increment',
'counter-reset',
'counter-set',
'text-rendering',
'page',
)
units: list[str] = []
colors: set[str] = set()
system_colors: set[str] = set()
deprecated_system_colors: set[str] = set()
values: set[str] = set()
properties: set[str] = set()
svg_values: set[str] = set()
svg_properties: set[str] = set()
functions: set[str] = set()
pseudo_classes: set[str] = set()
pseudo_elements: set[str] = set()
experimental_pseudo_classes: set[str] = set()
experimental_pseudo_elements: set[str] = set()
at_rules: set[str] = set()
media_features: set[str] = set()
media_feature_values: set[str] = set()
_update_version_extractor = re.compile(r' version="(\d+)" ')
def update_version(s: str) -> str:
return _update_version_extractor.sub(lambda m: f' version="{int(m[1])+1}" ', s, count=1)
_md_value_extractor = re.compile(r'(?<=[^\w][ /])`([-\w][-\w\d]+(?:<[^>]+>[?+*])?)`')
_html_value_extractor = re.compile(r'<code>([-\w][-\w\d]+)</code>')
_is_md_value = re.compile(r'^\s*- `')
_is_html_table_desc = re.compile(r'^\s+<td><code>')
def css_parse_values(f: TextIO, prop: str, values: set[str]) -> None:
line:str = ''
# Format:
# ## Syntax or ### Syntax
#
# ```css
# (optional)
# ```
# ## Values or ### Values or not...
#
# - `ident` or html table <td><code>....</code></td>
#
# ## SVG only ... (optional)
# ## other title
for line in f:
if line.endswith('## Syntax\n') or line.endswith('## Values\n') or '## SVG only' in line:
for line in f:
if _is_md_value.match(line):
if 'deprecated' not in line:
values.update(_md_value_extractor.findall(line))
elif line.startswith('#'):
if not (line.endswith('## Values\n') or '## SVG only' in line
or (prop == 'display'
and (line.endswith('## Grouped values\n')
or line.endswith('## Outside\n')
or line.endswith('## Inside\n')
or line.endswith('## List Item\n')
or line.endswith('## Internal\n')
or line.endswith('## Box\n')
or line.endswith('## Precomposed\n')
))
):
return
elif line == '```css\n':
for line in f:
if line.startswith('```\n'):
break
elif _is_html_table_desc.match(line):
values.update(_html_value_extractor.findall(line))
def css_parse_named_colors(f: TextIO) -> set[str]:
return set(re.findall('\n <td>(?:\n )?<code>([a-z]+)</code>', f.read()))
def css_parse_units(f: TextIO) -> list[str]:
return re.findall(r'`([^`]+)`', ''.join(re.findall(r'\n\| (`[^|]+)', f.read())))
_svg_values_extractor = re.compile(r'<th scope="row">Value</th>\n\s*<td>(.*?)</td>', re.DOTALL)
_svg_value_extractor = re.compile(r'<code>([-\w\d]+)</code>')
def css_parse_svg_attribute(f: TextIO, prop: str, properties: set[str], values: set[str]) -> None:
contents = f.read()
if 'can be used as a CSS property' in contents:
properties.add(prop)
m = _svg_values_extractor.search(contents)
if m:
values.update(_svg_value_extractor.findall(m[1]))
_experimental_selector_extractor = re.compile(r'\n- {{CSSxRef([^}]+)}} {{Experimental_Inline}}')
_selector_extractor = re.compile(r'":+([-\w\d]+)[()]*"')
def css_parse_pseudo_classes_or_elements(f: TextIO) -> tuple[
set[str], # experimental
list[str]
]:
s = f.read()
experimental_str = ''.join(_experimental_selector_extractor.findall(s))
return (set(_selector_extractor.findall(experimental_str)), _selector_extractor.findall(s))
if len(sys.argv) < 5:
print(f'''{Path(sys.argv[0]).name} content-main-directory syntax/css.xml sass-site-directory syntax/scss.xml
content-main-directory is https://github.com/mdn/content/ (https://github.com/mdn/content/archive/refs/heads/main.zip)
sass-site-directory is https://github.com/sass/sass-site/tree/main (https://github.com/sass/sass-site/archive/refs/heads/main.zip)
''', file=sys.stderr)
exit(1)
css_dir = Path(sys.argv[1])
css_filename = Path(sys.argv[2])
scss_dir = Path(sys.argv[3])
scss_filename = Path(sys.argv[4])
tmp_pseudo_classes = (set(), ())
tmp_pseudo_elements = (set(), ())
for pattern in (
'files/en-us/web/svg/attribute/**/',
'files/en-us/web/css/**/',
):
for md in css_dir.glob(pattern):
with open(md/'index.md', encoding='utf8') as f:
if f.readline() != '---\n':
continue
title = f.readline()[7:-1]
if title in exclude_title:
continue
if title.startswith('"'):
title = title[1:-1]
page_type = ''
for line in f:
if line in exclude_line:
page_type = ''
break
if line.startswith('page-type: '):
if line not in page_type_accepted:
raise Exception(f'Unknown {line[:-1]}')
page_type = line[11:-1]
if line == '---\n':
break
if page_type == 'css-property' or page_type == 'css-at-rule-descriptor':
properties.add(title)
if not title.endswith('-name') and title not in properties_ignore_value:
css_parse_values(f, title, values)
elif page_type == 'css-shorthand-property':
properties.add(title)
elif page_type == 'css-pseudo-class':
pseudo_classes.add(title[1:].removesuffix('()'))
elif page_type == 'css-pseudo-element':
pseudo_elements.add(title[2:].removesuffix('()'))
elif page_type == 'css-type':
if title == '<named-color>':
colors = css_parse_named_colors(f)
if title == '<system-color>':
css_parse_values(f, '', system_colors)
deprecated_system_colors = set(re.findall('\n- `([^`]+)` {{deprecated_inline}}', f.read()))
else:
css_parse_values(f, '', values)
elif page_type == 'css-function':
functions.add(title[:-2])
elif page_type == 'css-at-rule':
at_rules.add(title)
elif page_type == 'css-media-feature':
media_features.add(title)
css_parse_values(f, title, media_feature_values)
elif page_type == 'css-keyword':
values.add(title)
elif title == 'CSS values and units':
units = css_parse_units(f)
elif title == 'Pseudo-classes':
tmp_pseudo_classes = css_parse_pseudo_classes_or_elements(f)
elif title == 'Pseudo-elements':
tmp_pseudo_elements = css_parse_pseudo_classes_or_elements(f)
elif page_type == 'svg-attribute':
css_parse_svg_attribute(f, title, svg_properties, svg_values)
elif title == 'CSS value functions':
functions.update(re.findall(r'\n- {{CSSxRef\("[^"]+", "([-\w\d]+)\(\)"\)}}\n', f.read()))
experimental_pseudo_classes = tmp_pseudo_classes[0]
experimental_pseudo_classes -= pseudo_classes
pseudo_classes.update(tmp_pseudo_classes[1])
experimental_pseudo_elements = tmp_pseudo_elements[0]
experimental_pseudo_elements -= pseudo_elements
pseudo_elements.update(tmp_pseudo_elements[1])
global_values = {
'auto',
'inherit',
'initial',
'revert',
'revert-layer',
'unset',
}
values -= global_values
svg_values -= global_values
pseudo_classes -= experimental_pseudo_classes
pseudo_elements -= experimental_pseudo_elements
# add values of functions
values.update((
# repeat()
'auto-fill',
'auto-fit',
))
# move some keyword colors in values
for special_color in ('transparent', 'currentcolor'):
values.add(special_color)
colors.discard(special_color)
# fix not specified value in mdn file
if 'user-invalid' in experimental_pseudo_classes:
pseudo_classes.discard('user-valid')
experimental_pseudo_classes.add('user-valid')
media_features.update((
'min-width',
'max-width',
'min-height',
'max-height',
))
# fix errors in mdn file
for e in ('has', 'host-context'):
pseudo_classes.add(e)
experimental_pseudo_classes.discard(e)
# @font-format functions
functions.update((
'format',
'local',
'tech',
))
# def show(name, values):
# print(f'{name} ({len(values)}):')
# print('\n'.join(sorted(values)), end='\n\n')
#
# show('properties', properties)
# show('svg properties', svg_properties)
# show('values', values)
# show('svg values', svg_values)
# show('global values', global_values)
# show('functions', functions)
# show('pseudo-classes', pseudo_classes)
# show('pseudo-elements', pseudo_elements)
# show('experimental pseudo-classes', experimental_pseudo_classes)
# show('experimental pseudo-elements', experimental_pseudo_elements)
# show('at-rules', at_rules)
# show('media-features', media_features)
# show('media-features values', media_feature_values)
# show('colors', colors)
# show('system colors', system_colors)
# show('deprecated system colors', deprecated_system_colors)
# show('units', units)
# print('units reg:', '|'.join(units))
#
# Update CSS
#
sep = '\n '
css_replacements = {
prop: f'</item>{sep}<item>'.join(sorted(seq))
for prop, seq in (
('properties', properties),
('values', values),
('value keywords', global_values),
('functions', functions),
('pseudo-classes', pseudo_classes),
('pseudo-elements', pseudo_elements),
('media features', media_features)
)
}
for prop, seq in (('properties', svg_properties - properties), ('values', svg_values - values)):
if seq:
items = f'</item>{sep}<item>'.join(sorted(seq))
css_replacements[prop] += f'</item>\n{sep}<!-- SVG only -->\n{sep}<item>{items}'
rep1 = f'</item>{sep}<item>'.join(sorted(colors))
rep2 = f'</item>{sep}<item>'.join(sorted(system_colors))
css_replacements['colors'] = f'{rep1}</item>{sep}{sep}<!-- System colors -->{sep}<item>{rep2}'
item_extractor = re.compile('<item>([^-<][^<]*)')
current_at_rules = set()
def _css_update_and_extract_items(m) -> str:
seq = css_replacements.get(m[1])
if seq:
end = ' ' if m[3] == '</list>' else sep
return f'<list name="{m[1]}">{sep}<item>{seq}</item>\n{end}{m[3]}'
current_at_rules.update(item_extractor.findall(m[2]))
return m[0]
css_content = css_filename.read_text()
original_css_content = css_content
names = f"{'|'.join(css_replacements)}|at-rules(?: definitions)?"
css_content = re.sub(rf'<list name="({names})">(.*?)(</list>|<!-- manual list -->)',
_css_update_and_extract_items, css_content, flags=re.DOTALL)
_regexpr_unit_prefix = r'(<RegExpr attribute="Unit".*?String="\(%\|\()'
regexpr_unit_extractor = re.compile(fr'{_regexpr_unit_prefix}([^)]+)')
css_content = regexpr_unit_extractor.sub('\\1' + "|".join(units), css_content, 1)
if original_css_content != css_content:
css_content = update_version(css_content)
css_filename.write_text(css_content)
def show_at_rule_difference(language: str, old_at_rules: set[str], new_at_rules: set[str]) -> None:
at_rule_added = new_at_rules - old_at_rules
at_rule_removed = old_at_rules - new_at_rules
nl = '\n '
if at_rule_added or at_rule_removed:
print(f"""\x1b[31m{language} At-rules requires a manual update
New ({len(at_rule_added)}):\x1b[0m
{nl.join(at_rule_added)}
\x1b[31mRemoved ({len(at_rule_removed)}):\x1b[0m
{nl.join(at_rule_removed)}""")
show_at_rule_difference('CSS', current_at_rules, at_rules)
#
# Extract SCSS data
#
scss_functions:list[str] = []
scss_at_rules:set[str] = {'@content', '@return'}
_function_list_extractor = re.compile(r'{% function (.*?) %}')
_function_extractor = re.compile(r"'([-._a-zA-Z0-9]+)\(")
_at_rule_extractor = re.compile(r'@[-a-z0-9]+')
for md in sorted(scss_dir.glob('source/documentation/modules/**/*.md')):
func_list = _function_list_extractor.findall(md.read_text())
func_items = set(_function_extractor.findall(''.join(func_list)))
scss_functions.append(f'\n{sep}<!-- {md.stem} -->')
scss_functions.extend(f'{sep}<item>{func}</item>' for func in sorted(func_items - functions))
for md in scss_dir.glob('source/documentation/at-rules/**/*.md'):
with open(md) as f:
f.readline()
scss_at_rules.update(_at_rule_extractor.findall(f.readline()))
subproperties = set(
'-'.join(splitted[i:n])
for prop in properties
for splitted in (prop.rsplit('-', prop.count('-') - 1) # '-aaa-bbb' -> ['-aaa', 'bbb']
if prop.startswith('-')
else prop.split('-'), ) # 'aaa-bbb' -> ['aaa', 'bbb']
for i in range(len(splitted))
for n in range(i+1, len(splitted)+1)
)
#
# Update SCSS
#
scss_current_at_rules = set()
def _scss_update_and_extract_items(m) -> str:
name = m[1]
if name == 'functions':
return f"""<list name="functions">
<include>functions##CSS</include>
<!-- https://sass-lang.com/documentation/modules/ -->{f''.join(scss_functions)}
</list>"""
if name == 'at-rules':
scss_current_at_rules.update(_at_rule_extractor.findall(m[2]))
return m[0]
# sub-properties
items = f'</item>{sep}<item>'.join(sorted(subproperties - properties))
return f'<list name="{name}">{sep}<item>{items}</item>\n </list>'
scss_content = scss_filename.read_text()
original_scss_content = scss_content
scss_content = re.sub(r'<list name="(sub-properties|functions|at-rules)">(.*?)</list>',
_scss_update_and_extract_items, scss_content, count=3, flags=re.DOTALL)
scss_content = re.sub(r'<!ENTITY pseudoclasses "[^"]*">',
f'<!ENTITY pseudoclasses "{"|".join(sorted(pseudo_classes))}">',
scss_content, count=1)
scss_content = regexpr_unit_extractor.sub('\\1' + "|".join(units), scss_content, 1)
if original_scss_content != scss_content:
scss_content = update_version(scss_content)
scss_filename.write_text(scss_content)
show_at_rule_difference('SCSS', scss_current_at_rules, scss_at_rules)

View File

@@ -0,0 +1,45 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2023 Jonathan Poelen <jonathan.poelen@gmail.com>
# SPDX-License-Identifier: MIT
from pathlib import Path
from urllib import request
import re
import sys
if len(sys.argv) < 1:
print(f'{sys.argv[0]} syntax/less.xml', file=sys.stderr)
exit(1)
#
# Extract functions
#
data = request.urlopen('https://lesscss.org/functions/').read().decode()
functions = re.findall(r'</a>([-_\w\d]+)</h3>', data, flags=re.DOTALL)
functions.append('%')
#
# Update syntax
#
sep = '\n '
new_list = f"""<list name="functions">
<include>functions##CSS</include>
<!-- Less functions, @see http://lesscss.org/functions/ -->
<item>{f'</item>{sep}<item>'.join(sorted(functions))}</item>
</list>"""
less_filename = Path(sys.argv[1])
less_content = less_filename.read_text()
original_less_content = less_content
less_content = re.sub(r'<list name="functions">.*?</list>',
new_list, less_content, count=1, flags=re.DOTALL)
if original_less_content != less_content:
less_content = re.sub(' version="(\d+)" ', lambda m: f' version="{int(m[1])+1}" ',
less_content, count=1)
less_filename.write_text(less_content)

View File

@@ -6,39 +6,22 @@
SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>
SPDX-FileCopyrightText: 2008 Wilbert Berendsen <info@wilbertberendsen.nl>
This file describes the XML format used for syntax highlight descriptions
for the Kate text editor (http://kate.kde.org), which is part of the KDE
desktop environment (http://www.kde.org).
You'll find the "Writing a Kate Highlighting XML File HOWTO" at
http://kate.kde.org/doc/hlhowto.php
This file describes the XML format used for syntax highlight descriptions
for the Kate text editor (https://kate-editor.org), which is part of the
KDE desktop environment (https://kde.org).
You'll find the "Working with Syntax Highlighting" at
https://docs.kde.org/stable5/en/kate/katepart/highlight.html
This format is identified using the SYSTEM identifier
SYSTEM "language.dtd"
You can validate your syntax files using "validatehl.sh yourSyntax.xml".
This needs xmllint from the libxml2 XML library.
Files using this format should include a DOCTYPE declaration like this:
<!DOCTYPE language SYSTEM "language.dtd">
You can validate your syntax files using "validatehl.sh yourSyntax.xml".
This needs xmllint from the libxml2 XML library.
In any case, the katehighlightingindexer will validate all files bundled
with KTextEditor during compile time and fail on errors.
To use your syntax file, copy it to ~/.local/share/katepart5/syntax/ in
your home directory. You have to open a new instance of kwrite/kate to use
the new syntax file.
In any case, the katehighlightingindexer will validate all files bundled
with KTextEditor during compile time and fail on errors.
TODO
- find a more readable way for the - -dtdvalid stuff, it's just annoying
xml comments don't allow it.
-->
<!--
Entity declarations
You can use '&per;' instead of '.'. This seems to be useful in <item> elements.
TODO
- Are there any more such pre-defined entities?
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!--
Default Styles
@@ -132,19 +115,12 @@
mimetype: A list of mimetypes to decide for which documents to use this syntax description [optional]
version: Version number of this syntax description
kateversion: Kate version required for using this file
casesensitive: Whether text is matched case sensitive. [boolean, optional, default=true] FIXME: This is not implemented yet
casesensitive: Ignored but preserved to maintain compatibility in older versions of KF5.
priority: Priority of this language, if more than one are usable for the file [optional]
author: Name of author of this hl file [optional]
license: License for this hl file [optional]
indenter: Name of the Indenter to use for this highlighting mode per default, like "cstyle" [optional]
hidden: Should it be hidden in menu [boolean, optional, default=false]
TODO
- Which matches are affected by casesensitive? keyword, RegExpr, StringDetect, WordDetect...?
WARNING: due to helper scripts, the language opening tag must be on a
*single line* and *cannot* be split in multiple lines.
-->
<xs:element name="language">
<xs:complexType>
@@ -160,6 +136,7 @@
<xs:attribute name="kateversion" use="required" type="xs:decimal"/>
<xs:attribute name="style"/>
<xs:attribute name="mimetype"/>
<!-- always ignored, <keywords casesensitive> must be used -->
<xs:attribute name="casesensitive" type="xs:boolean"/>
<xs:attribute name="priority" type="xs:integer"/>
<xs:attribute name="author"/>
@@ -317,20 +294,18 @@
context specification
name: The name of this context specification. Used in '*Context' attributes [optional]
attribute: The name of the ItemData to be used for matching text
lineEndContext: Next context if end of line is encountered
lineEmptyContext: Next context if an empty line is encountered [optional]
lineEndContext: Next context if end of line is encountered [optional, default='#stay']
lineEmptyContext: Next context if an empty line is encountered [optional, default=value of lineEndContext]
fallthrough: Use a fallthrough context [optional]
deprecated since 5.62 but preserved to maintain compatibility in older versions of KF5
fallthroughContext: Fall through to this context [optional]
fallthroughContext: Fall through to this context [optional, default='#stay']
dynamic: Dynamic context [boolean, optional]
deprecated since always but preserved to maintain compatibility in older versions of KF5
noIndentationBasedFolding: Python uses indentation based folding. However, Python has parts where
it does not use indentation based folding (e.g. for """ strings). In this case
switch to an own context and set this attribute to true. Then the indentation
based folding will ignore this parts and not change folding markers. [optional]
TODO:
- Explain fallthrough.
- Make lineEndContext optional, defaults to '#stay'. Reasonable?
it does not use indentation based folding (e.g. for """ strings). In this case
switch to an own context and set this attribute to true. Then the indentation
based folding will ignore this parts and not change folding markers. [optional]
stopEmptyLineContextSwitchLoop: Do not continue the context switching if an empty line is encountered. [boolean, optional, default=false]
-->
<xs:element name="context">
<xs:complexType>
@@ -356,11 +331,11 @@
</xs:choice>
<xs:attribute name="name"/>
<xs:attribute name="attribute" use="required"/>
<xs:attribute name="lineEndContext" use="required"/>
<xs:attribute name="lineEndContext"/>
<xs:attribute name="lineEmptyContext"/>
<xs:attribute name="fallthrough">
<xs:simpleType>
<!-- alway true since 5.62 -->
<!-- always true since 5.62 -->
<xs:restriction base="xs:token">
<xs:enumeration value="1"/>
<xs:enumeration value="true"/>
@@ -368,8 +343,11 @@
</xs:simpleType>
</xs:attribute>
<xs:attribute name="fallthroughContext"/>
<!-- always ignored -->
<xs:attribute name="dynamic" type="xs:boolean"/>
<xs:attribute name="noIndentationBasedFolding" type="xs:boolean"/>
<!-- since 5.103 -->
<xs:attribute name="stopEmptyLineContextSwitchLoop" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
@@ -414,7 +392,7 @@
</xs:complexType>
</xs:element>
<!--
Detect a floating point number
Detect a floating point number (as the regular expression: (\b[0-9]+\.[0-9]*|\.[0-9]+)([eE][-+]?[0-9]+)?).
commonAttributes: Common attributes
weakDeliminator: Add weak deliminators [optional]
additionalDeliminator: Add deliminators [optional]
@@ -427,7 +405,7 @@
</xs:complexType>
</xs:element>
<!--
Detect an octal number
Detect an octal number (as the regular expression: \b0[0-7]+).
commonAttributes: Common attributes
weakDeliminator: Add weak deliminators [optional]
additionalDeliminator: Add deliminators [optional]
@@ -440,7 +418,7 @@
</xs:complexType>
</xs:element>
<!--
Detect a hexadecimal number
Detect a hexadecimal number (as a regular expression: \b0[xX][0-9a-fA-F]+).
commonAttributes: Common attributes
weakDeliminator: Add weak deliminators [optional]
additionalDeliminator: Add deliminators [optional]
@@ -453,11 +431,8 @@
</xs:complexType>
</xs:element>
<!--
Detect C-style character
Detect C-style character. Characters enclosed in a tick (Example: 'c') which may be a simple character or an escaped character (as a regular expression: '(\\([abefnrtv"'?\\.]|x[0-9a-fA-F]{1,2}|[0-7]{1,3})|[^'])')
commonAttributes: Common attributes
TODO
- Did I get this right?
-->
<xs:element name="HlCChar">
<xs:complexType>
@@ -504,12 +479,9 @@
</xs:complexType>
</xs:element>
<!--
Detect any group of characters
Detect one character of a set of specified characters.
commonAttributes: Common attributes
String: A string representing the characters to look for
TODO
- Description is not descriptive enough, I'm not sure what it exactly does:-(
String: The set of characters
-->
<xs:element name="AnyChar">
<xs:complexType>
@@ -523,9 +495,6 @@
String: The string to look for
insensitive: Whether the string is matched case INsensitive. [boolean, optional, default=false]
dynamic: Uses %1 .. %9 as placeholders for dynamic arguments [boolean, optional, default=false]
TODO
- What's default of insensitive? I'm not sure...
-->
<xs:element name="StringDetect">
<xs:complexType>
@@ -542,9 +511,6 @@
insensitive: Whether the string is matched case INsensitive. [boolean, optional, default=false]
weakDeliminator: Add weak deliminators [optional]
additionalDeliminator: Add deliminators [optional]
TODO
- What's default of insensitive? I'm not sure...
-->
<xs:element name="WordDetect">
<xs:complexType>
@@ -560,7 +526,7 @@
commonAttributes: Common attributes
String: The regular expression pattern
insensitive: Whether the text is matched case INsensitive. [boolean, optional, default=false]
minimal: Wheather to use minimal matching for wild cards in the pattern [boolean, optional, default='false']
minimal: Wheather to use minimal matching for wild cards in the pattern [boolean, optional, default=false]
dynamic: Uses %1 .. %9 as placeholders for dynamic arguments [boolean, optional, default=false]
-->
<xs:element name="RegExpr">
@@ -584,11 +550,8 @@
</xs:complexType>
</xs:element>
<!--
Detect a C-style escaped character
Detect a C-style escaped character (as a regular expression: \\([abefnrtv"'?\\.]|x[0-9a-fA-F]{1,2}|[0-7]{1,3})).
commonAttributes: Common attributes
TODO:
- Did I get this right? Only one character, or a string?
-->
<xs:element name="HlCStringChar">
<xs:complexType>
@@ -596,7 +559,7 @@
</xs:complexType>
</xs:element>
<!--
Detect a range of characters
Detect a string with defined start and end characters.
commonAttributes: Common attributes
char: The character starting the range
char1: The character terminating the range

View File

@@ -1,2 +1,3 @@
#!/bin/sh
xmllint --noout --schema language.xsd $@
schemadir=$(dirname "$0")
xmllint --noout --schema "$schemadir"/language.xsd "$@"

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language version="7" kateversion="3.1" name="Alerts" section="Other" extensions="" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" hidden="true">
<!DOCTYPE language>
<language version="8" kateversion="3.1" name="Alerts" section="Other" extensions="" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" hidden="true">
<highlighting>
<list name="alerts_hi">
<item>ALERT</item>
@@ -36,6 +36,8 @@
<WordDetect attribute="Region Marker" context="#stay" String="END" endRegion="AlertRegion2" />
<keyword attribute="Alert Level 1" context="#stay" String="alerts_hi" />
<keyword attribute="Alert Level 2" context="#stay" String="alerts_mid" />
<!-- Some (Python?) linters use `noqa:` (small case w/ colon) -->
<WordDetect attribute="Alert Level 2" context="#stay" String="noqa:" />
<keyword attribute="Alert Level 3" context="#stay" String="alerts_lo" />
</context>
</contexts>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
<!DOCTYPE language
[
<!ENTITY tab "&#009;">
<!ENTITY funcname "([^&_fragpathseps;}=#$]|[+!@](?!\())([^&_fragpathseps;}=$]*+([+!@](?!\())?+)*+">
@@ -66,7 +66,7 @@
<language
name="Bash"
version="46"
version="51"
kateversion="5.79"
section="Scripts"
extensions="*.sh;*.bash;*.ebuild;*.eclass;*.exlib;*.exheres-0;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD"
@@ -533,7 +533,7 @@
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Start" fallthroughContext="Command">
<IncludeRules context="BashOneLine"/>
<IncludeRules context="BashOneLine"/>
</context>
<!-- used by other syntaxes -->
@@ -1005,13 +1005,15 @@
<DetectChar attribute="Redirection" context="#pop!WordRedirection" char="&lt;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2">
<DetectSpaces attribute="Normal Text" context="#pop!FdRedirection2"/>
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection2" fallthroughContext="#pop!WordRedirection2">
<RegExpr attribute="File Descriptor" context="#pop!CloseFile" String="[0-9]+(?=-?&eoexpr;)"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection" fallthroughContext="#pop!WordRedirection2">
<DetectSpaces attribute="Normal Text" context="#pop!WordRedirection2"/>
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection2" fallthroughContext="#pop">
<AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
@@ -1019,7 +1021,8 @@
<RegExpr attribute="Path" context="PathThenPop" String="&path;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection" fallthroughContext="#pop!StringRedirection2">
<DetectSpaces attribute="Normal Text" context="#pop!StringRedirection2"/>
<DetectSpaces attribute="Normal Text"/>
<DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection2">
<AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
@@ -1046,8 +1049,9 @@
<Detect2Chars attribute="Redirection" context="#pop" char="&lt;" char1="&lt;"/><!-- always met -->
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="Command">
<IncludeRules context="Start"/>
<context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="CommandArg">
<AnyChar context="BashOneLine" String="&amp;|;`" lookAhead="1"/>
<IncludeRules context="CommandArgs"/>
</context>
<!-- Highlight the builtin `:` (true) and the followed redirection, then fall into `HereDocMLComment` -->
@@ -1073,7 +1077,7 @@
</context>
<context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQ" dynamic="true" fallthroughContext="HereDocSubstitutions">
<RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="true" column="0"/>
<IncludeRules context="HereDocQ" />
</context>
<context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQ" dynamic="true" fallthroughContext="HereDocText">
@@ -1081,27 +1085,32 @@
</context>
<context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQ" dynamic="true" fallthroughContext="HereDocSubstitutions">
<RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="true" column="0"/>
<IncludeRules context="HereDocIQ" />
</context>
<context attribute="Here Doc" lineEndContext="#stay" name="HereDocCmd">
<!-- Only if the redirect is before the command, but as this is too complicated,
check if the redirect is at the beginning of the line. -->
<StringDetect attribute="Redirection" context="BashOneLine" String="%1" dynamic="true" firstNonSpace="1"/>
<StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
</context>
<context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="true" fallthroughContext="HereDocText">
<StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
<IncludeRules context="HereDocCmd"/>
<RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="true" column="0"/>
</context>
<context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQCmd" dynamic="true" fallthroughContext="HereDocSubstitutions">
<StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
<RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="true" column="0"/>
<IncludeRules context="HereDocQCmd"/>
</context>
<context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQCmd" dynamic="true" fallthroughContext="HereDocText">
<StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
<IncludeRules context="HereDocCmd"/>
<RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="true" column="0"/>
</context>
<context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQCmd" dynamic="true" fallthroughContext="HereDocSubstitutions">
<StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
<RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="true" column="0"/>
<IncludeRules context="HereDocIQCmd"/>
</context>
<context attribute="Here Doc" lineEndContext="#pop" name="HereDocText">
@@ -1262,6 +1271,7 @@
<!-- VarBraceStart is called as soon as ${ is encoutered -->
<context attribute="Variable" lineEndContext="#pop!VarBrace" name="VarBraceStart" fallthroughContext="#pop!VarBrace">
<StringDetect context="#pop!VarBrace" String="!}" lookAhead="1"/>
<DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBracePrefix" char="!"/>
<DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBrace" char="#"/>
</context>
@@ -1270,6 +1280,8 @@
<context attribute="Variable" lineEndContext="#pop" name="VarBracePrefix">
<DetectIdentifier attribute="Variable" context="#pop!VarBracePrefixSuffix"/>
<Int attribute="Variable" context="#pop!VarBracePrefixSuffix"/>
<AnyChar attribute="Parameter Expansion Operator" context="#pop!VarBracePrefixSharp" String="@*#"/>
<DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
</context>
<context attribute="Variable" lineEndContext="#pop" name="VarBracePrefixSuffix" fallthroughContext="#pop!VarError">
<DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
@@ -1277,6 +1289,10 @@
<StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[@]"/>
<StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[*]"/>
</context>
<context attribute="Variable" lineEndContext="#pop" name="VarBracePrefixSharp" fallthroughContext="#pop!VarError">
<DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
<DetectChar attribute="Parameter Expansion Operator" char="#"/>
</context>
<!-- VarBrace is called as soon as ${ or ${# are encoutered -->
<context attribute="Variable" lineEndContext="#stay" name="VarBrace" fallthroughContext="#pop!VarError">
@@ -1352,7 +1368,7 @@
<!-- called as soon as ${xxx@ is encoutered -->
<context attribute="Normal Text" lineEndContext="#stay" name="VarTransformation" fallthroughContext="#pop!VarError">
<DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
<AnyChar attribute="Parameter Expansion" context="#stay" String="QEPAa"/>
<AnyChar attribute="Parameter Expansion" context="#stay" String="UuLQEPAKa"/>
</context>
<context attribute="Escape" lineEndContext="#pop" name="BraceExpansion">

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!DOCTYPE language>
<language
version="1"
kateversion="5.0"

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
<!DOCTYPE language
[
<!ENTITY wordsep "(?:[][,?;()]|\.$|\.?\s|$)"> <!-- things that end a TagWord -->
<!ENTITY sl_word ".*?(?=&wordsep;)">
<!ENTITY ml_word ".*?(?=&wordsep;|\*/)">
]>
<language name="Doxygen"
version="14"
version="15"
kateversion="5.0"
section="Markup"
extensions="*.dox;*.doxygen"
@@ -586,7 +586,7 @@
<Detect2Chars attribute="Tags" context="#pop!LanguageId" char="@" char1="~" />
<keyword attribute="Error" context="#pop" String="TagEnd" />
<RegExpr attribute="Error" context="#pop" String="[@\\]f[]}]" />
<RegExpr attribute="Tags" context="#pop" String="[@\\](?:[#$%&amp;&lt;&gt;&quot;@\\.]|::|---?)(?=&wordsep;)" />
<RegExpr attribute="Escape sequence" context="#pop" String="[@\\](?:[#$%&amp;&lt;&gt;&quot;@\\.~=|]|::|---?)" />
<RegExpr attribute="Custom Tags" context="#pop" String="[@\\](?:[^@\\ \t\*]|\*(?!/))+" />
<AnyChar attribute="Comment" context="#pop" String="\@" />
</context>
@@ -598,6 +598,7 @@
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="Escape sequence" defStyleNum="dsSpecialChar" />
<itemData name="Tags" defStyleNum="dsAnnotation" bold="1" />
<itemData name="Custom Tags" defStyleNum="dsAnnotation" />
<itemData name="Word" defStyleNum="dsCommentVar" bold="1" italic="0" />

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE language SYSTEM "language.dtd"[
<!DOCTYPE language[
<!ENTITY nmtoken "[\-\w\d\.:_]+">
<!ENTITY entref "(#[0-9]+|#[xX][0-9A-Fa-f]+|&nmtoken;);">
]>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!DOCTYPE language>
<!--
*************************************************************************

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
<!DOCTYPE language
[
<!ENTITY name "[A-Za-z_:][\w.:_-]*">
<!ENTITY attributeName "[A-Za-z_:*#\(\[][\)\]\w.:_-]*">
<!ENTITY entref "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
]>
<language name="HTML" version="15" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm;*.aspx" mimetype="text/html" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
<language name="HTML" version="18" kateversion="5.79" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm;*.aspx" mimetype="text/html" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
<highlighting>
<contexts>
@@ -18,53 +18,70 @@
<DetectIdentifier/>
<StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
<StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
<RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype" />
<WordDetect attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE" insensitive="true" beginRegion="doctype" />
<IncludeRules context="FindElements" />
<RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
<IncludeRules context="FindSpecialHTMLTags" />
<IncludeRules context="FindHTMLTags" />
<!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
<IncludeRules context="FindEntityRefs" />
</context>
<context name="FindElements" attribute="Other Text" lineEndContext="#pop">
<RegExpr attribute="Element Symbols" context="ElementTagName" String="&lt;(?=(&name;))" />
<RegExpr attribute="Element Symbols" context="ElementTagNameClose" String="&lt;/(?=(&name;))" />
</context>
<context name="ElementTagName" attribute="Other Text" lineEndContext="#pop">
<IncludeRules context="FindHTMLTags" />
<IncludeRules context="FindSpecialHTMLTags" />
<StringDetect attribute="Element" context="#pop!El Open" String="%1" dynamic="true" />
</context>
<context name="ElementTagNameClose" attribute="Other Text" lineEndContext="#pop">
<IncludeRules context="FindHTMLTagsClose" />
<StringDetect attribute="Element" context="#pop!El Close" String="%1" dynamic="true" />
</context>
<!-- This allows you to insert HTML tags in other syntax definitions -->
<context name="FindSpecialHTMLTags" attribute="Normal Text" lineEndContext="#stay">
<RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="true" beginRegion="style" />
<RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="true" beginRegion="script" />
<WordDetect attribute="Element" context="#pop!CSS" String="style" insensitive="true" beginRegion="style" />
<WordDetect attribute="Element" context="#pop!JS" String="script" insensitive="true" beginRegion="script" />
</context>
<context name="FindHTMLTags" attribute="Normal Text" lineEndContext="#stay">
<WordDetect attribute="Element" context="El Open" String="&lt;pre" insensitive="true" beginRegion="pre" />
<WordDetect attribute="Element" context="El Open" String="&lt;div" insensitive="true" beginRegion="div" />
<WordDetect attribute="Element" context="El Open" String="&lt;table" insensitive="true" beginRegion="table" />
<WordDetect attribute="Element" context="El Open" String="&lt;ul" insensitive="true" beginRegion="ul" />
<WordDetect attribute="Element" context="El Open" String="&lt;ol" insensitive="true" beginRegion="ol" />
<WordDetect attribute="Element" context="El Open" String="&lt;dl" insensitive="true" beginRegion="dl" />
<WordDetect attribute="Element" context="El Open" String="&lt;article" insensitive="true" beginRegion="article" />
<WordDetect attribute="Element" context="El Open" String="&lt;aside" insensitive="true" beginRegion="aside" />
<WordDetect attribute="Element" context="El Open" String="&lt;details" insensitive="true" beginRegion="details" />
<WordDetect attribute="Element" context="El Open" String="&lt;figure" insensitive="true" beginRegion="figure" />
<WordDetect attribute="Element" context="El Open" String="&lt;footer" insensitive="true" beginRegion="footer" />
<WordDetect attribute="Element" context="El Open" String="&lt;header" insensitive="true" beginRegion="header" />
<WordDetect attribute="Element" context="El Open" String="&lt;main" insensitive="true" beginRegion="main" />
<WordDetect attribute="Element" context="El Open" String="&lt;nav" insensitive="true" beginRegion="nav" />
<WordDetect attribute="Element" context="El Open" String="&lt;section" insensitive="true" beginRegion="section" />
<RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
<WordDetect attribute="Element" context="El Close" String="&lt;/pre" insensitive="true" endRegion="pre" />
<WordDetect attribute="Element" context="El Close" String="&lt;/div" insensitive="true" endRegion="div" />
<WordDetect attribute="Element" context="El Close" String="&lt;/table" insensitive="true" endRegion="table" />
<WordDetect attribute="Element" context="El Close" String="&lt;/ul" insensitive="true" endRegion="ul" />
<WordDetect attribute="Element" context="El Close" String="&lt;/ol" insensitive="true" endRegion="ol" />
<WordDetect attribute="Element" context="El Close" String="&lt;/dl" insensitive="true" endRegion="dl" />
<WordDetect attribute="Element" context="El Close" String="&lt;/article" insensitive="true" endRegion="article" />
<WordDetect attribute="Element" context="El Close" String="&lt;/aside" insensitive="true" endRegion="aside" />
<WordDetect attribute="Element" context="El Close" String="&lt;/details" insensitive="true" endRegion="details" />
<WordDetect attribute="Element" context="El Close" String="&lt;/figure" insensitive="true" endRegion="figure" />
<WordDetect attribute="Element" context="El Close" String="&lt;/footer" insensitive="true" endRegion="footer" />
<WordDetect attribute="Element" context="El Close" String="&lt;/header" insensitive="true" endRegion="header" />
<WordDetect attribute="Element" context="El Close" String="&lt;/main" insensitive="true" endRegion="main" />
<WordDetect attribute="Element" context="El Close" String="&lt;/nav" insensitive="true" endRegion="nav" />
<WordDetect attribute="Element" context="El Close" String="&lt;/section" insensitive="true" endRegion="section" />
<RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
<WordDetect attribute="Element" context="#pop!El Open" String="pre" insensitive="true" beginRegion="pre" />
<WordDetect attribute="Element" context="#pop!El Open" String="div" insensitive="true" beginRegion="div" />
<WordDetect attribute="Element" context="#pop!El Open" String="table" insensitive="true" beginRegion="table" />
<WordDetect attribute="Element" context="#pop!El Open" String="ul" insensitive="true" beginRegion="ul" />
<WordDetect attribute="Element" context="#pop!El Open" String="ol" insensitive="true" beginRegion="ol" />
<WordDetect attribute="Element" context="#pop!El Open" String="dl" insensitive="true" beginRegion="dl" />
<WordDetect attribute="Element" context="#pop!El Open" String="article" insensitive="true" beginRegion="article" />
<WordDetect attribute="Element" context="#pop!El Open" String="aside" insensitive="true" beginRegion="aside" />
<WordDetect attribute="Element" context="#pop!El Open" String="details" insensitive="true" beginRegion="details" />
<WordDetect attribute="Element" context="#pop!El Open" String="figure" insensitive="true" beginRegion="figure" />
<WordDetect attribute="Element" context="#pop!El Open" String="footer" insensitive="true" beginRegion="footer" />
<WordDetect attribute="Element" context="#pop!El Open" String="header" insensitive="true" beginRegion="header" />
<WordDetect attribute="Element" context="#pop!El Open" String="main" insensitive="true" beginRegion="main" />
<WordDetect attribute="Element" context="#pop!El Open" String="nav" insensitive="true" beginRegion="nav" />
<WordDetect attribute="Element" context="#pop!El Open" String="section" insensitive="true" beginRegion="section" />
</context>
<context name="FindHTMLTagsClose" attribute="Normal Text" lineEndContext="#stay">
<WordDetect attribute="Element" context="#pop!El Close" String="pre" insensitive="true" endRegion="pre" />
<WordDetect attribute="Element" context="#pop!El Close" String="div" insensitive="true" endRegion="div" />
<WordDetect attribute="Element" context="#pop!El Close" String="table" insensitive="true" endRegion="table" />
<WordDetect attribute="Element" context="#pop!El Close" String="ul" insensitive="true" endRegion="ul" />
<WordDetect attribute="Element" context="#pop!El Close" String="ol" insensitive="true" endRegion="ol" />
<WordDetect attribute="Element" context="#pop!El Close" String="dl" insensitive="true" endRegion="dl" />
<WordDetect attribute="Element" context="#pop!El Close" String="article" insensitive="true" endRegion="article" />
<WordDetect attribute="Element" context="#pop!El Close" String="aside" insensitive="true" endRegion="aside" />
<WordDetect attribute="Element" context="#pop!El Close" String="details" insensitive="true" endRegion="details" />
<WordDetect attribute="Element" context="#pop!El Close" String="figure" insensitive="true" endRegion="figure" />
<WordDetect attribute="Element" context="#pop!El Close" String="footer" insensitive="true" endRegion="footer" />
<WordDetect attribute="Element" context="#pop!El Close" String="header" insensitive="true" endRegion="header" />
<WordDetect attribute="Element" context="#pop!El Close" String="main" insensitive="true" endRegion="main" />
<WordDetect attribute="Element" context="#pop!El Close" String="nav" insensitive="true" endRegion="nav" />
<WordDetect attribute="Element" context="#pop!El Close" String="section" insensitive="true" endRegion="section" />
</context>
<context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay">
@@ -79,8 +96,8 @@
</context>
<context name="FindAttributes" attribute="Other Text" lineEndContext="#stay">
<RegExpr attribute="Attribute" context="#stay" String="^&attributeName;|\s+&attributeName;" />
<DetectChar attribute="Attribute" context="Value" char="=" />
<DetectChar attribute="Attribute Separator" context="Value" char="=" />
<RegExpr attribute="Attribute" context="#stay" String="(^|\s+)&attributeName;(\s+&attributeName;)*\s*|\s+" />
</context>
<context name="FindDTDRules" attribute="Other Text" lineEndContext="#stay">
@@ -136,49 +153,40 @@
<IncludeRules context="FindPEntityRefs" />
</context>
<context name="El Open" attribute="Other Text" lineEndContext="#stay">
<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
<DetectChar attribute="Element" context="#pop" char="&gt;" />
<context name="El Open" attribute="Error" lineEndContext="#stay">
<Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" />
<DetectChar attribute="Element Symbols" context="#pop" char="&gt;" />
<IncludeRules context="FindAttributes" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="El Close" attribute="Other Text" lineEndContext="#stay">
<DetectChar attribute="Element" context="#pop" char="&gt;" />
<DetectChar attribute="Element Symbols" context="#pop" char="&gt;" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="El Close 2" attribute="Other Text" lineEndContext="#stay">
<DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="El Close 3" attribute="Other Text" lineEndContext="#stay">
<DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="CSS" attribute="Other Text" lineEndContext="#stay">
<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
<DetectChar attribute="Element" context="CSS content" char="&gt;" />
<context name="CSS" attribute="Error" lineEndContext="#stay">
<Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="style" />
<DetectChar attribute="Element Symbols" context="CSS content" char="&gt;" />
<IncludeRules context="FindAttributes" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context name="CSS content" attribute="Other Text" lineEndContext="#stay">
<RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="true" endRegion="style" />
<RegExpr attribute="Element Symbols" context="CSS content Close" String="&lt;/(?=style\b)" insensitive="true" />
<IncludeRules context="##CSS" includeAttrib="true"/>
</context>
<context name="CSS content Close" attribute="Other Text" lineEndContext="#stay">
<DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="style" />
</context>
<context name="JS" attribute="Other Text" lineEndContext="#stay">
<context name="JS" attribute="Error" lineEndContext="#stay">
<RegExpr attribute="Attribute" context="Script-Type" String="(?:\s+|^)type(?=\=|\s|$)" insensitive="true"/>
<DetectChar attribute="Element" context="JS content" char="&gt;" />
<DetectChar attribute="Element Symbols" context="JS content" char="&gt;" />
<IncludeRules context="DefaultJS" />
</context>
<context name="DefaultJS" attribute="Other Text" lineEndContext="#stay">
<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
<IncludeRules context="FindAttributes" />
<RegExpr attribute="Error" context="#stay" String="\S" />
<Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="script" />
<DetectChar attribute="Attribute Separator" context="Value" char="=" />
<RegExpr attribute="Attribute" context="#stay" String="(^|\s+)&attributeName;|\s+" />
</context>
<context name="JS content" attribute="Other Text" lineEndContext="#stay">
@@ -186,25 +194,35 @@
<IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
</context>
<context name="Default JS content" attribute="Other Text" lineEndContext="#stay">
<RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
<IncludeRules context="FindScriptTagClose" />
<RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true" />
</context>
<context name="FindScriptTagClose" attribute="Other Text" lineEndContext="#stay">
<RegExpr attribute="Element Symbols" context="ScriptTagClose" String="&lt;/(?=script\b)" insensitive="true" />
</context>
<context name="ScriptTagClose" attribute="Other Text" lineEndContext="#stay">
<DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="script" />
</context>
<context name="JS comment close" attribute="Comment" lineEndContext="#pop">
<RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />
<RegExpr attribute="Element Symbols" context="#pop!ScriptTagClose" String="&lt;/(?=script\b)" insensitive="true" />
<DetectSpaces />
<IncludeRules context="##Comments" />
</context>
<context name="Value" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
<context name="Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="Value NQ">
<DetectChar attribute="Value" context="Value DQ" char="&quot;" />
<DetectChar attribute="Value" context="Value SQ" char="&apos;" />
<DetectSpaces />
</context>
<context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
<context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
<!-- '{' and '}' are valid, but used with twig -->
<RegExpr attribute="Value" String="[^&gt;&lt;&quot;&apos;&amp;\s=`{}]+" />
<IncludeRules context="FindEntityRefs" />
<RegExpr attribute="Value" context="#stay" String="/(?!&gt;)|[^/&gt;&lt;&quot;&apos;\s]" />
<AnyChar attribute="Error" String="&quot;&apos;`=" />
<AnyChar attribute="Value" String="{}" />
</context>
<context name="Value DQ" attribute="Value" lineEndContext="#stay">
@@ -220,11 +238,11 @@
<!-- Read content from the "type" attribute to change the language to
highlight in the <script> tag. The default language is JavaScript. -->
<context name="Script-Type" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<context name="Script-Type" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop">
<DetectSpaces />
<DetectChar attribute="Attribute" context="#pop!Script-Type Value" char="=" />
</context>
<context name="Script-Type Value" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Value">
<context name="Script-Type Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop!Value">
<DetectSpaces />
<!-- TypeScript -->
<StringDetect attribute="Value" context="#pop#pop!TypeScript" String="&quot;text/typescript&quot;"/>
@@ -250,8 +268,8 @@
<StringDetect attribute="Value" context="#pop#pop!Script HTML template" String="&apos;text/html&apos;"/>
</context>
<context name="JSX" attribute="Other Text" lineEndContext="#stay">
<DetectChar attribute="Element" context="JSX content" char="&gt;" />
<context name="JSX" attribute="Error" lineEndContext="#stay">
<DetectChar attribute="Element Symbols" context="JSX content" char="&gt;" />
<IncludeRules context="DefaultJS" />
</context>
<context name="JSX content" attribute="Other Text" lineEndContext="#stay">
@@ -259,8 +277,8 @@
<IncludeRules context="Normal##JavaScript React (JSX)" includeAttrib="true"/>
</context>
<context name="TypeScript" attribute="Other Text" lineEndContext="#stay">
<DetectChar attribute="Element" context="TypeScript content" char="&gt;" />
<context name="TypeScript" attribute="Error" lineEndContext="#stay">
<DetectChar attribute="Element Symbols" context="TypeScript content" char="&gt;" />
<IncludeRules context="DefaultJS" />
</context>
<context name="TypeScript content" attribute="Other Text" lineEndContext="#stay">
@@ -268,25 +286,25 @@
<IncludeRules context="Normal##TypeScript" includeAttrib="true"/>
</context>
<context name="MustacheJS" attribute="Other Text" lineEndContext="#stay">
<DetectChar attribute="Element" context="MustacheJS content" char="&gt;" />
<context name="MustacheJS" attribute="Error" lineEndContext="#stay">
<DetectChar attribute="Element Symbols" context="MustacheJS content" char="&gt;" />
<IncludeRules context="DefaultJS" />
</context>
<context name="MustacheJS content" attribute="Other Text" lineEndContext="#stay">
<RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
<IncludeRules context="FindScriptTagClose" />
<StringDetect attribute="Error" context="#stay" String="&lt;script&gt;" insensitive="true" />
<RegExpr attribute="Error" context="#stay" String="&lt;script\b" insensitive="true" />
<WordDetect attribute="Error" context="#stay" String="&lt;script" insensitive="true" />
<IncludeRules context="Base##Mustache/Handlebars (HTML)" includeAttrib="true"/>
</context>
<context name="Script HTML template" attribute="Other Text" lineEndContext="#stay">
<DetectChar attribute="Element" context="Script HTML template content" char="&gt;" />
<context name="Script HTML template" attribute="Error" lineEndContext="#stay">
<DetectChar attribute="Element Symbols" context="Script HTML template content" char="&gt;" />
<IncludeRules context="DefaultJS" />
</context>
<context name="Script HTML template content" attribute="Other Text" lineEndContext="#stay">
<RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
<IncludeRules context="FindScriptTagClose" />
<StringDetect attribute="Error" context="#stay" String="&lt;script&gt;" insensitive="true" />
<RegExpr attribute="Error" context="#stay" String="&lt;script\b" insensitive="true" />
<WordDetect attribute="Error" context="#stay" String="&lt;script" insensitive="true" />
<IncludeRules context="FindHTML" />
</context>
@@ -299,7 +317,9 @@
<itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Doctype" defStyleNum="dsDataType" bold="1" spellChecking="false" />
<itemData name="Element" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Element Symbols" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Attribute Separator" defStyleNum="dsOperator" spellChecking="false" />
<itemData name="Value" defStyleNum="dsString" spellChecking="false" />
<itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false" />
<itemData name="PEntityRef" defStyleNum="dsDecVal" spellChecking="false" />

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc;.gitattributes*;.gitconfig*;.gitmodules*;.editorconfig*" mimetype="" version="12" kateversion="5.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
<!DOCTYPE language>
<language name="INI Files" section="Configuration" extensions="*.ini;*.cfg;*.pls;*.kcfgc;.gitattributes*;.gitconfig*;.gitmodules*;.editorconfig*" mimetype="" version="13" kateversion="5.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL" priority="1">
<highlighting>
<list name="keywords">

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
<!DOCTYPE language
[
<!ENTITY int "(?:[0-9]++(_++[0-9]++)*+)">
<!ENTITY hex "(?:[0-9a-fA-F]++(_++[0-9a-fA-F]++)*+)">
@@ -7,7 +7,7 @@
<!ENTITY float "(\b&int;(\.((&int;&exp;?+|&exp;)[fFdD]?\b|[fFdD]\b)?|&exp;[fFdD]?\b|[fFdD]\b)|\.&int;&exp;?[fFdD]?\b)">
<!ENTITY hexfloat "\b0[xX](&hex;\.?+&hex;?+|\.&hex;?)[pP][-+]?&int;[fFdD]?\b">
]>
<language name="Java" version="11" kateversion="5.62" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
<language name="Java" version="13" kateversion="5.79" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
<highlighting>
<list name="java15">
<item>ACTIVE</item>
@@ -3705,6 +3705,8 @@
<!-- end new classes -->
</list>
<!-- https://docs.oracle.com/javase/specs/jls/se20/html/jls-3.html#jls-Keyword -->
<list name="keywords">
<item>abstract</item>
<item>class</item>
@@ -3714,7 +3716,6 @@
<item>false</item>
<item>implements</item>
<item>instanceof</item>
<item>@interface</item>
<item>interface</item>
<item>native</item>
<item>new</item>
@@ -3730,6 +3731,11 @@
<item>transient</item>
<item>true</item>
<item>volatile</item>
<!-- contextual -->
<item>non-sealed</item>
<item>permits</item>
<item>record</item>
<item>sealed</item>
</list>
<list name="control flow">
<item>assert</item>
@@ -3748,6 +3754,7 @@
<item>throw</item>
<item>try</item>
<item>while</item>
<item>yield</item>
</list>
<list name="types">
<item>boolean</item>
@@ -3764,6 +3771,25 @@
<item>var</item>
<item>void</item>
</list>
<list name="annotations">
<!-- builtin -->
<item>@Override</item>
<item>@Deprecated</item>
<item>@SuppressWarnings</item>
<item>@SafeVarargs</item>
<item>@FunctionalInterface</item>
<item>@interface</item>
<!-- java.lang.annotation -->
<item>@Retention</item>
<item>@Documented</item>
<item>@Target</item>
<item>@Inherited</item>
<item>@Repeatable</item>
</list>
<!-- https://docs.oracle.com/javase/specs/jls/se20/html/jls-3.html -->
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<DetectSpaces context="#stay"/>
@@ -3783,6 +3809,7 @@
<AnyChar context="Number" String="0123456789" lookAhead="1"/>
<StringDetect attribute="Text Block" context="TextBlock" String="&quot;&quot;&quot;"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<DetectChar context="Char" char="'" lookAhead="1"/>
@@ -3795,6 +3822,7 @@
<WordDetect attribute="Keyword" context="ImportsOrStaticImports" String="import" />
<RegExpr attribute="Function" context="#stay" String="\b[_a-zA-Z]\w*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" />
<WordDetect attribute="Keyword" context="ImportsOrStaticImports" String="non-sealed" />
<DetectIdentifier attribute="Normal Text"/>
</context>
@@ -3831,6 +3859,11 @@
<RegExpr attribute="Error" context="#pop" String="\\(u+[0-9a-fA-F]*|.)?"/>
</context>
<context attribute="Text Block" lineEndContext="#stay" name="TextBlock">
<DetectChar context="StringEscapedChar" char="\" lookAhead="1"/>
<StringDetect attribute="Text Block" context="#pop" String="&quot;&quot;&quot;"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Printf" fallthroughContext="#pop">
<DetectChar attribute="Symbol" context="#pop!InPrintf" char="("/>
<DetectSpaces attribute="Normal Text" context="#stay"/>
@@ -3898,6 +3931,7 @@
<itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="Char" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Text Block" defStyleNum="dsString"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>
<itemData name="PrintfString" defStyleNum="dsString"/>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="Javadoc" version="6" kateversion="5.62" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
<!DOCTYPE language>
<language name="Javadoc" version="7" kateversion="5.79" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
<highlighting>
<contexts>
<context name="Start" attribute="Normal Text" lineEndContext="#stay">

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!DOCTYPE language>
<!--
***************************************************************************
** Writing a Kate Highlighting XML File
@@ -13,7 +13,7 @@
** https://www.json.org/json-en.html
***************************************************************************
-->
<language name="JSON" section="Markup" version="7" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
<language name="JSON" section="Markup" version="8" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
<highlighting>
<list name="Constants">
<item>null</item>
@@ -40,7 +40,12 @@
<context name="String_Key" lineEndContext="#stay" attribute="Style_String_Key">
<DetectChar char="&quot;" context="#pop" attribute="Style_String_Key" />
<RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#stay" attribute="Style_String_Key_Char" />
<DetectChar char="\" context="String_Key_Char" lookAhead="1"/>
</context>
<context name="String_Key_Char" lineEndContext="#stay" attribute="Style_Normal">
<RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#pop" attribute="Style_String_Key_Char" />
<RegExpr String="\\(u[0-9a-fA-f]+|.)?" context="#pop" attribute="Style_Error" />
</context>
<context name="Value" lineEndContext="#stay" attribute="Style_Error" >
@@ -57,13 +62,18 @@
<keyword String="Constants" context="#stay" attribute="Style_Keyword" />
<RegExpr String="-?[0-9]+\.[0-9]+(?:[eE][+-]?[0-9]+)?" context="#stay" attribute="Style_Float" />
<RegExpr String="-?[0-9]+(?:[eE][+-]?[0-9]+)?" context="#stay" attribute="Style_Decimal" />
<RegExpr String="-?\b([1-9][0-9]*\.[0-9]+(?:[eE][+-]?[0-9]+)?)" context="#stay" attribute="Style_Float" />
<RegExpr String="-?\b(0\b|[1-9][0-9]*(?:[eE][+-]?[0-9]+)?)" context="#stay" attribute="Style_Decimal" />
</context>
<context name="String_Value" lineEndContext="#stay" attribute="Style_String_Value">
<DetectChar char="&quot;" context="#pop" attribute="Style_String_Value" />
<RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#stay" attribute="Style_String_Value_Char" />
<DetectChar char="\" context="String_Key_Value" lookAhead="1" />
</context>
<context name="String_Key_Value" lineEndContext="#stay" attribute="Style_Normal">
<RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#pop" attribute="Style_String_Value_Char" />
<RegExpr String="\\(u[0-9a-fA-f]+|.)?" context="#pop" attribute="Style_Error" />
</context>
<context name="Array" lineEndContext="#stay" attribute="Style_Error">

View File

@@ -22,7 +22,7 @@
Example: **bold text and _italic and bold text_**
__bold and ~~strikeout and bold~~__
-->
<!DOCTYPE language SYSTEM "language.dtd"
<!DOCTYPE language
[
<!-- NOTE: To correctly detect bold, italic or strike out text, use minimal="true" in RegExpr rules -->
<!ENTITY contentregex_ast "(?:(?:[^\*\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^\*\s\\]|\\\S)">
@@ -72,6 +72,10 @@
<!ENTITY linebreakregex " $">
<!-- strikethrough text, pandoc style -->
<!ENTITY strikeoutregex "[~]{2}[^~](?:.*[^~])?[~]{2}">
<!-- highlight text -->
<!ENTITY highlightregex "[=]{2}[^=](?:.*[^=])?[=]{2}">
<!-- emoji -->
<!ENTITY emojiregex ":([-+]1|\w+):">
<!-- start of fenced code block -->
<!ENTITY fcode "(`{3,}|~{3,})">
<!-- end of line & empty line -->
@@ -90,7 +94,7 @@
<!ENTITY checkbox "\[[ x]\](?=\s)">
]>
<language name="Markdown" version="24" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
<language name="Markdown" version="30" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown;*.md.html" mimetype="text/markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
<highlighting>
<contexts>
<!-- Start of the Markdown document: find metadata or code block -->
@@ -137,9 +141,12 @@
<DetectChar context="find-strong-normal" char="*" lookAhead="true"/>
<DetectChar context="find-emphasis-normal" char="_" lookAhead="true"/>
<RegExpr attribute="Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
<RegExpr attribute="Highlight Text" minimal="true" String="&highlightregex;"/>
<!-- Common -->
<IncludeRules context="inc"/>
<RegExpr attribute="Normal Text: Link" String="&implicitlink;"/>
<!-- Table -->
<DetectChar attribute="Table" char="|" context="table" firstNonSpace="true" lookAhead="1"/>
</context>
<!-- Find indented code blocks. These are only allowed after an empty line or on the first line -->
<context name="find-code-block" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#stay" fallthroughContext="#pop">
@@ -148,6 +155,16 @@
<RegExpr attribute="Comment" context="comment" String="^\s*&startcomment;|\s*&startcomment;(?=.*&endcomment;)" beginRegion="comment"/>
</context>
<!-- Table in Normal Text Document -->
<context name="table" attribute="Normal Text" lineEndContext="#pop" lineEmptyContext="#pop!find-code-block">
<IncludeRules context="find-table-element"/>
<IncludeRules context="Normal Text"/>
</context>
<context name="find-table-element" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Table" String="(\|(\s*:?---+:?)?)++"/>
</context>
<context name="find-header" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Header H1" context="#pop!close-H2-region" String="^#\s" column="0" endRegion="H1" beginRegion="H1" lookAhead="true"/>
<RegExpr attribute="Header H2" context="#pop!close-H3-region" String="^##\s" column="0" endRegion="H2" beginRegion="H2" lookAhead="true"/>
@@ -207,6 +224,7 @@
<RegExpr attribute="Normal Text" context="#pop!find-code-block" String="&emptyline;" column="0"/>
<StringDetect attribute="Comment" context="#pop!find-code-block" String="&startcomment;" column="0" lookAhead="true"/>
<IncludeRules context="default-blockquote-2"/>
<IncludeRules context="find-table-element"/>
</context>
<!-- Blockquote within a list -->
<context name="blockquote-list" attribute="Blockquote: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
@@ -226,6 +244,7 @@
<!-- Strong, emphasis, strong-emphasis and strikethrough text -->
<AnyChar context="find-strong-emphasis-blockquote" String="*_" lookAhead="true"/>
<RegExpr attribute="Blockquote: Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
<RegExpr attribute="Blockquote: Highlight Text" minimal="true" String="&highlightregex;"/>
<!-- Common -->
<IncludeRules context="inc"/>
<RegExpr attribute="Blockquote: Link" String="&implicitlink;"/>
@@ -254,6 +273,8 @@
<RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
<!-- Highlight checkbox at the start of the item (task list) -->
<RegExpr attribute="List: Checkbox" context="content-list" String="\s*&checkbox;"/>
<!-- Highlight checkbox at the start of the item (task list) -->
<RegExpr attribute="Table" context="content-list-table" String="\s*\|"/>
</context>
<!-- 1. numlist (one digit) -->
<context name="numlist" attribute="List: Normal Text" lineEndContext="#stay" fallthroughContext="content-list">
@@ -284,13 +305,14 @@
to check the indentation of the text and determine if the content of the list ends. -->
<context name="content-list" attribute="List: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
<RegExpr context="#pop" String="&emptyline;" column="0"/>
<!-- Blockquote and horzontal rule (check indentation) -->
<!-- Blockquote and horizontal rule (check indentation) -->
<RegExpr context="#pop" String="^\s*(?:&gt;|&rulerregex;)" column="0" lookAhead="true"/>
<!-- End with header or new list/numlist -->
<RegExpr context="#pop#pop" String="^(?:\s*(?:&listbullet;|[\d]+\.)\s|#{1,6}\s)" column="0" lookAhead="true"/>
<!-- Strong, emphasis, strong-emphasis and strikethrough text -->
<AnyChar context="find-strong-emphasis-list" String="*_" lookAhead="true"/>
<RegExpr attribute="List: Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
<RegExpr attribute="List: Highlight Text" minimal="true" String="&highlightregex;"/>
<!-- Common -->
<IncludeRules context="inc"/>
<RegExpr attribute="List: Link" String="&implicitlink;"/>
@@ -303,6 +325,12 @@
<AnyChar attribute="List: Normal Text" context="#pop" String="*_"/>
</context>
<!-- Table in List -->
<context name="content-list-table" attribute="List: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
<IncludeRules context="find-table-element"/>
<IncludeRules context="content-list"/>
</context>
<!-- Comments -->
<context name="comment" attribute="Comment" lineEndContext="#stay">
<StringDetect attribute="Comment" context="#pop" String="&endcomment;" endRegion="comment"/>
@@ -312,42 +340,42 @@
<!-- Fenced Code Blocks -->
<context name="find-lang-fenced-code" attribute="Normal Text" lineEndContext="#pop">
<!-- Apply syntax highlighting to fenced code blocks for some languages -->
<RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;&end;"/>
<RegExpr attribute="Fenced Code" context="#pop!bash-code" String="&fcode;\s*(?:bash(?:rc|_profile|_login|_logout)?|shell|sh|profile|PKGBUILD|APKBUILD|ebuild|eclass|nix)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!zsh-code" String="&fcode;\s*(?:zsh)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!cpp-code" String="&fcode;\s*(?:[ch]pp|[ch]\+\+|[ch]xx|h?cc|hh|cuh?|ino|pde|moc)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!csharp-code" String="&fcode;\s*(?:cs|csharp|c\#)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!cmake-code" String="&fcode;\s*(?:cmake|CMakeLists(?:\.txt)?)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!css-code" String="&fcode;\s*css&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!c-code" String="&fcode;\s*[ch]&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!doxygen-code" String="&fcode;\s*doxygen&end;" insensitive="true"/> <!-- Block comment of Doxygen -->
<RegExpr attribute="Fenced Code" context="#pop!email-code" String="&fcode;\s*(?:email|emlx?|mbo?x)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!go-code" String="&fcode;\s*go(?:lang)?&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!hamlet-code" String="&fcode;\s*[wxs]?hamlet&end;" insensitive="true"/> <!-- Included in the Haskell definition -->
<RegExpr attribute="Fenced Code" context="#pop!haskell-code" String="&fcode;\s*(?:haskell|c?hs|hs\-boot)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!html-code" String="&fcode;\s*(?:[sx]?html?|inc|tmpl|tpl)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!java-code" String="&fcode;\s*(?:java|bsh)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!javascript-code" String="&fcode;\s*(?:javascript|m?js|es6|kwinscript|julius)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!jsx-code" String="&fcode;\s*(?:jsx|tsx|(?:java|type)script\-react)&end;" insensitive="true"/> <!-- Included in the HTML definition. Also apply for TSX. -->
<RegExpr attribute="Fenced Code" context="#pop!json-code" String="&fcode;\s*(?:json5?|gltf)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!yaml-code" String="&fcode;\s*(?:ya?ml)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!matlab-code" String="&fcode;\s*matlab&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!markdown-code" String="&fcode;\s*(?:markdown|m?md)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!mustache-code" String="&fcode;\s*(?:handlebars|hbs|mustache|mst|ractive|hogan|hulk)&end;" insensitive="true"/> <!-- Included in the HTML definition -->
<RegExpr attribute="Fenced Code" context="#pop!perl-code" String="&fcode;\s*(?:perl|p[lm]|pod|psgi|vcl)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!php-code" String="&fcode;\s*(?:php[3457t]?|wml|phtml?|aw|ctp)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!raku-code" String="&fcode;\s*(?:raku(?:mod|doc|test)?|perl6|p[lm]?6|pod6|nqp)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true"/> <!-- Included in the CMake definition -->
<RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml|(?:xml|js)\.erb)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!rust-code" String="&fcode;\s*(?:rust|rs)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!mysql-code" String="&fcode;\s*(?:mysql|sql|ddl)&end;" insensitive="true"/> <!-- Included in the PHP definition -->
<RegExpr attribute="Fenced Code" context="#pop!nim-code" String="&fcode;\s*(?:nims?)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!typescript-code" String="&fcode;\s*(?:typescript|ts)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!xml-code" String="&fcode;\s*(?:xml|xsd|xspf|tld|jsp|c?pt|dtml|rss|opml|svg|daml|rdf|ui|kcfg|qrc|wsdl|scxml|xbel|dae|sch|brd|docbook)&end;" insensitive="true"/>
<RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;.*$"/>
<RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;&end;" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!bash-code" String="&fcode;\s*(?:bash(?:rc|_profile|_login|_logout)?|shell|sh|profile|PKGBUILD|APKBUILD|ebuild|eclass|nix)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!zsh-code" String="&fcode;\s*(?:zsh)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!cpp-code" String="&fcode;\s*(?:[ch]pp|[ch]\+\+|[ch]xx|h?cc|hh|cuh?|ino|pde|moc)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!csharp-code" String="&fcode;\s*(?:cs|csharp|c\#)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!cmake-code" String="&fcode;\s*(?:cmake|CMakeLists(?:\.txt)?)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!css-code" String="&fcode;\s*css&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!c-code" String="&fcode;\s*[ch]&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!doxygen-code" String="&fcode;\s*doxygen&end;" insensitive="true" beginRegion="code-block"/> <!-- Block comment of Doxygen -->
<RegExpr attribute="Fenced Code" context="#pop!email-code" String="&fcode;\s*(?:email|emlx?|mbo?x)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!go-code" String="&fcode;\s*go(?:lang)?&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!hamlet-code" String="&fcode;\s*[wxs]?hamlet&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the Haskell definition -->
<RegExpr attribute="Fenced Code" context="#pop!haskell-code" String="&fcode;\s*(?:haskell|c?hs|hs\-boot)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!html-code" String="&fcode;\s*(?:[sx]?html?|inc|tmpl|tpl)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!java-code" String="&fcode;\s*(?:java|bsh)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!javascript-code" String="&fcode;\s*(?:javascript|m?js|es6|kwinscript|julius)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!jsx-code" String="&fcode;\s*(?:jsx|tsx|(?:java|type)script\-react)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the HTML definition. Also apply for TSX. -->
<RegExpr attribute="Fenced Code" context="#pop!json-code" String="&fcode;\s*(?:json5?|gltf)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!yaml-code" String="&fcode;\s*(?:ya?ml)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!matlab-code" String="&fcode;\s*matlab&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!markdown-code" String="&fcode;\s*(?:markdown|m?md)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!mustache-code" String="&fcode;\s*(?:handlebars|hbs|mustache|mst|ractive|hogan|hulk)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the HTML definition -->
<RegExpr attribute="Fenced Code" context="#pop!perl-code" String="&fcode;\s*(?:perl|p[lm]|pod|psgi|vcl)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!php-code" String="&fcode;\s*(?:php[3457t]?|wml|phtml?|aw|ctp)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!raku-code" String="&fcode;\s*(?:raku(?:mod|doc|test)?|perl6|p[lm]?6|pod6|nqp)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the CMake definition -->
<RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml|(?:xml|js)\.erb)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!rust-code" String="&fcode;\s*(?:rust|rs)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!mysql-code" String="&fcode;\s*(?:mysql|sql|ddl)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the PHP definition -->
<RegExpr attribute="Fenced Code" context="#pop!nim-code" String="&fcode;\s*(?:nims?)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!typescript-code" String="&fcode;\s*(?:typescript|ts)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!xml-code" String="&fcode;\s*(?:xml|xsd|xspf|tld|jsp|c?pt|dtml|rss|opml|svg|daml|rdf|ui|kcfg|qrc|wsdl|scxml|xbel|dae|sch|brd|docbook)&end;" insensitive="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;.*$" beginRegion="code-block"/>
</context>
<context name="code" attribute="Code" lineEndContext="#stay"> <!-- Unknown language -->
<RegExpr attribute="Fenced Code" context="#pop" String="%1[~`]*(?=&end;)" firstNonSpace="true" dynamic="true" endRegion="code-block"/>
@@ -450,13 +478,13 @@
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="qml-code">
<IncludeRules context="code"/>
<IncludeRules context="##QML" includeAttrib="true"/>
<IncludeRules context="Normal##QML" includeAttrib="true"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="r-code">
<IncludeRules context="code"/>
<IncludeRules context="##R Script" includeAttrib="true"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="raku-code">
<context attribute="Normal Text" lineEndContext="#stay" name="raku-code" fallthroughContext="term##Raku">
<IncludeRules context="code"/>
<IncludeRules context="base##Raku" includeAttrib="true"/>
</context>
@@ -494,7 +522,7 @@
<!-- Code -->
<RegExpr attribute="Code" String="`[^`]+`(?!`)|`{2}[^`](?:.*?[^`])?`{2}(?!`)|`{3}[^`](?:.*?[^`])?`{3}(?!`)|`{4}[^`](?:.*?[^`])?`{4}(?!`)|`{5,}[^`](?:.*?[^`])?`{5,}"/>
<!-- Find Fenced Code Block -->
<RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="`{3,}(?=[^`]*$)|~{3,}(?=[^~]*$)" firstNonSpace="true" lookAhead="true" beginRegion="code-block"/>
<RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="`{3,}(?=[^`]*$)|~{3,}(?=[^~]*$)" firstNonSpace="true" lookAhead="true"/>
<!-- Comment -->
<StringDetect attribute="Comment" context="comment" String="&startcomment;" beginRegion="comment"/>
<!-- Links and References -->
@@ -505,6 +533,8 @@
<RegExpr attribute="Reference Image" String="&refimageregex;"/>
<RegExpr attribute="Auto-Link" context="autolink" String="&autolinkregex;" lookAhead="true"/>
<RegExpr attribute="Mailto-Link" context="mailtolink" String="&mailtolinkregex;"/>
<!-- Emoji -->
<RegExpr attribute="Emoji" String="&emojiregex;"/>
<!-- Line Break -->
<RegExpr attribute="Line Break" minimal="true" String="&linebreakregex;"/>
<!-- Backslash Escapes -->
@@ -523,6 +553,7 @@
<Detect2Chars attribute="Backslash Escape" char="\" char1="-"/>
<Detect2Chars attribute="Backslash Escape" char="\" char1="."/>
<Detect2Chars attribute="Backslash Escape" char="\" char1="!"/>
<Detect2Chars attribute="Backslash Escape" char="\" char1="|"/>
<Detect2Chars attribute="Backslash Escape" char="\" char1="&lt;"/>
<Detect2Chars attribute="Backslash Escape" char="\" char1="&gt;"/>
<Detect2Chars attribute="Backslash Escape" char="\" char1="&amp;"/>
@@ -531,8 +562,7 @@
<RegExpr context="find-html-block" String="&lt;/?&htmlname;(?:[\s&gt;]|/&gt;|$)" lookAhead="true"/>
</context>
<context name="find-html-block" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
<IncludeRules context="FindSpecialHTMLTags##HTML"/>
<IncludeRules context="FindHTMLTags##HTML"/>
<IncludeRules context="FindElements##HTML"/>
</context>
<!-- Links and email: <https://example.com>, <example@kde.org> -->
@@ -606,6 +636,7 @@
<itemData name="Strong Text" defStyleNum="dsNormal" bold="true"/>
<itemData name="Strong-Emphasis Text" defStyleNum="dsNormal" italic="true" bold="true"/>
<itemData name="Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/>
<itemData name="Highlight Text" defStyleNum="dsAlert"/>
<itemData name="Normal Text: Link" defStyleNum="dsNormal" underline="true" spellChecking="false"/>
<itemData name="Horizontal Rule" defStyleNum="dsNormal" bold="true" spellChecking="false"/>
<itemData name="Line Break" defStyleNum="dsNormal" underline="true" color="#999999" spellChecking="false"/>
@@ -621,6 +652,7 @@
<itemData name="Blockquote: Strong Text" defStyleNum="dsAttribute" bold="true"/>
<itemData name="Blockquote: Strong-Emphasis Text" defStyleNum="dsAttribute" italic="true" bold="true"/>
<itemData name="Blockquote: Strikethrough Text" defStyleNum="dsAttribute" strikeOut="true"/>
<itemData name="Blockquote: Highlight Text" defStyleNum="dsAlert"/>
<itemData name="Blockquote: Link" defStyleNum="dsAttribute" underline="true" spellChecking="false"/>
<itemData name="List" defStyleNum="dsSpecialString" bold="1" spellChecking="false"/>
<itemData name="Number List" defStyleNum="dsSpecialString" spellChecking="false"/>
@@ -629,11 +661,14 @@
<itemData name="List: Strong Text" defStyleNum="dsNormal" bold="true"/>
<itemData name="List: Strong-Emphasis Text" defStyleNum="dsNormal" italic="true" bold="true"/>
<itemData name="List: Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/>
<itemData name="List: Highlight Text" defStyleNum="dsAlert"/>
<itemData name="List: Link" defStyleNum="dsNormal" underline="true" spellChecking="false"/>
<itemData name="List: Checkbox" defStyleNum="dsVariable" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Code" defStyleNum="dsInformation"/>
<itemData name="Fenced Code" defStyleNum="dsInformation" spellChecking="false"/>
<itemData name="Table" defStyleNum="dsPreprocessor"/>
<itemData name="Emoji" defStyleNum="dsSpecialChar" spellChecking="false"/>
<itemData name="Auto-Link" defStyleNum="dsOthers" spellChecking="false"/>
<itemData name="Link" defStyleNum="dsOthers" underline="true" spellChecking="false"/>
<itemData name="Mailto-Link" defStyleNum="dsOthers" spellChecking="false"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
<!DOCTYPE language
[
<!ENTITY space " ">
<!ENTITY end "&#59;">

Some files were not shown because too many files have changed in this diff Show More