tm-grammars
Version:
Collecton of TextMate grammars in JSON
286 lines (285 loc) • 10.7 kB
JSON
{
"displayName": "Qt Style Sheets",
"name": "qss",
"patterns": [
{
"include": "#comment-block"
},
{
"include": "#rule-list"
},
{
"include": "#selector"
}
],
"repository": {
"color": {
"patterns": [
{
"begin": "\\b(rgb|rgba|hsv|hsva|hsl|hsla)\\s*\\(",
"beginCaptures": {
"1": {
"name": "entity.name.function.qss"
}
},
"description": "Color Type",
"end": "\\)",
"patterns": [
{
"include": "#comment-block"
},
{
"include": "#number"
}
]
},
{
"match": "\\b(white|black|red|darkred|green|darkgreen|blue|darkblue|cyan|darkcyan|magenta|darkmagenta|yellow|darkyellow|gray|darkgray|lightgray|transparent|color0|color1)\\b",
"name": "support.constant.property-value.named-color.qss"
},
{
"match": "#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",
"name": "support.constant.property-value.color.qss"
}
]
},
"comment-block": {
"patterns": [
{
"begin": "/\\*",
"end": "\\*/",
"name": "comment.block.qss"
}
]
},
"icon-properties": {
"patterns": [
{
"match": "\\b(backward-icon|cd-icon|computer-icon|desktop-icon|dialog-apply-icon|dialog-cancel-icon|dialog-close-icon|dialog-discard-icon|dialog-help-icon|dialog-no-icon|dialog-ok-icon|dialog-open-icon|dialog-reset-icon|dialog-save-icon|dialog-yes-icon|directory-closed-icon|directory-icon|directory-link-icon|directory-open-icon|dockwidget-close-icon|downarrow-icon|dvd-icon|file-icon|file-link-icon|filedialog-contentsview-icon|filedialog-detailedview-icon|filedialog-end-icon|filedialog-infoview-icon|filedialog-listview-icon|filedialog-new-directory-icon|filedialog-parent-directory-icon|filedialog-start-icon|floppy-icon|forward-icon|harddisk-icon|home-icon|leftarrow-icon|messagebox-critical-icon|messagebox-information-icon|messagebox-question-icon|messagebox-warning-icon|network-icon|rightarrow-icon|titlebar-contexthelp-icon|titlebar-maximize-icon|titlebar-menu-icon|titlebar-minimize-icon|titlebar-normal-icon|titlebar-close-icon|titlebar-shade-icon|titlebar-unshade-icon|trash-icon|uparrow-icon)\\b",
"name": "support.type.property-name.qss"
}
]
},
"id-selector": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.entity.qss"
},
"2": {
"name": "entity.name.tag.qss"
}
},
"match": "(#)([a-zA-Z][a-zA-Z0-9_-]*)"
}
]
},
"number": {
"patterns": [
{
"description": "floating number",
"match": "\\b(\\d+)?\\.(\\d+)\\b",
"name": "constant.numeric.qss"
},
{
"description": "percentage",
"match": "\\b(\\d+)%",
"name": "constant.numeric.qss"
},
{
"description": "length",
"match": "\\b(\\d+)(px|pt|em|ex)?\\b",
"name": "constant.numeric.qss"
},
{
"description": "integer",
"match": "\\b(\\d+)\\b",
"name": "constant.numeric.qss"
}
]
},
"properties": {
"patterns": [
{
"include": "#property-values"
},
{
"match": "\\b(paint-alternating-row-colors-for-empty-area|dialogbuttonbox-buttons-have-icons|titlebar-show-tooltips-on-buttons|messagebox-text-interaction-flags|lineedit-password-mask-delay|outline-bottom-right-radius|lineedit-password-character|selection-background-color|outline-bottom-left-radius|border-bottom-right-radius|alternate-background-color|widget-animation-duration|border-bottom-left-radius|show-decoration-selected|outline-top-right-radius|outline-top-left-radius|border-top-right-radius|border-top-left-radius|background-attachment|subcontrol-position|border-bottom-width|border-bottom-style|border-bottom-color|background-position|border-right-width|border-right-style|border-right-color|subcontrol-origin|border-left-width|border-left-style|border-left-color|background-origin|background-repeat|border-top-width|border-top-style|border-top-color|background-image|background-color|text-decoration|selection-color|background-clip|padding-bottom|outline-radius|outline-offset|image-position|gridline-color|padding-right|outline-style|outline-color|margin-bottom|button-layout|border-radius|border-bottom|padding-left|margin-right|border-width|border-style|border-image|border-color|border-right|padding-top|margin-left|font-weight|font-family|border-left|text-align|min-height|max-height|margin-top|font-style|border-top|background|min-width|max-width|icon-size|font-size|position|spacing|padding|outline|opacity|margin|height|bottom|border|width|right|image|color|left|font|top)\\b",
"name": "support.type.property-name.qss"
},
{
"include": "#icon-properties"
}
]
},
"property-selector": {
"patterns": [
{
"begin": "\\[",
"end": "\\]",
"patterns": [
{
"include": "#comment-block"
},
{
"include": "#string"
},
{
"match": "\\b[_a-zA-Z]\\w*\\b",
"name": "variable.parameter.qml"
}
]
}
]
},
"property-values": {
"patterns": [
{
"begin": ":",
"end": ";|(?=\\})",
"patterns": [
{
"include": "#comment-block"
},
{
"include": "#color"
},
{
"begin": "\\b(qlineargradient|qradialgradient|qconicalgradient)\\s*\\(",
"beginCaptures": {
"1": {
"name": "entity.name.function.qss"
}
},
"description": "Gradient Type",
"end": "\\)",
"patterns": [
{
"include": "#comment-block"
},
{
"match": "\\b(x1|y1|x2|y2|stop|angle|radius|cx|cy|fx|fy)\\b",
"name": "variable.parameter.qss"
},
{
"include": "#color"
},
{
"include": "#number"
}
]
},
{
"begin": "\\b(url)\\s*\\(",
"beginCaptures": {
"1": {
"name": "entity.name.function.qss"
}
},
"contentName": "string.unquoted.qss",
"description": "URL Type",
"end": "\\)"
},
{
"match": "\\bpalette\\s*(?=\\()\\b",
"name": "entity.name.function.qss"
},
{
"match": "\\b(highlighted-text|alternate-base|line-through|link-visited|dot-dot-dash|window-text|button-text|bright-text|underline|no-repeat|highlight|overline|absolute|relative|repeat-y|repeat-x|midlight|selected|disabled|dot-dash|content|padding|oblique|stretch|repeat|window|shadow|button|border|margin|active|italic|normal|outset|groove|double|dotted|dashed|repeat|scroll|center|bottom|light|solid|ridge|inset|fixed|right|text|link|dark|base|bold|none|left|mid|off|top|on)\\b",
"name": "support.constant.property-value.qss"
},
{
"match": "\\b(true|false)\\b",
"name": "constant.language.boolean.qss"
},
{
"include": "#string"
},
{
"include": "#number"
}
]
}
]
},
"pseudo-states": {
"patterns": [
{
"match": "\\b(active|adjoins-item|alternate|bottom|checked|closable|closed|default|disabled|editable|edit-focus|enabled|exclusive|first|flat|floatable|focus|has-children|has-siblings|horizontal|hover|indeterminate|last|left|maximized|middle|minimized|movable|no-frame|non-exclusive|off|on|only-one|open|next-selected|pressed|previous-selected|read-only|right|selected|top|unchecked|vertical|window)\\b",
"name": "keyword.control.qss"
}
]
},
"rule-list": {
"patterns": [
{
"begin": "\\{",
"end": "\\}",
"patterns": [
{
"include": "#comment-block"
},
{
"include": "#properties"
},
{
"include": "#icon-properties"
}
]
}
]
},
"selector": {
"patterns": [
{
"include": "#stylable-widgets"
},
{
"include": "#sub-controls"
},
{
"include": "#pseudo-states"
},
{
"include": "#property-selector"
},
{
"include": "#id-selector"
}
]
},
"string": {
"description": "String literal with double or signle quote.",
"patterns": [
{
"begin": "'",
"end": "'",
"name": "string.quoted.single.qml"
},
{
"begin": "\"",
"end": "\"",
"name": "string.quoted.double.qml"
}
]
},
"stylable-widgets": {
"patterns": [
{
"match": "\\b(QAbstractScrollArea|QAbstractItemView|QCheckBox|QColumnView|QComboBox|QDateEdit|QDateTimeEdit|QDialog|QDialogButtonBox|QDockWidget|QDoubleSpinBox|QFrame|QGroupBox|QHeaderView|QLabel|QLineEdit|QListView|QListWidget|QMainWindow|QMenu|QMenuBar|QMessageBox|QProgressBar|QPlainTextEdit|QPushButton|QRadioButton|QScrollBar|QSizeGrip|QSlider|QSpinBox|QSplitter|QStatusBar|QTabBar|QTabWidget|QTableView|QTableWidget|QTextEdit|QTimeEdit|QToolBar|QToolButton|QToolBox|QToolTip|QTreeView|QTreeWidget|QWidget)\\b",
"name": "entity.name.type.qss"
}
]
},
"sub-controls": {
"patterns": [
{
"match": "\\b(add-line|add-page|branch|chunk|close-button|corner|down-arrow|down-button|drop-down|float-button|groove|indicator|handle|icon|item|left-arrow|left-corner|menu-arrow|menu-button|menu-indicator|right-arrow|pane|right-corner|scroller|section|separator|sub-line|sub-page|tab|tab-bar|tear|tearoff|text|title|up-arrow|up-button)\\b",
"name": "entity.other.inherited-class.qss"
}
]
}
},
"scopeName": "source.qss"
}