nvim-treesitter/queries/usd/highlights.scm
Christian Clason 1ae9b0e455 feat!: align standard captures with upstream
Problem: Sharing highlight queries with upstream tree-sitter and
Helix is difficult.

Solution: Where reasonable, use capture names in tree-sitter's standard
list or Helix's Atom-style hierarchy.

Specifically:

* tree-sitter "standard capture names"
  (3f44b89685/highlight/src/lib.rs (L20-L72)):

  - `@parameter` -> `@variable.parameter`
  - `@field` -> `@variable.member`
  - `@namespace` -> `@module`
  - `@float` -> `@number.float`
  - `@symbol` -> `@string.special.symbol`
  - `@string.regex` -> `@string.regexp`
  - `@text.*` -> `@markup.*` (`strong`, `italic`, `link`, `strikethrough`; with exceptions; see below)
  - `@text.title` -> `@markup.heading`
  - `@text.literal` -> `@markup.raw`
  - `@text.reference` -> `@markup.link`
  - `@text.uri` -> `@markup.link.url` (in markup links)
  - `@string.special` -> `@markup.link.label` (non-url links)
  - `@punctuation.special` -> `@markup.list` (markdown lists only; move subitems from `@text.todo`)

* Helix captures
  (https://docs.helix-editor.com/master/themes.html#syntax-highlighting):

  - `@method` -> `@function.method`
  - `@method.call` -> `@function.method.call`
  - `@text.{todo,warning,note,danger}` -> `@comment.{error,warning,hint,info,todo}`
  - `@text.diff.{add,delete,}` -> `@diff.{plus,minus,delta}`
  - `@text.uri` -> `@string.special.url` (outside markup)
  - `@preproc` -> `@keyword.directive`
  - `@define` -> `@keyword.directive`(`.define`?)
  - `@storageclass` -> `@keyword.storage`
  - `@conditional` -> `@keyword.conditional`
  - `@debug` -> `@keyword.debug`
  - `@exception` -> `@keyword.exception`
  - `@include` -> `@keyword.import`
  - `@repeat` -> `@keyword.repeat`

* cleanup

  - remove some redundant `@conceal` (but still allow it for conceal-only patterns)
  - remove obsolete `@error` (syntax linting is out of scope for this repo)
  - sort, cleanup capture list in `CONTRIBUTING.md`
2024-01-19 16:58:37 +01:00

181 lines
3.2 KiB
Scheme

(None) @constant.builtin
(asset_path) @string.special.url
(attribute_property) @property
(bool) @boolean
(comment) @comment @spell
(custom) @function.builtin
(float) @number.float
(integer) @number
(orderer) @function.call
(prim_path) @string.special
(relationship_type) @type
(string) @string
(uniform) @function.builtin
(variant_set_definition) @keyword
;; Prefer namespace highlighting, if any.
;;
;; e.g. `rel fizz` - `fizz` uses `@identifier`
;; e.g. `rel foo:bar:fizz` - `foo` and `bar` use `@module` and `fizz` uses `@identifier`
;;
(identifier) @variable
(namespace_identifier) @module
(namespace_identifier
(identifier) @module
)
[
"class"
"def"
"over"
] @keyword.function
["(" ")" "[" "]" "{" "}"] @punctuation.bracket
[":" ";" "."] @punctuation.delimiter
[
"="
] @operator
(attribute_type) @type
(
;; Reference: https://openusd.org/release/api/sdf_page_front.html
(attribute_type) @type.builtin
(#any-of? @type.builtin
;; Scalar types
"asset" "asset[]"
"bool" "bool[]"
"double" "double[]"
"float" "float[]"
"half" "half[]"
"int" "int[]"
"int64" "int64[]"
"string" "string[]"
"timecode" "timecode[]"
"token" "token[]"
"uchar" "uchar[]"
"uint" "uint[]"
"uint64" "uint64[]"
;; Dimensioned Types
"double2" "double2[]"
"double3" "double3[]"
"double4" "double4[]"
"float2" "float2[]"
"float3" "float3[]"
"float4" "float4[]"
"half2" "half2[]"
"half3" "half3[]"
"half4" "half4[]"
"int2" "int2[]"
"int3" "int3[]"
"int4" "int4[]"
"matrix2d" "matrix2d[]"
"matrix3d" "matrix3d[]"
"matrix4d" "matrix4d[]"
"quatd" "quatd[]"
"quatf" "quatf[]"
"quath" "quath[]"
;; Extra Types
"color3f" "color3f[]"
"normal3f" "normal3f[]"
"point3f" "point3f[]"
"texCoord2f" "texCoord2f[]"
"vector3d" "vector3d[]"
"vector3f" "vector3f[]"
"vector3h" "vector3h[]"
"dictionary"
;; Deprecated Types
"EdgeIndex" "EdgeIndex[]"
"FaceIndex" "FaceIndex[]"
"Matrix4d" "Matrix4d[]"
"PointIndex" "PointIndex[]"
"PointFloat" "PointFloat[]"
"Transform" "Transform[]"
"Vec3f" "Vec3f[]"
)
)
(
(identifier) @keyword
(#any-of? @keyword
;; Reference: https://openusd.org/release/api/sdf_page_front.html
;; LIVRPS names
"inherits"
"payload"
"references"
"specializes"
"variantSets"
"variants"
; assetInfo names
"assetInfo"
"identifier"
"name"
"payloadAssetDependencies"
"version"
;; clips names
"clips"
"active"
"assetPaths"
"manifestAssetPath"
"primPath"
"templateAssetPath"
"templateEndTime"
"templateStartTime"
"templateStride"
"times"
;; customData names
"customData"
"apiSchemaAutoApplyTo"
"apiSchemaOverridePropertyNames"
"className"
"extraPlugInfo"
"isUsdShadeContainer"
"libraryName"
"providesUsdShadeConnectableAPIBehavior"
"requiresUsdShadeEncapsulation"
"skipCodeGeneration"
;; Layer metadata names
"colorConfiguration"
"colorManagementSystem"
"customLayerData"
"defaultPrim"
"doc"
"endTimeCode"
"framesPerSecond"
"owner"
"startTimeCode"
"subLayers"
;; Prim metadata
"instanceable"
)
)
;; Common attribute metadata
(
(layer_offset
(identifier) @keyword
(#any-of? @keyword
"offset"
"scale"
)
)
)
;; Docstrings in USD
(metadata
(comment)*
(string) @comment.documentation
)