Skip to content

Commit 0892e55

Browse files
committed
Improve error messages for `tree-sitter-query-builder'
1 parent 15d51d2 commit 0892e55

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

lisp/tree-sitter-query.el

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@
3939

4040
(defun tree-sitter-query--highlight-capture (capture)
4141
"Highlight CAPTURE in the current buffer."
42-
(pcase-let* ((`(,capture-name . ,captured-node) capture)
42+
(pcase-let* ((`(,capture-symbol . ,captured-node) capture)
4343
(`(,node-start . ,node-end) (tsc-node-position-range captured-node))
44-
(overlay (make-overlay node-start node-end)))
44+
(overlay (make-overlay node-start node-end))
45+
(capture-name (symbol-name capture-symbol)))
4546
;; Ensure the overlay is deleted when it becomes empty.
4647
(overlay-put overlay 'evaporate t)
4748
(overlay-put overlay 'face 'tree-sitter-query-match)
@@ -54,11 +55,22 @@
5455
(with-current-buffer tree-sitter-query--target-buffer
5556
(tsc--without-restriction
5657
(remove-overlays)
57-
(let* ((query (tsc-make-query tree-sitter-language patterns #'identity))
58-
(root-node (tsc-root-node tree-sitter-tree))
59-
(captures (tsc-query-captures query root-node #'tsc--buffer-substring-no-properties)))
58+
(when-let*
59+
((query
60+
(condition-case err
61+
(tsc-make-query tree-sitter-language patterns)
62+
((tsc-query-invalid-node-type
63+
tsc-query-invalid-field
64+
tsc-query-invalid-capture)
65+
(message "%s: %s" (get (car err) 'error-message) (cadr err))
66+
nil)
67+
(tsc-query-invalid
68+
(message "%s" (get (car err) 'error-message))
69+
nil)))
70+
(root-node (tsc-root-node tree-sitter-tree))
71+
(captures (tsc-query-captures query root-node #'tsc--buffer-substring-no-properties)))
6072
(if (= (length captures) 0)
61-
(message "No matches found")
73+
(message "No captures found")
6274
(mapc #'tree-sitter-query--highlight-capture captures))))))
6375

6476
(defun tree-sitter-query--after-change (&rest _args)

0 commit comments

Comments
 (0)