aboutsummaryrefslogtreecommitdiffstats
path: root/src/qttmlanguage
diff options
context:
space:
mode:
authorKarsten Heimrich <karsten.heimrich@qt.io>2017-01-05 14:40:50 +0100
committerKarsten Heimrich <karsten.heimrich@qt.io>2017-01-06 10:16:16 +0000
commit5ee1c4c3b4499084114f7eab80688028ae52556c (patch)
treede9b9109399736e5f8b396d2c48026d196d8985f /src/qttmlanguage
parent47811bb2c508ace4547923615295b5367aee7275 (diff)
Reuse TextMate language files for QML and qmake syntax highlighting
We remove our rather slow Classifier implementation and reuse the existing files from Baptist Benoist and cpp-qt.tmbundle. The aforementioned files implement QML and qmake syntax highlighting based on Visual Studio's capability to load TextMate bundles. Reference repositories: vscode-qml: https://github.com/bbenoist/vscode-qml cpp-qt.tmbundle: https://github.com/textmate/cpp-qt.tmbundle Change-Id: Ie3d0e01e1991b441c8e02e45a9fef3674844d9bf Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/qttmlanguage')
-rw-r--r--src/qttmlanguage/qml/LICENSE.MIT21
-rw-r--r--src/qttmlanguage/qml/qml.qmlproject.tmLanguage317
-rw-r--r--src/qttmlanguage/qt/LICENSE4
-rw-r--r--src/qttmlanguage/qt/pri.pro.tmLanguage346
4 files changed, 688 insertions, 0 deletions
diff --git a/src/qttmlanguage/qml/LICENSE.MIT b/src/qttmlanguage/qml/LICENSE.MIT
new file mode 100644
index 00000000..d7d49aa1
--- /dev/null
+++ b/src/qttmlanguage/qml/LICENSE.MIT
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 bbenoist
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/src/qttmlanguage/qml/qml.qmlproject.tmLanguage b/src/qttmlanguage/qml/qml.qmlproject.tmLanguage
new file mode 100644
index 00000000..9c75555f
--- /dev/null
+++ b/src/qttmlanguage/qml/qml.qmlproject.tmLanguage
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+ <dict>
+ <key>fileTypes</key>
+ <array>
+ <string>qml</string>
+ <string>qmlproject</string>
+ </array>
+ <key>name</key>
+ <string>QML</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>/\*(?!/)</string>
+ <key>comment</key>
+ <string>Block comment.</string>
+ <key>end</key>
+ <string>\*/</string>
+ <key>name</key>
+ <string>comment.block.documentation.qml</string>
+ </dict>
+ <dict>
+ <key>comment</key>
+ <string>Line comment.</string>
+ <key>match</key>
+ <string>//.*$</string>
+ <key>name</key>
+ <string>comment.line.double-slash.qml</string>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>\b(import)\s+</string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.other.import.qml</string>
+ </dict>
+ </dict>
+ <key>comment</key>
+ <string>import statement.</string>
+ <key>end</key>
+ <string>$</string>
+ <key>name</key>
+ <string>meta.import.qml</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.class.qml</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>constant.numeric.qml</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.other.import.qml</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.class.qml</string>
+ </dict>
+ </dict>
+ <key>comment</key>
+ <string>import Namespace VersionMajor.VersionMinor [as SingletonTypeIdentifier]</string>
+ <key>match</key>
+ <string>([\w\d\.]+)\s+(\d+\.\d+)(?:\s+(as)\s+([A-Z][\w\d]*))?</string>
+ <key>name</key>
+ <string>meta.import.namespace.qml</string>
+ </dict>
+ <dict>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>string.quoted.double.qml</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.other.import.qml</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.class.qml</string>
+ </dict>
+ </dict>
+ <key>comment</key>
+ <string>import &lt;string&gt; [as Script]</string>
+ <key>match</key>
+ <string>(\"[^\"]+\")(?:\s+(as)\s+([A-Z][\w\d]*))?</string>
+ <key>name</key>
+ <string>meta.import.dirjs.qml</string>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>comment</key>
+ <string>Capitalized word (class or enum).</string>
+ <key>match</key>
+ <string>\b[A-Z]\w*\b</string>
+ <key>name</key>
+ <string>support.class.qml</string>
+ </dict>
+ <dict>
+ <key>comment</key>
+ <string>onSomething - handler.</string>
+ <key>match</key>
+ <string>(((^|\{)\s*)|\b)on[A-Z]\w*\b</string>
+ <key>name</key>
+ <string>support.class.qml</string>
+ </dict>
+ <dict>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.other.qml</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>storage.modifier.qml</string>
+ </dict>
+ </dict>
+ <key>comment</key>
+ <string>id: &lt;something&gt;</string>
+ <key>match</key>
+ <string>(?:^|\{)\s*(id)\s*\:\s*([^;\s]+)\b</string>
+ <key>name</key>
+ <string>meta.id.qml</string>
+ </dict>
+ <dict>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.other.qml</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.other.qml</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.other.qml</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>storage.type.qml</string>
+ </dict>
+ <key>5</key>
+ <dict>
+ <key>name</key>
+ <string>entity.other.attribute-name.qml</string>
+ </dict>
+ </dict>
+ <key>comment</key>
+ <string>property definition.</string>
+ <key>match</key>
+ <string>^\s*(?:(default|readonly)\s+)?(property)\s+(?:(alias)|([\w\&lt;\&gt;]+))\s+(\w+)</string>
+ <key>name</key>
+ <string>meta.propertydef.qml</string>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>\b(signal)\s+(\w+)\s*</string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.other.qml</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>support.function.qml</string>
+ </dict>
+ </dict>
+ <key>comment</key>
+ <string>signal &lt;signalName&gt;[([&lt;type&gt; &lt;parameter&gt;[, ...]])]</string>
+ <key>end</key>
+ <string>;|(?=/)|$</string>
+ <key>name</key>
+ <string>meta.signal.qml</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>storage.type.qml</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>variable.parameter.qml</string>
+ </dict>
+ </dict>
+ <key>match</key>
+ <string>(\w+)\s+(\w+)</string>
+ <key>name</key>
+ <string>meta.signal.parameters.qml</string>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>constant.language.qml</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>storage.type.qml</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.control.qml</string>
+ </dict>
+ </dict>
+ <key>comment</key>
+ <string>js keywords.</string>
+ <key>match</key>
+ <string>(?:\b|\s+)(?:(true|false|null|undefined)|(var|void)|(on|as|enum|connect|break|case|catch|continue|debugger|default|delete|do|else|finally|for|if|in|instanceof|new|return|switch|this|throw|try|typeof|while|with))\b</string>
+ <key>name</key>
+ <string>meta.keyword.qml</string>
+ </dict>
+ <dict>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>storage.type.qml</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.function.untitled</string>
+ </dict>
+ </dict>
+ <key>comment</key>
+ <string>function definition.</string>
+ <key>match</key>
+ <string>\b(function)\s+([\w_]+)\s*(?=\()</string>
+ <key>name</key>
+ <string>meta.function.qml</string>
+ </dict>
+ <dict>
+ <key>comment</key>
+ <string>function call.</string>
+ <key>match</key>
+ <string>\b[\w_]+\s*(?=\()</string>
+ <key>name</key>
+ <string>support.function.qml</string>
+ </dict>
+ <dict>
+ <key>comment</key>
+ <string>property (property: &lt;something&gt;).</string>
+ <key>match</key>
+ <string>(?:^|\{|;)\s*[a-z][\w\.]*\s*(?=\:)</string>
+ <key>name</key>
+ <string>entity.other.attribute-name.qml</string>
+ </dict>
+ <dict>
+ <key>comment</key>
+ <string>property of the variable (name.property).</string>
+ <key>match</key>
+ <string>(?&lt;=\.)\b\w*</string>
+ <key>name</key>
+ <string>entity.other.attribute-name.qml</string>
+ </dict>
+ <dict>
+ <key>comment</key>
+ <string>All non colored words are assumed to be variables.</string>
+ <key>match</key>
+ <string>\b([a-z_]\w*)\b</string>
+ <key>name</key>
+ <string>variable.parameter</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>source.js</string>
+ </dict>
+ </array>
+ <key>scopeName</key>
+ <string>source.qml</string>
+ <key>uuid</key>
+ <string>13a281e0-0507-45b4-bb6c-a57177630f10</string>
+ </dict>
+</plist>
diff --git a/src/qttmlanguage/qt/LICENSE b/src/qttmlanguage/qt/LICENSE
new file mode 100644
index 00000000..3e061a44
--- /dev/null
+++ b/src/qttmlanguage/qt/LICENSE
@@ -0,0 +1,4 @@
+Permission to copy, use, modify, sell and distribute this
+software is granted. This software is provided "as is" without
+express or implied warranty, and with no claim as to its
+suitability for any purpose.
diff --git a/src/qttmlanguage/qt/pri.pro.tmLanguage b/src/qttmlanguage/qt/pri.pro.tmLanguage
new file mode 100644
index 00000000..f18bef7e
--- /dev/null
+++ b/src/qttmlanguage/qt/pri.pro.tmLanguage
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+ <dict>
+ <key>fileTypes</key>
+ <array>
+ <string>pro</string>
+ <string>pri</string>
+ </array>
+ <key>keyEquivalent</key>
+ <string>^~Q</string>
+ <key>name</key>
+ <string>qmake Project file</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>(TEMPLATE)\s*(=)</string>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>variable.language.qmake</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.separator.key-value.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>$\n?</string>
+ <key>name</key>
+ <string>markup.other.template.qmake</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>match</key>
+ <string>\b(app|lib|subdirs|vcapp|vclib)\b</string>
+ <key>name</key>
+ <string>keyword.other.qmake</string>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>(CONFIG)\s*(\+|\-)?(=)</string>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>variable.language.qmake</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.separator.key-value.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>$\n?</string>
+ <key>name</key>
+ <string>markup.other.config.qmake</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>match</key>
+ <string>\b(release|debug|warn_(on|off)|qt|opengl|thread|x11|windows|console|dll|staticlib|plugin|designer|uic3|no_lflags_merge|exceptions|rtti|stl|flat|app_bundle|no_batch|qtestlib|ppc|x86)\b</string>
+ <key>name</key>
+ <string>keyword.other.qmake</string>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>(QT)\s*(\+|\-)?(=)</string>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>variable.language.qmake</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.separator.key-value.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>$\n?</string>
+ <key>name</key>
+ <string>markup.other.qt.qmake</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>match</key>
+ <string>\b(core|gui|network|opengl|sql|svg|xml|qt3support)\b</string>
+ <key>name</key>
+ <string>keyword.other.qmake</string>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>match</key>
+ <string>\b(R(C(C_DIR|_FILE)|E(S_FILE|QUIRES))|M(OC_DIR|AKE(_MAKEFILE|FILE(_GENERATOR)?))|S(RCMOC|OURCES|UBDIRS)|HEADERS|YACC(SOURCES|IMPLS|OBJECTS)|CONFIG|T(RANSLATIONS|ARGET(_(EXT|\d+(\.\d+\.\d+)?))?)|INCLUDEPATH|OBJ(MOC|ECTS(_DIR)?)|D(SP_TEMPLATE|ISTFILES|E(STDIR(_TARGET)?|PENDPATH|F(_FILE|INES))|LLDESTDIR)|UI(C(IMPLS|OBJECTS)|_(SOURCES_DIR|HEADERS_DIR|DIR))|P(RE(COMPILED_HEADER|_TARGETDEPS)|OST_TARGETDEPS)|V(PATH|ER(SION|_(M(IN|AJ)|PAT)))|Q(MAKE(SPEC|_(RUN_C(XX(_IMP)?|C(_IMP)?)|MOC_SRC|C(XXFLAGS_(RELEASE|MT(_D(BG|LL(DBG)?))?|SHLIB|THREAD|DEBUG|WARN_O(N|FF))|FLAGS_(RELEASE|MT(_D(BG|LL(DBG)?))?|SHLIB|THREAD|DEBUG|WARN_O(N|FF))|LEAN)|TARGET|IN(CDIR(_(X|THREAD|OPENGL|QT))?|FO_PLIST)|UIC|P(RE_LINK|OST_LINK)|EXT(_(MOC|H|CPP|YACC|OBJ|UI|PRL|LEX)|ENSION_SHLIB)|Q(MAKE|T_DLL)|F(ILETAGS|AILED_REQUIREMENTS)|L(N_SHLIB|I(B(S(_(RT(MT)?|X|CONSOLE|THREAD|OPENGL(_QT)?|QT(_(OPENGL|DLL))?|WINDOWS))?|_FLAG|DIR(_(X|OPENGL|QT|FLAGS))?)|NK_SHLIB_CMD)|FLAGS(_(RELEASE|S(H(LIB|APP)|ONAME)|CONSOLE(_DLL)?|THREAD|DEBUG|PLUGIN|QT_DLL|WINDOWS(_DLL)?))?)|A(R_CMD|PP_(OR_DLL|FLAG))))?|T_THREAD)|FORMS|L(IBS|EX(SOURCES|IMPLS|OBJECTS)))\b</string>
+ <key>name</key>
+ <string>variable.language.qmake</string>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>(\b([\w\d_]+\.[\w\d_]+|[A-Z_]+))?\s*(\+|\-)?(=)</string>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>variable.other.qmake</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.separator.key-value.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>$\n?</string>
+ <key>name</key>
+ <string>markup.other.assignment.qmake</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.definition.variable.qmake</string>
+ </dict>
+ </dict>
+ <key>match</key>
+ <string>(\$\$)([A-Z_]+|[\w\d_]+\.[\w\d_]+)|\$\([\w\d_]+\)</string>
+ <key>name</key>
+ <string>variable.other.qmake</string>
+ </dict>
+ <dict>
+ <key>match</key>
+ <string>[\w\d\/_\-\.\:]+</string>
+ <key>name</key>
+ <string>constant.other.filename.qmake</string>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>"</string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>0</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.definition.string.begin.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>"</string>
+ <key>endCaptures</key>
+ <dict>
+ <key>0</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.definition.string.end.qmake</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>string.quoted.double.qmake</string>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>`</string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>0</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.definition.string.begin.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>`</string>
+ <key>endCaptures</key>
+ <dict>
+ <key>0</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.definition.string.end.qmake</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>string.interpolated.qmake</string>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>(\\)</string>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>string.regexp.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>^[^#]</string>
+ <key>name</key>
+ <string>markup.other.assignment.continuation.qmake</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.definition.comment.qmake</string>
+ </dict>
+ </dict>
+ <key>match</key>
+ <string>(#).*$\n?</string>
+ <key>name</key>
+ <string>comment.line.number-sign.qmake</string>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>(^[ \t]+)?(?=#)</string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.whitespace.comment.leading.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>(?!\G)</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>#</string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>0</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.definition.comment.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>\n</string>
+ <key>name</key>
+ <string>comment.line.number-sign.qmake</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>\b(basename|CONFIG|contains|count|dirname|error|exists|find|for|include|infile|isEmpty|join|member|message|prompt|quote|sprintf|system|unique|warning)\s*(\()</string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.function.qmake</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.definition.parameters.qmake</string>
+ </dict>
+ </dict>
+ <key>comment</key>
+ <string>entity.name.function.qmake</string>
+ <key>contentName</key>
+ <string>variable.parameter.qmake</string>
+ <key>end</key>
+ <string>(\))</string>
+ <key>endCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.definition.parameters.qmake</string>
+ </dict>
+ </dict>
+ </dict>
+ <dict>
+ <key>match</key>
+ <string>\b(unix|win32|mac|debug|release)\b</string>
+ <key>name</key>
+ <string>keyword.other.scope.qmake</string>
+ </dict>
+ <dict>
+ <key>begin</key>
+ <string>(^[ \t]+)?(?=#)</string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.whitespace.comment.leading.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>(?!\G)</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>#</string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>0</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.definition.comment.qmake</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>\n</string>
+ <key>name</key>
+ <string>comment.line.number-sign.qmake</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ <key>scopeName</key>
+ <string>source.qmake</string>
+ <key>uuid</key>
+ <string>3D54A8F9-17CA-422A-A1D6-DE5F98B9DEF4</string>
+ </dict>
+</plist>