|
39 | 39 |
|
40 | 40 | (defun tree-sitter-query--highlight-capture (capture) |
41 | 41 | "Highlight CAPTURE in the current buffer." |
42 | | - (pcase-let* ((`(,capture-name . ,captured-node) capture) |
| 42 | + (pcase-let* ((`(,capture-symbol . ,captured-node) capture) |
43 | 43 | (`(,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))) |
45 | 46 | ;; Ensure the overlay is deleted when it becomes empty. |
46 | 47 | (overlay-put overlay 'evaporate t) |
47 | 48 | (overlay-put overlay 'face 'tree-sitter-query-match) |
|
54 | 55 | (with-current-buffer tree-sitter-query--target-buffer |
55 | 56 | (tsc--without-restriction |
56 | 57 | (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))) |
60 | 72 | (if (= (length captures) 0) |
61 | | - (message "No matches found") |
| 73 | + (message "No captures found") |
62 | 74 | (mapc #'tree-sitter-query--highlight-capture captures)))))) |
63 | 75 |
|
64 | 76 | (defun tree-sitter-query--after-change (&rest _args) |
|
0 commit comments