mirror of
https://github.com/slint-ui/slint.git
synced 2025-08-27 05:44:08 +00:00
103 lines
3.1 KiB
YAML
103 lines
3.1 KiB
YAML
%YAML 1.2
|
|
---
|
|
# Copyright © SixtyFPS GmbH <info@slint.dev>
|
|
# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
|
|
|
|
# See http://www.sublimetext.com/docs/3/syntax.html
|
|
name: Slint
|
|
file_extensions:
|
|
- 'slint'
|
|
scope: source.slint
|
|
|
|
contexts:
|
|
# The prototype context is prepended to all contexts but those setting
|
|
# meta_include_prototype: false.
|
|
prototype:
|
|
- include: comments
|
|
|
|
main:
|
|
# The main context is the initial starting point of our syntax.
|
|
# Include other contexts from here (or specify them directly).
|
|
- include: property
|
|
- include: color
|
|
- include: types
|
|
- include: constants
|
|
- include: keywords
|
|
- include: numbers
|
|
- include: symbols
|
|
- include: strings
|
|
|
|
property:
|
|
- match: '[a-zA-Z_][a-zA-Z_\-0-9]*:'
|
|
scope: variable.slint
|
|
- match: '[a-zA-Z_][a-zA-Z_\-0-9]* *<?=>'
|
|
scope: variable.slint
|
|
|
|
color:
|
|
- match: '#[0-9a-fA-F]+'
|
|
scope: constant.other.color.slint
|
|
|
|
types:
|
|
- match: '\b(int|bool|float|duration|angle|string|image|brush|color|length|physical-length|relative-font-size)\b'
|
|
scope: storage.type.slint
|
|
|
|
constants:
|
|
- match: '\b(blue|red|green|yellow|red|black|ease|ease_in|ease_out|ease_in_out)\b'
|
|
scope: support.constant.slint
|
|
|
|
keywords:
|
|
# Note that backslashes don't need to be escaped within single quoted
|
|
# strings in YAML. When using single quoted strings, only single quotes
|
|
# need to be escaped: this is done by using two single quotes next to each
|
|
# other.
|
|
- match: '\b(import|from|export|global|struct|enum|component|inherits)\b'
|
|
scope: keyword.slint
|
|
- match: '\b(property|callback|animate|states|transitions|function|in|out|in-out|private|public)\b'
|
|
scope: keyword.other.slint
|
|
- match: '\b(if|for|return)\b'
|
|
scope: keyword.control.slint
|
|
|
|
numbers:
|
|
- match: '\b[0-9]+\.?[0-9]*[a-z%]*\b'
|
|
scope: constant.numeric.slint
|
|
|
|
symbols:
|
|
- match: '[\!\&\|]+'
|
|
scope: keyword.operator.logical.slint
|
|
- match: '[\<\=\>]+'
|
|
scope: keyword.operator.comparison.slint
|
|
- match: '[\:\<\=\>]+'
|
|
scope: keyword.operator.assignment.slint
|
|
- match: '[\!\%\&\(\)\+\,\-\/\*\<\=\>\?\[\]\|\;]+'
|
|
scope: keyword.operator.slint
|
|
|
|
strings:
|
|
# Strings begin and end with quotes, and use backslashes as an escape
|
|
# character.
|
|
- match: '"'
|
|
scope: punctuation.definition.string.begin.slint
|
|
push: inside_string
|
|
|
|
inside_string:
|
|
- meta_include_prototype: false
|
|
- meta_scope: string.quoted.double.slint
|
|
- match: '\.'
|
|
scope: constant.character.escape.slint
|
|
- match: '"'
|
|
scope: punctuation.definition.string.end.slint
|
|
pop: true
|
|
|
|
comments:
|
|
# Comments begin with a '//' and finish at the end of the line.
|
|
- match: '//'
|
|
scope: punctuation.definition.comment.slint
|
|
push:
|
|
# This is an anonymous context push for brevity.
|
|
- meta_scope: comment.line.double-slash.slint
|
|
- match: $\n?
|
|
pop: true
|
|
- match: '/\*'
|
|
push:
|
|
- meta_scope: comment.line
|
|
- match: '\*/'
|
|
pop: true
|