From 71ec9a97331c54d8637a84fd8230bba50e547f76 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 15 Sep 2025 17:25:24 -0400 Subject: [PATCH] fix: backport treesit-available-p sooner This fixes Doom for Emacs 27-28 users (or builds without treesit). --- lisp/doom-compat.el | 19 ++++++++++++++++++ .../tools/tree-sitter/autoload/compat-30.el | 20 +------------------ modules/tools/tree-sitter/config.el | 4 +--- modules/tools/tree-sitter/doctor.el | 3 +-- 4 files changed, 22 insertions(+), 24 deletions(-) diff --git a/lisp/doom-compat.el b/lisp/doom-compat.el index 1584811f7..45279a035 100644 --- a/lisp/doom-compat.el +++ b/lisp/doom-compat.el @@ -132,6 +132,25 @@ The functions in the hook are called with one parameter -- the (funcall fn theme) (run-hook-with-args 'enable-theme-functions theme)))) +;; Introduced in 29.1 +;; In case of Emacs builds where treesit isn't built in (to avoid void-function +;; errors and verbose, redundant checks everywhere). +;;;###autodef +(unless (fboundp 'treesit-available-p) + (defun treesit-available-p () + "Return non-nil if tree-sitter support is built-in and available." + nil)) + +;;;###autoload +(unless (fboundp 'treesit-library-abi-version) + (defun treesit-library-abi-version (&optional _min-compatible) + 0)) + +;;;###autoload +(unless (fboundp 'treesit-language-abi-version) + (defun treesit-language-abi-version (&optional _lang) + nil)) + ;;; From Emacs >= 30 ;; Introduced in 30.1 diff --git a/modules/tools/tree-sitter/autoload/compat-30.el b/modules/tools/tree-sitter/autoload/compat-30.el index c85c03583..281f3e281 100644 --- a/modules/tools/tree-sitter/autoload/compat-30.el +++ b/modules/tools/tree-sitter/autoload/compat-30.el @@ -1,5 +1,5 @@ ;;; tools/tree-sitter/autoload/compat-30.el -*- lexical-binding: t; -*- -;;;###if (and (fboundp 'treesit-available-p) (version< emacs-version "31.1")) +;;;###if (and (treesit-available-p) (version< emacs-version "31.1")) ;; ;; Backported from 31.1 ;; @@ -7,24 +7,6 @@ (autoload 'treesit-ready-p "treesit") -;; In case of Emacs builds where treesit isn't built in (to avoid void-function -;; errors and verbose, redundant checks everywhere). -;;;###autodef -(unless (fboundp 'treesit-available-p) - (defun treesit-available-p () - "Return non-nil if tree-sitter support is built-in and available." - nil)) - -;;;###autoload -(unless (fboundp 'treesit-library-abi-version) - (defun treesit-library-abi-version (&optional _min-compatible) - 0)) - -;;;###autoload -(unless (fboundp 'treesit-language-abi-version) - (defun treesit-language-abi-version (&optional _lang) - nil)) - ;;;###autoload (defcustom treesit-auto-install-grammar 'ask "Whether to install tree-sitter language grammar libraries when needed. diff --git a/modules/tools/tree-sitter/config.el b/modules/tools/tree-sitter/config.el index e3ea430cc..6a836f9ab 100644 --- a/modules/tools/tree-sitter/config.el +++ b/modules/tools/tree-sitter/config.el @@ -4,7 +4,6 @@ ;;; Packages (use-package! treesit - :when (fboundp 'treesit-available-p) :when (treesit-available-p) :defer t :preface @@ -48,8 +47,7 @@ (let ((mode (funcall fn mode))) (if-let* ((ts (get mode '+tree-sitter)) (fallback-mode (car ts))) - (cond ((or (not (fboundp 'treesit-available-p)) - (not (treesit-available-p))) + (cond ((not (treesit-available-p)) (message "Treesit unavailable, falling back to `%S'" fallback-mode) fallback-mode) ((not (fboundp mode)) diff --git a/modules/tools/tree-sitter/doctor.el b/modules/tools/tree-sitter/doctor.el index 4a32abf4f..e54d560cc 100644 --- a/modules/tools/tree-sitter/doctor.el +++ b/modules/tools/tree-sitter/doctor.el @@ -5,6 +5,5 @@ (if (version< emacs-version "29.1") (error! "Emacs 29.1 or newer is required for tree-sitter support") - (unless (and (fboundp 'treesit-available-p) - (treesit-available-p)) + (unless (treesit-available-p) (error! "Emacs not built with tree-sitter support!")))