From 74f42680008083befdf5f66a680fcbde33319e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20R=2E=20Gu=C3=A9rin?= Date: Sat, 4 Jul 2026 21:33:16 +0200 Subject: [PATCH] Update SlightLisp grammar (#15888) --- languages.toml | 2 +- runtime/queries/slisp/highlights.scm | 31 +++++++++++++++++++++------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/languages.toml b/languages.toml index 927c89d6..4b6b6e10 100644 --- a/languages.toml +++ b/languages.toml @@ -5234,7 +5234,7 @@ indent = { tab-width = 2, unit = " " } [[grammar]] name = "slisp" -source = { git = "https://github.com/xenogenics/tree-sitter-slisp", rev = "29f9c6707ce9dfc2fc915d175ec720b207f179f3" } +source = { git = "https://git.sr.ht/~xguerin/tree-sitter-slisp", rev = "e14f62169145d9661c1ab16790f527770d157bb8"} [[language]] name = "nearley" diff --git a/runtime/queries/slisp/highlights.scm b/runtime/queries/slisp/highlights.scm index 087349fd..a27c1486 100644 --- a/runtime/queries/slisp/highlights.scm +++ b/runtime/queries/slisp/highlights.scm @@ -4,11 +4,12 @@ ;; Let binding [ "let" ] @keyword -(let_bindings name: (symbol) @variable) - ;; Apply (apply_stmt . (symbol) @function) +;; Quasiquote template head (constructed application) +(quasi_list . (symbol) @function) + ;; Use module [ "use" ] @keyword @@ -25,27 +26,32 @@ (external_definition name: (symbol) @function) (external_definition signature: (signature (symbol) @variable.parameter (dot) (external_type) @type.builtin)) -(external_definition docstring: (string) @comment) +(external_definition docstring: (string) @string.documentation) (external_definition return_type: (external_type) @type.builtin) ;; Function definitions -[ "def" ] @keyword.function +[ "def" ] @keyword (function_definition name: (symbol) @function) (function_definition parameters: (parameters (symbol) @variable.parameter)) -(function_definition docstring: (string) @comment) +(function_definition docstring: (string) @string.documentation) ;; Macro definitions [ "mac" ] @keyword (macro_definition name: (symbol) @function) (macro_definition parameters: (parameters (symbol) @variable.parameter)) -(macro_definition docstring: (string) @comment) +(macro_definition docstring: (string) @string.documentation) ;; Lambda [ "\\" ] @keyword (lambda_stmt parameters: (parameters (symbol) @variable.parameter)) +(lambda_stmt docstring: (string) @string.documentation) + +;; Decons bindings. +(decons_stmt (symbol) @variable.parameter) +(decons_item (symbol) @variable.parameter) ;; Atoms (char) @constant.character @@ -57,18 +63,27 @@ [ "(" ")" ] @punctuation.bracket ;; Operators +(ampersand) @operator +(colon) @operator (dot) @operator (tilde) @operator +(tilde_splice) @operator (backquote) @operator (quote) @operator (unquote) @operator (unquote_splice) @operator -;; Highlight nil t as constant +;; Highlight wildcard as constant +(wildcard) @constant.builtin + +;; Highlight nil as constant [ "nil" ] @constant.builtin ;; Highlight as t as boolean constant [ "T" ] @constant.builtin.boolean ;; Highlight variable names used in anamorphic macros. -[ "it" ] @variable.builtin +[ "it" "self" ] @variable.builtin + +;; Highlight generated symbols (#name) used for macro hygiene. +(gensym) @variable.special -- 2.51.2