256 lines · 6.5 KB · JSON
RawDownload
// Default semantic token rules for Zed (read-only).//// These rules map LSP semantic token types to syntax theme styles.// To customize, add rules to "semantic_token_rules" in your settings.json.// User-defined rules are prepended and take highest precedence.// Extension language rules are applied next.// These built-in defaults are applied last.//// Each rule has the following properties:// - `token_type`: The LSP semantic token type to match. If omitted, matches all types.// - `token_modifiers`: A list of LSP semantic token modifiers to match. All must be present.// - `style`: A list of syntax theme styles to try. The first one found is used.// - `foreground_color`: Override foreground color in hex format (e.g., "#ff0000").// - `background_color`: Override background color in hex format.// - `underline`: Boolean or color to underline with. If `true`, uses text color.// - `strikethrough`: Boolean or color. If `true`, uses text color.// - `font_weight`: One of "normal", "bold".// - `font_style`: One of "normal", "italic".//// See the VSCode docs [1] and the LSP Spec [2] for reasoning behind these defaults.//// [1]: https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide#standard-token-types-and-modifiers// [2]: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#semanticTokenTypes[  // Types  {    "token_type": "namespace",    "token_modifiers": [],    "style": ["namespace", "module", "type"],  },  {    "token_type": "class",    "token_modifiers": ["declaration"],    "style": ["type.class.definition", "type.definition"],  },  {    "token_type": "class",    "token_modifiers": ["definition"],    "style": ["type.class.definition", "type.definition"],  },  {    "token_type": "class",    "token_modifiers": [],    "style": ["type.class", "class", "type"],  },  {    "token_type": "enum",    "token_modifiers": ["declaration"],    "style": ["type.enum.definition", "type.definition"],  },  {    "token_type": "enum",    "token_modifiers": ["definition"],    "style": ["type.enum.definition", "type.definition"],  },  {    "token_type": "enum",    "token_modifiers": [],    "style": ["type.enum", "enum", "type"],  },  {    "token_type": "interface",    "token_modifiers": ["declaration"],    "style": ["type.interface.definition", "type.definition"],  },  {    "token_type": "interface",    "token_modifiers": ["definition"],    "style": ["type.interface.definition", "type.definition"],  },  {    "token_type": "interface",    "token_modifiers": [],    "style": ["type.interface", "interface", "type"],  },  {    "token_type": "struct",    "token_modifiers": ["declaration"],    "style": ["type.struct.definition", "type.definition"],  },  {    "token_type": "struct",    "token_modifiers": ["definition"],    "style": ["type.struct.definition", "type.definition"],  },  {    "token_type": "struct",    "token_modifiers": [],    "style": ["type.struct", "struct", "type"],  },  {    "token_type": "typeParameter",    "token_modifiers": ["declaration"],    "style": ["type.parameter.definition", "type.definition"],  },  {    "token_type": "typeParameter",    "token_modifiers": ["definition"],    "style": ["type.parameter.definition", "type.definition"],  },  {    "token_type": "typeParameter",    "token_modifiers": [],    "style": ["type.parameter", "type"],  },  {    "token_type": "type",    "token_modifiers": ["declaration"],    "style": ["type.definition"],  },  {    "token_type": "type",    "token_modifiers": ["definition"],    "style": ["type.definition"],  },  {    "token_type": "type",    "token_modifiers": [],    "style": ["type"],  },  // References  {    "token_type": "parameter",    "token_modifiers": ["declaration"],    "style": ["variable.parameter"]  },  {    "token_type": "parameter",    "token_modifiers": ["definition"],    "style": ["variable.parameter"]  },  {    "token_type": "parameter",    "token_modifiers": [],    "style": ["variable"],  },  {    "token_type": "variable",    "token_modifiers": ["defaultLibrary", "constant"],    "style": ["constant.builtin"],  },  {    "token_type": "variable",    "token_modifiers": ["defaultLibrary"],    "style": ["variable.builtin"],  },  {    "token_type": "variable",    "token_modifiers": ["constant"],    "style": ["constant"],  },  {    "token_type": "variable",    "token_modifiers": [],    "style": ["variable"],  },  {    "token_type": "property",    "token_modifiers": [],    "style": ["property"],  },  {    "token_type": "enumMember",    "token_modifiers": [],    "style": ["type.enum.member", "type.enum", "variant"],  },  {    "token_type": "decorator",    "token_modifiers": [],    "style": ["function.decorator", "function.annotation", "attribute"],  },  // Declarations in the docs, but in practice, also references  {    "token_type": "function",    "token_modifiers": ["defaultLibrary"],    "style": ["function.builtin"],  },  {    "token_type": "function",    "token_modifiers": [],    "style": ["function"],  },  {    "token_type": "method",    "token_modifiers": ["defaultLibrary"],    "style": ["function.builtin"],  },  {    "token_type": "method",    "token_modifiers": [],    "style": ["function.method", "function"],  },  {    "token_type": "macro",    "token_modifiers": [],    "style": ["function.macro", "function"],  },  {    "token_type": "label",    "token_modifiers": [],    "style": ["label"],  },  // Tokens  {    "token_type": "comment",    "token_modifiers": ["documentation"],    "style": ["comment.documentation", "comment.doc"],  },  {    "token_type": "comment",    "token_modifiers": [],    "style": ["comment"],  },  {    "token_type": "string",    "token_modifiers": ["documentation"],    "style": ["string.doc"],  },  {    "token_type": "string",    "token_modifiers": [],    "style": ["string"],  },  {    "token_type": "keyword",    "token_modifiers": [],    "style": ["keyword"],  },  {    "token_type": "number",    "token_modifiers": [],    "style": ["number"],  },  {    "token_type": "regexp",    "token_modifiers": [],    "style": ["string.regexp", "string"],  },  {    "token_type": "operator",    "token_modifiers": [],    "style": ["operator"],  },  // Not in the VS Code docs, but in the LSP spec.  {    "token_type": "modifier",    "token_modifiers": [],    "style": ["keyword.modifier"],  },  // C#  {    "token_type": "event",    "token_modifiers": [],    "style": ["type.event", "type"],  },]