Update zsh-ts-mode.el

This commit is contained in:
2026-04-13 11:33:33 -07:00
parent f38fbdef8b
commit e0e946d3b1

View File

@@ -406,6 +406,33 @@ NODE is the argument to let (possibly with a = in it)."
(function (zsh-ts-mode--xref-function-definitions identifier)) (function (zsh-ts-mode--xref-function-definitions identifier))
(variable (zsh-ts-mode--xref-variable-definitions identifier)))) (variable (zsh-ts-mode--xref-variable-definitions identifier))))
(defun zsh-ts-mode--xref-function-references (identifier)
"Find all references for the function IDENTIFIER in the current buffer."
(let ((nodes (treesit-query-capture
(treesit-buffer-root-node)
`((command name: (command_name (word) @name)))
nil nil t))
(ident-copy (copy-sequence identifier)))
(set-text-properties 0 (length ident-copy) nil ident-copy)
(cl-loop for node in nodes
collect (xref-make
(propertize ident-copy 'face
'font-lock-function-name-face)
(zsh-ts-mode--treesit-node-location node)))))
(defun zsh-ts-mode--xref-variable-references (identifier)
"Find all references for the variable IDENTIFIER in the current buffer."
())
(cl-defmethod xref-backend-references ((_backend (eql zsh-ts)) identifier)
"`zsh-ts-mode' implementation for finding xref references for IDENTIFIER."
(append
;; definitions are references
(xref-backend-definitions 'zsh-ts identifier)
(cl-case (get-text-property 0 'type identifier)
(function (zsh-ts-mode--xref-function-references identifier))
(variable (zsh-ts-mode--xref-variable-references identifier)))))
;;;###autoload ;;;###autoload
(define-derived-mode zsh-ts-mode sh-base-mode "Zsh" (define-derived-mode zsh-ts-mode sh-base-mode "Zsh"
;; This function is based mostly on `bash-ts-mode'. ;; This function is based mostly on `bash-ts-mode'.