]> git.eshelyaron.com Git - emacs.git/commitdiff
Ignore some capture name in treesit-font-lock-fontify-region
authorYuan Fu <casouri@gmail.com>
Sun, 2 Oct 2022 03:25:25 +0000 (20:25 -0700)
committerYuan Fu <casouri@gmail.com>
Tue, 4 Oct 2022 20:30:55 +0000 (13:30 -0700)
* doc/lispref/modes.texi (Parser-based Font Lock): Update manual.
* lisp/treesit.el: (treesit-font-lock-fontify-region): Ignore names
that are not face nor function.
(treesit-font-lock-rules): Update docstring.

doc/lispref/modes.texi
lisp/treesit.el

index ab83d8712b223e21724c0d1de60edcabf21daa8b..0d58c28e271ba0c91b310c052098bdebb333d776 100644 (file)
@@ -3929,7 +3929,8 @@ with that face.  Capture names can also be function names, in which
 case the function is called with (@var{start} @var{end} @var{node}),
 where @var{start} and @var{end} are the start and end position of the
 node in buffer, and @var{node} is the node itself.  If a capture name
-is both a face and a function, the face takes priority.
+is both a face and a function, the face takes priority.  If a capture
+name is not a face name nor a function name, it is ignored.
 @end defun
 
 @defvar treesit-font-lock-settings
index 91e3d05a51566ef211d933cbf005e6434cff8726..4f56a143871c8745b5c5c64414918a600c7c5eeb 100644 (file)
@@ -325,7 +325,9 @@ with that face.  Capture names can also be function names, in
 which case the function is called with (START END NODE), where
 START and END are the start and end position of the node in
 buffer, and NODE is the tree-sitter node object.  If a capture
-name is both a face and a function, the face takes priority.
+name is both a face and a function, the face takes priority.  If
+a capture name is not a face name nor a function name, it is
+ignored.
 
 \(fn :KEYWORD VALUE QUERY...)"
   (let (;; Tracks the current language that following queries will
@@ -382,8 +384,10 @@ If LOUDLY is non-nil, message some debugging information."
                 (cond ((facep face)
                        (put-text-property start end 'face face))
                       ((functionp face)
-                       (funcall face start end node))
-                      (t (error "Capture name %s is neither a face nor a function" face)))
+                       (funcall face start end node)))
+                ;; Don't raise an error if FACE is neither a face nor
+                ;; a function.  This is to allow intermediate capture
+                ;; names used for #match and #eq.
                 (when loudly
                   (message "Fontifying text from %d to %d, Face: %s Language: %s"
                            start end face language)))))))))