Update CMake support due to upstream changes (bug#64922)
A recent change in tree-sitter-cmake grammar support for CMake (commit fe9b5e0), now put arguments are wrapped in a new argument_list node. To support the old and new version of the grammar, a new function was added on which string syntax highlighting now depends. * lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode--font-lock-compatibility-fe9b5e0): Indent helper function to handle different tree-sitter-cmake version. * lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode--font-lock-settings): Use the new function to handle the new argument_list node.
This commit is contained in:
parent
c2d95dd00e
commit
7da1cee56b
1 changed files with 38 additions and 14 deletions
|
@ -31,6 +31,7 @@
|
|||
(eval-when-compile (require 'rx))
|
||||
|
||||
(declare-function treesit-parser-create "treesit.c")
|
||||
(declare-function treesit-query-capture "treesit.c")
|
||||
(declare-function treesit-induce-sparse-tree "treesit.c")
|
||||
(declare-function treesit-node-child "treesit.c")
|
||||
(declare-function treesit-node-start "treesit.c")
|
||||
|
@ -87,6 +88,42 @@
|
|||
"VERSION_GREATER_EQUAL" "VERSION_LESS" "VERSION_LESS_EQUAL")
|
||||
"CMake if conditions for tree-sitter font-locking.")
|
||||
|
||||
(defun cmake-ts-mode--font-lock-compatibility-fe9b5e0 ()
|
||||
"Indent rules helper, to handle different releases of tree-sitter-cmake.
|
||||
Check if a node type is available, then return the right indent rules."
|
||||
;; handle commit fe9b5e0
|
||||
(condition-case nil
|
||||
(progn (treesit-query-capture 'cmake '((argument_list) @capture))
|
||||
`(((foreach_command
|
||||
((argument_list) @font-lock-constant-face
|
||||
(:match ,(rx-to-string
|
||||
`(seq bol
|
||||
(or ,@cmake-ts-mode--foreach-options)
|
||||
eol))
|
||||
@font-lock-constant-face))))
|
||||
((if_command
|
||||
((argument_list) @font-lock-constant-face
|
||||
(:match ,(rx-to-string
|
||||
`(seq bol
|
||||
(or ,@cmake-ts-mode--if-conditions)
|
||||
eol))
|
||||
@font-lock-constant-face))))))
|
||||
(error
|
||||
`(((foreach_command
|
||||
((argument) @font-lock-constant-face
|
||||
(:match ,(rx-to-string
|
||||
`(seq bol
|
||||
(or ,@cmake-ts-mode--foreach-options)
|
||||
eol))
|
||||
@font-lock-constant-face))))
|
||||
((if_command
|
||||
((argument) @font-lock-constant-face
|
||||
(:match ,(rx-to-string
|
||||
`(seq bol
|
||||
(or ,@cmake-ts-mode--if-conditions)
|
||||
eol))
|
||||
@font-lock-constant-face))))))))
|
||||
|
||||
(defvar cmake-ts-mode--font-lock-settings
|
||||
(treesit-font-lock-rules
|
||||
:language 'cmake
|
||||
|
@ -95,20 +132,7 @@
|
|||
|
||||
:language 'cmake
|
||||
:feature 'builtin
|
||||
`(((foreach_command
|
||||
((argument) @font-lock-constant-face
|
||||
(:match ,(rx-to-string
|
||||
`(seq bol
|
||||
(or ,@cmake-ts-mode--foreach-options)
|
||||
eol))
|
||||
@font-lock-constant-face))))
|
||||
((if_command
|
||||
((argument) @font-lock-constant-face
|
||||
(:match ,(rx-to-string
|
||||
`(seq bol
|
||||
(or ,@cmake-ts-mode--if-conditions)
|
||||
eol))
|
||||
@font-lock-constant-face)))))
|
||||
(cmake-ts-mode--font-lock-compatibility-fe9b5e0)
|
||||
|
||||
:language 'cmake
|
||||
:feature 'comment
|
||||
|
|
Loading…
Add table
Reference in a new issue