Function: treesit-ready-p
treesit-ready-p is a byte-compiled function defined in treesit.el.gz.
Signature
(treesit-ready-p LANGUAGE &optional QUIET)
Documentation
Check whether tree-sitter is ready to be used for MODE and LANGUAGE.
LANGUAGE is the language symbol to check for availability. It can also be a list of language symbols.
If tree-sitter is not ready, emit a warning and return nil. If
the user has chosen to activate tree-sitter for LANGUAGE and
tree-sitter is ready, return non-nil. If QUIET is t, don't emit
a warning in either case; if quiet is message, display a message
instead of emitting a warning.
Source Code
;; Defined in /usr/src/emacs/lisp/treesit.el.gz
;;; Activating tree-sitter
(defun treesit-ready-p (language &optional quiet)
"Check whether tree-sitter is ready to be used for MODE and LANGUAGE.
LANGUAGE is the language symbol to check for availability.
It can also be a list of language symbols.
If tree-sitter is not ready, emit a warning and return nil. If
the user has chosen to activate tree-sitter for LANGUAGE and
tree-sitter is ready, return non-nil. If QUIET is t, don't emit
a warning in either case; if quiet is `message', display a message
instead of emitting a warning."
(let ((language-list (if (consp language)
language
(list language)))
msg)
;; Check for each condition and set MSG.
(catch 'term
(when (not (treesit-available-p))
(setq msg (if (fboundp 'treesit-node-p)
;; Windows loads tree-sitter dynamically.
"tree-sitter library is not available or failed to load"
"Emacs is not compiled with tree-sitter library"))
(throw 'term nil))
(when (> (position-bytes (max (point-min) (1- (point-max))))
treesit-max-buffer-size)
(setq msg "buffer larger than `treesit-max-buffer-size'")
(throw 'term nil))
(dolist (lang language-list)
(pcase-let ((`(,available . ,err)
(treesit-language-available-p lang t)))
(when (not available)
(setq msg (format "language grammar for %s failed to load (%s): %s"
lang (nth 0 err)
(string-join
(mapcar (lambda (x) (format "%s" x))
(cdr err))
" ")))
(throw 'term nil)))))
;; Decide if all conditions met and whether emit a warning.
(if (not msg)
t
(setq msg (concat "Cannot activate tree-sitter, because " msg))
(pcase quiet
('nil (display-warning 'treesit msg))
('message (message "%s" msg)))
nil)))