Merge remote-tracking branch 'origin/13.0'
Conflicts: cmake/QtCreatorIDEBranding.cmake qbs/modules/qtc/qtc.qbs Change-Id: I2a3d92a14e4dd16897d19f7d8a8c7b0ec30d14a5
9
dist/changelog/changes-13.0.0.md
vendored
@@ -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
|
||||
|
||||
|
BIN
doc/qtcreator/images/icons/build.png
Normal file
After Width: | Height: | Size: 159 B |
BIN
doc/qtcreator/images/icons/cancel-build.png
Normal file
After Width: | Height: | Size: 167 B |
BIN
doc/qtcreator/images/icons/live-preview.png
Normal file
After Width: | Height: | Size: 239 B |
Before Width: | Height: | Size: 14 KiB |
BIN
doc/qtcreator/images/qtcreator-android-avd-manager.webp
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
doc/qtcreator/images/qtcreator-editor-toolbar-qml.webp
Normal file
After Width: | Height: | Size: 7.9 KiB |
BIN
doc/qtcreator/images/qtcreator-find-from-current-file.webp
Normal file
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 10 KiB |
BIN
doc/qtcreator/images/qtcreator-kit-selector.webp
Normal file
After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 45 KiB |
BIN
doc/qtcreator/images/qtcreator-live-preview.webp
Normal file
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 21 KiB |
BIN
doc/qtcreator/images/qtcreator-search-all-projects.webp
Normal file
After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 8.1 KiB |
BIN
doc/qtcreator/images/qtcreator-search-file-system.webp
Normal file
After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 11 KiB |
BIN
doc/qtcreator/images/qtcreator-search-reg-exp.webp
Normal file
After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 11 KiB |
BIN
doc/qtcreator/images/qtcreator-search-results-reg-exp.webp
Normal file
After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 7.1 KiB |
@@ -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.
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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}.
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
*/
|
@@ -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
|
||||
|
||||
|
@@ -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.
|
||||
|
@@ -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.
|
||||
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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}
|
||||
*/
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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}
|
||||
*/
|
@@ -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
|
||||
|
@@ -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}.
|
||||
|
408
doc/qtcreator/src/overview/license-LGPLv2.0.txt
Normal 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
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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.
|
||||
|
||||
|
@@ -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.
|
||||
*/
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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}
|
||||
*/
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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]
|
||||
|
@@ -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
|
||||
*/
|
||||
|
@@ -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
|
||||
|
@@ -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.
|
||||
|
@@ -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.
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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 >
|
||||
|
@@ -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
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
@@ -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
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
Before Width: | Height: | Size: 18 KiB |
BIN
doc/qtdesignstudio/images/studio-run-settings.webp
Normal file
After Width: | Height: | Size: 8.2 KiB |
39
doc/qtdesignstudio/src/overviews/studio-finding.qdoc
Normal 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
|
||||
|
||||
*/
|
@@ -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
|
||||
|
@@ -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",
|
||||
|
@@ -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)
|
||||
|
@@ -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,
|
||||
|
@@ -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
|
||||
|
5
src/libs/3rdparty/qtkeychain/qtkeychain.qbs
vendored
@@ -83,4 +83,9 @@ QtcLibrary {
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Export {
|
||||
Depends { name: "cpp" }
|
||||
cpp.includePaths: project.ide_source_tree + "/src/libs/3rdparty/"
|
||||
}
|
||||
}
|
||||
|
@@ -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()
|
||||
|
@@ -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
|
||||
|
@@ -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 */
|
||||
|
@@ -8,4 +8,5 @@ name = "pypi"
|
||||
[packages]
|
||||
click = "~= 8.0"
|
||||
jinja2 = "~= 3.0"
|
||||
lxml = "*"
|
||||
PyYAML = "*"
|
||||
|
@@ -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=">" />
|
||||
<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" />
|
||||
|
@@ -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
|
||||
|
@@ -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']
|
||||
|
143
src/libs/3rdparty/syntax-highlighting/data/generators/generate-html.pl
vendored
Normal 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=\"<\" char1=\"?\" lookAhead=\"true\" />\n</context>\n";
|
||||
$file =~ s/(?=<\/contexts\s*>)/$findphp/;
|
||||
}
|
||||
|
||||
print $output $file;
|
||||
print $output $warning;
|
55
src/libs/3rdparty/syntax-highlighting/data/generators/generate-nginx-lists.rb
vendored
Normal 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
|
@@ -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=\"<\" 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;
|
@@ -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
|
||||
|
498
src/libs/3rdparty/syntax-highlighting/data/generators/update_css_and_scss.py
vendored
Normal 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)
|
45
src/libs/3rdparty/syntax-highlighting/data/generators/update_less.py
vendored
Normal 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)
|
@@ -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
|
||||
|
@@ -1,2 +1,3 @@
|
||||
#!/bin/sh
|
||||
xmllint --noout --schema language.xsd $@
|
||||
schemadir=$(dirname "$0")
|
||||
xmllint --noout --schema "$schemadir"/language.xsd "$@"
|
||||
|
@@ -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>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE language SYSTEM "language.dtd"
|
||||
<!DOCTYPE language
|
||||
[
|
||||
<!ENTITY tab "	">
|
||||
<!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="<"/>
|
||||
</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="<" char1="<"/><!-- 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="&|;`" 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">
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE language SYSTEM "language.dtd">
|
||||
<!DOCTYPE language>
|
||||
<language
|
||||
version="1"
|
||||
kateversion="5.0"
|
||||
|
@@ -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="[@\\](?:[#$%&<>"@\\.]|::|---?)(?=&wordsep;)" />
|
||||
<RegExpr attribute="Escape sequence" context="#pop" String="[@\\](?:[#$%&<>"@\\.~=|]|::|---?)" />
|
||||
<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" />
|
||||
|
@@ -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;);">
|
||||
]>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE language SYSTEM "language.dtd">
|
||||
<!DOCTYPE language>
|
||||
<!--
|
||||
|
||||
*************************************************************************
|
||||
|
@@ -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 "&(?:#[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="<!--" beginRegion="comment" />
|
||||
<StringDetect attribute="CDATA" context="CDATA" String="<![CDATA[" beginRegion="cdata" />
|
||||
<RegExpr attribute="Doctype" context="Doctype" String="<!DOCTYPE\s+" insensitive="true" beginRegion="doctype" />
|
||||
<WordDetect attribute="Doctype" context="Doctype" String="<!DOCTYPE" insensitive="true" beginRegion="doctype" />
|
||||
<IncludeRules context="FindElements" />
|
||||
<RegExpr attribute="Processing Instruction" context="PI" String="<\?[\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="<(?=(&name;))" />
|
||||
<RegExpr attribute="Element Symbols" context="ElementTagNameClose" String="</(?=(&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="<style\b" insensitive="true" beginRegion="style" />
|
||||
<RegExpr attribute="Element" context="JS" String="<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="<pre" insensitive="true" beginRegion="pre" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<div" insensitive="true" beginRegion="div" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<table" insensitive="true" beginRegion="table" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<ul" insensitive="true" beginRegion="ul" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<ol" insensitive="true" beginRegion="ol" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<dl" insensitive="true" beginRegion="dl" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<article" insensitive="true" beginRegion="article" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<aside" insensitive="true" beginRegion="aside" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<details" insensitive="true" beginRegion="details" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<figure" insensitive="true" beginRegion="figure" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<footer" insensitive="true" beginRegion="footer" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<header" insensitive="true" beginRegion="header" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<main" insensitive="true" beginRegion="main" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<nav" insensitive="true" beginRegion="nav" />
|
||||
<WordDetect attribute="Element" context="El Open" String="<section" insensitive="true" beginRegion="section" />
|
||||
<RegExpr attribute="Element" context="El Open" String="<&name;" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</pre" insensitive="true" endRegion="pre" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</div" insensitive="true" endRegion="div" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</table" insensitive="true" endRegion="table" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</ul" insensitive="true" endRegion="ul" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</ol" insensitive="true" endRegion="ol" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</dl" insensitive="true" endRegion="dl" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</article" insensitive="true" endRegion="article" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</aside" insensitive="true" endRegion="aside" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</details" insensitive="true" endRegion="details" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</figure" insensitive="true" endRegion="figure" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</footer" insensitive="true" endRegion="footer" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</header" insensitive="true" endRegion="header" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</main" insensitive="true" endRegion="main" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</nav" insensitive="true" endRegion="nav" />
|
||||
<WordDetect attribute="Element" context="El Close" String="</section" insensitive="true" endRegion="section" />
|
||||
<RegExpr attribute="Element" context="El Close" String="</&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=">" />
|
||||
<DetectChar attribute="Element" context="#pop" char=">" />
|
||||
<context name="El Open" attribute="Error" lineEndContext="#stay">
|
||||
<Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1=">" />
|
||||
<DetectChar attribute="Element Symbols" context="#pop" char=">" />
|
||||
<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=">" />
|
||||
<DetectChar attribute="Element Symbols" context="#pop" char=">" />
|
||||
<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=">" />
|
||||
<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=">" />
|
||||
<RegExpr attribute="Error" context="#stay" String="\S" />
|
||||
</context>
|
||||
|
||||
<context name="CSS" attribute="Other Text" lineEndContext="#stay">
|
||||
<Detect2Chars attribute="Element" context="#pop" char="/" char1=">" endRegion="style" />
|
||||
<DetectChar attribute="Element" context="CSS content" char=">" />
|
||||
<context name="CSS" attribute="Error" lineEndContext="#stay">
|
||||
<Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1=">" endRegion="style" />
|
||||
<DetectChar attribute="Element Symbols" context="CSS content" char=">" />
|
||||
<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="</style\b" insensitive="true" endRegion="style" />
|
||||
<RegExpr attribute="Element Symbols" context="CSS content Close" String="</(?=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=">" />
|
||||
<DetectChar attribute="Element Symbols" context="JS content" char=">" />
|
||||
<IncludeRules context="DefaultJS" />
|
||||
</context>
|
||||
<context name="DefaultJS" attribute="Other Text" lineEndContext="#stay">
|
||||
<Detect2Chars attribute="Element" context="#pop" char="/" char1=">" endRegion="script" />
|
||||
<IncludeRules context="FindAttributes" />
|
||||
<RegExpr attribute="Error" context="#stay" String="\S" />
|
||||
<Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1=">" 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="</script\b" insensitive="true" endRegion="script" />
|
||||
<IncludeRules context="FindScriptTagClose" />
|
||||
<RegExpr attribute="Comment" context="JS comment close" String="//(?=.*</script\b)" insensitive="true" />
|
||||
</context>
|
||||
|
||||
<context name="FindScriptTagClose" attribute="Other Text" lineEndContext="#stay">
|
||||
<RegExpr attribute="Element Symbols" context="ScriptTagClose" String="</(?=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="</script\b" insensitive="true" endRegion="script" />
|
||||
<RegExpr attribute="Element Symbols" context="#pop!ScriptTagClose" String="</(?=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=""" />
|
||||
<DetectChar attribute="Value" context="Value SQ" char="'" />
|
||||
<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="[^><"'&\s=`{}]+" />
|
||||
<IncludeRules context="FindEntityRefs" />
|
||||
<RegExpr attribute="Value" context="#stay" String="/(?!>)|[^/><"'\s]" />
|
||||
<AnyChar attribute="Error" String=""'`=" />
|
||||
<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=""text/typescript""/>
|
||||
@@ -250,8 +268,8 @@
|
||||
<StringDetect attribute="Value" context="#pop#pop!Script HTML template" String="'text/html'"/>
|
||||
</context>
|
||||
|
||||
<context name="JSX" attribute="Other Text" lineEndContext="#stay">
|
||||
<DetectChar attribute="Element" context="JSX content" char=">" />
|
||||
<context name="JSX" attribute="Error" lineEndContext="#stay">
|
||||
<DetectChar attribute="Element Symbols" context="JSX content" char=">" />
|
||||
<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=">" />
|
||||
<context name="TypeScript" attribute="Error" lineEndContext="#stay">
|
||||
<DetectChar attribute="Element Symbols" context="TypeScript content" char=">" />
|
||||
<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=">" />
|
||||
<context name="MustacheJS" attribute="Error" lineEndContext="#stay">
|
||||
<DetectChar attribute="Element Symbols" context="MustacheJS content" char=">" />
|
||||
<IncludeRules context="DefaultJS" />
|
||||
</context>
|
||||
<context name="MustacheJS content" attribute="Other Text" lineEndContext="#stay">
|
||||
<RegExpr attribute="Element" context="El Close 2" String="</script\b" insensitive="true" endRegion="script" />
|
||||
<IncludeRules context="FindScriptTagClose" />
|
||||
<StringDetect attribute="Error" context="#stay" String="<script>" insensitive="true" />
|
||||
<RegExpr attribute="Error" context="#stay" String="<script\b" insensitive="true" />
|
||||
<WordDetect attribute="Error" context="#stay" String="<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=">" />
|
||||
<context name="Script HTML template" attribute="Error" lineEndContext="#stay">
|
||||
<DetectChar attribute="Element Symbols" context="Script HTML template content" char=">" />
|
||||
<IncludeRules context="DefaultJS" />
|
||||
</context>
|
||||
<context name="Script HTML template content" attribute="Other Text" lineEndContext="#stay">
|
||||
<RegExpr attribute="Element" context="El Close 2" String="</script\b" insensitive="true" endRegion="script" />
|
||||
<IncludeRules context="FindScriptTagClose" />
|
||||
<StringDetect attribute="Error" context="#stay" String="<script>" insensitive="true" />
|
||||
<RegExpr attribute="Error" context="#stay" String="<script\b" insensitive="true" />
|
||||
<WordDetect attribute="Error" context="#stay" String="<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" />
|
||||
|
@@ -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">
|
||||
|
@@ -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∫(\.((∫&exp;?+|&exp;)[fFdD]?\b|[fFdD]\b)?|&exp;[fFdD]?\b|[fFdD]\b)|\.∫&exp;?[fFdD]?\b)">
|
||||
<!ENTITY hexfloat "\b0[xX](&hex;\.?+&hex;?+|\.&hex;?)[pP][-+]?∫[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="""""/>
|
||||
<DetectChar attribute="String" context="String" char="""/>
|
||||
<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="""""/>
|
||||
</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"/>
|
||||
|
@@ -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">
|
||||
|
@@ -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=""" context="#pop" attribute="Style_String_Key" />
|
||||
<RegExpr String="\\(?:["\\/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="\\(?:["\\/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=""" context="#pop" attribute="Style_String_Value" />
|
||||
<RegExpr String="\\(?:["\\/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="\\(?:["\\/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">
|
||||
|
@@ -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*(?:>|&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="<"/>
|
||||
<Detect2Chars attribute="Backslash Escape" char="\" char1=">"/>
|
||||
<Detect2Chars attribute="Backslash Escape" char="\" char1="&"/>
|
||||
@@ -531,8 +562,7 @@
|
||||
<RegExpr context="find-html-block" String="</?&htmlname;(?:[\s>]|/>|$)" 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"/>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE language SYSTEM "language.dtd"
|
||||
<!DOCTYPE language
|
||||
[
|
||||
<!ENTITY space " ">
|
||||
<!ENTITY end ";">
|
||||
|