summaryrefslogtreecommitdiff
path: root/queries/commonlisp
diff options
context:
space:
mode:
authorStephan Seitz <stephan.seitz@fau.de>2021-04-05 14:37:53 +0200
committerStephan Seitz <stephan.lauf@yahoo.de>2021-05-17 20:45:31 +0200
commit64f13eace5c7fa3b2b99c05cadbbe46f1f3a0aad (patch)
treeff6729054832a327eefac58e313aeb309f386fa6 /queries/commonlisp
parente197736061378b5ccc510241ebec0bb765d69fa7 (diff)
Extend CL highlights
Diffstat (limited to 'queries/commonlisp')
-rw-r--r--queries/commonlisp/highlights.scm67
-rw-r--r--queries/commonlisp/locals.scm24
2 files changed, 62 insertions, 29 deletions
diff --git a/queries/commonlisp/highlights.scm b/queries/commonlisp/highlights.scm
index f3f7935a..c56573cf 100644
--- a/queries/commonlisp/highlights.scm
+++ b/queries/commonlisp/highlights.scm
@@ -1,3 +1,8 @@
+(sym_lit) @variable
+
+;; A highlighting for functions/macros in th cl namespace is available in theHamsta/nvim-treesitter-commonlisp
+;(list_lit . (sym_lit) @function.builtin (#cl-standard-symbol? @function.builtin))
+
(dis_expr) @comment
(defun_keyword) @function.macro
@@ -10,9 +15,14 @@
lambda_list: (list_lit (list_lit . (sym_lit) . (sym_lit) @type)))
(defun_header
lambda_list: (list_lit (list_lit . (sym_lit) @parameter . (_))))
+(defun_header
+ specifier: (sym_lit) @type)
+
+[":" "."] @punctuation.special
[
(accumulation_verb)
+ (for_clause_word)
"for"
"and"
"finally"
@@ -21,59 +31,51 @@
"when"
"if"
"unless"
+ "else"
"do"
"loop"
"below"
"in"
"from"
"across"
+ "repeat"
"being"
"into"
"with"
"as"
"while"
+ "until"
+ "return"
+ "initially"
] @function.macro
"=" @operator
(include_reader_macro) @type
-"#C" @number
+["#C" "#c"] @number
-(kwd_lit) @type
+[(kwd_lit) (self_referential_reader_macro)] @type
+
+(package_lit
+ package: (_) @namespace)
+"cl" @namespace
(str_lit) @string
(num_lit) @number
-((sym_lit) @boolean (#eq? @boolean "t"))
+((sym_lit) @boolean (#match? @boolean "^(t|T)$"))
(nil_lit) @constant.builtin
(comment) @comment
-;; metadata experiment
-(meta_lit
- marker: "^" @punctuation.special)
-
;; dynamic variables
((sym_lit) @variable.builtin
(#match? @variable.builtin "^[*].+[*]$"))
-;; gensym
-((sym_lit) @variable
- (#match? @variable "^.*#$"))
-
-;; interop-ish
-(list_lit
- .
- (sym_lit) @method
- (#match? @method "^\\."))
-
-;; other symbols with dots
-((sym_lit) @variable
- (#match? @variable "\\."))
-
;; quote
"'" @string.escape
+(format_specifier) @string.escape
(quoting_lit) @string.escape
;; syntax quote
@@ -89,6 +91,12 @@
(block_comment) @comment
+
+(with_clause
+ type: (_) @type)
+(for_clause
+ type: (_) @type)
+
;; defun-like things
(list_lit
.
@@ -97,11 +105,12 @@
(sym_lit) @function
(#eq? @function.macro "deftest"))
-;; Macros
+;;; Macros and Special Operators
(list_lit
.
(sym_lit) @function.macro
- (#match? @function.macro "^(let|progn|prog1|values|error|or|and|defvar|defparameter|loop|in-package|defpackage|[e]?(type)?case|defclass|if|if-let|when-let|when|unless|cond|switch|declaim|optimize)[*]?$"))
+ ;; For a complete and more efficient version install theHamsta/nvim-treesitter-commonlisp
+ (#match? @function.macro "^(let|function|the|unwind-protect|labels|flet|tagbody|go|(symbol-)?macrolet|progn|prog1|error|or|and|defvar|defparameter|in-package|defpackage|[e]?(type)?case|defstruct|defclass|if|if-let|when-let|when|unless|cond|switch|declaim|optimize)[*]?$"))
;; constant
((sym_lit) @constant
@@ -111,15 +120,13 @@
marker: "#'" @type
value: (_) @type)
-"#" @type
-
+["#" "#p" "#P"] @type
-;;; clojure.core=> (cp/pprint (sort (keep (fn [[s v]] (when-not (:macro (meta v)) s)) (ns-publics *ns*))))
-;;; ...and then some manual filtering...
(list_lit
.
(sym_lit) @function.builtin
- (#match? @function.builtin "^(mapcar|reduce|remove-if-not|cons|car|last|nth|equal[p]?|cdr|first|rest|decf|incf|format)$"))
+ ;; For a complete and more efficient version install theHamsta/nvim-treesitter-commonlisp
+ (#match? @function.builtin "^(mapcar|reduce|remove-if-not|cons|car|last|nth|equal[p]?|cdr|first|rest|format)$"))
(list_lit
.
@@ -130,4 +137,6 @@
((sym_lit) @type
(#match? @type "^[&]"))
-[(array_dimension) "#0A"] @number
+[(array_dimension) "#0A" "#0a"] @number
+
+(char_lit) @number
diff --git a/queries/commonlisp/locals.scm b/queries/commonlisp/locals.scm
index 859b9c70..d2159dfa 100644
--- a/queries/commonlisp/locals.scm
+++ b/queries/commonlisp/locals.scm
@@ -46,3 +46,27 @@
(sym_lit) @_let (#match? @_let "(cl:|alexandria)?(with-gensyms|dotimes|with-foreign-object)")
.
(list_lit . (sym_lit) @definition.var)) @scope
+
+(list_lit
+ .
+ (kwd_lit) @_import_from (#eq? @_import_from ":import-from")
+ .
+ (_)
+ (kwd_lit (kwd_symbol) @definition.import))
+
+(list_lit
+ .
+ (kwd_lit) @_import_from (#eq? @_import_from ":import-from")
+ .
+ (_)
+ (sym_lit) @definition.import)
+
+(list_lit
+ .
+ (kwd_lit) @_use (#eq? @_use ":use")
+ (kwd_lit (kwd_symbol) @definition.import))
+
+(list_lit
+ .
+ (kwd_lit) @_use (#eq? @_use ":use")
+ (sym_lit) @definition.import)