From f4b7cb7cc66e42b8010f6b7c21960ca097d74a4e Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Tue, 22 Apr 2025 19:32:36 +0300 Subject: [PATCH] Fix all issues for the case when tree-sitter is disabled. * lisp/treesit.el (treesit-declare-unavailable-functions): Declare 'treesit-language-abi-version' and 'treesit-library-abi-version'. * lisp/progmodes/elixir-ts-mode.el (elixir-ts--range-rules): * lisp/progmodes/heex-ts-mode.el (heex-ts--range-rules): * lisp/progmodes/rust-ts-mode.el (treesit-language-source-alist): Guard with 'treesit-available-p'. (cherry picked from commit 8fb45fcaedbe1b89bab54406c8739404d0ad35bc) --- lisp/progmodes/elixir-ts-mode.el | 13 +++++++------ lisp/progmodes/heex-ts-mode.el | 25 +++++++++++++------------ lisp/progmodes/rust-ts-mode.el | 3 ++- lisp/treesit.el | 3 +++ 4 files changed, 25 insertions(+), 19 deletions(-) diff --git a/lisp/progmodes/elixir-ts-mode.el b/lisp/progmodes/elixir-ts-mode.el index f7d6932c7c2..52744f194a2 100644 --- a/lisp/progmodes/elixir-ts-mode.el +++ b/lisp/progmodes/elixir-ts-mode.el @@ -622,12 +622,13 @@ "`treesit-thing-settings' for Elixir.") (defvar elixir-ts--range-rules - (treesit-range-rules - :embed 'heex - :host 'elixir - '((sigil (sigil_name) @_name - (:match "^[HF]$" @_name) - (quoted_content) @heex)))) + (when (treesit-available-p) + (treesit-range-rules + :embed 'heex + :host 'elixir + '((sigil (sigil_name) @_name + (:match "^[HF]$" @_name) + (quoted_content) @heex))))) (defvar heex-ts--range-rules) (defvar heex-ts--thing-settings) diff --git a/lisp/progmodes/heex-ts-mode.el b/lisp/progmodes/heex-ts-mode.el index 2d6dce784bc..cf3fad4af10 100644 --- a/lisp/progmodes/heex-ts-mode.el +++ b/lisp/progmodes/heex-ts-mode.el @@ -173,18 +173,19 @@ Return nil if NODE is not a defun node or doesn't have a name." "`treesit-thing-settings' for HEEx.") (defvar heex-ts--range-rules - (treesit-range-rules - :embed 'elixir - :host 'heex - '((directive [(partial_expression_value) - (ending_expression_value)] - @cap)) - - :embed 'elixir - :host 'heex - :local t - '((directive (expression_value) @cap) - (expression (expression_value) @cap)))) + (when (treesit-available-p) + (treesit-range-rules + :embed 'elixir + :host 'heex + '((directive [(partial_expression_value) + (ending_expression_value)] + @cap)) + + :embed 'elixir + :host 'heex + :local t + '((directive (expression_value) @cap) + (expression (expression_value) @cap))))) (defvar elixir-ts--font-lock-settings) (defvar elixir-ts--font-lock-feature-list) diff --git a/lisp/progmodes/rust-ts-mode.el b/lisp/progmodes/rust-ts-mode.el index 3b115f4bb7b..5ae4921287e 100644 --- a/lisp/progmodes/rust-ts-mode.el +++ b/lisp/progmodes/rust-ts-mode.el @@ -44,7 +44,8 @@ (add-to-list 'treesit-language-source-alist `(rust "https://github.com/tree-sitter/tree-sitter-rust" - ,(if (< (treesit-library-abi-version) 15) "v0.23.2" "v0.24.0")) + ,(when (treesit-available-p) + (if (< (treesit-library-abi-version) 15) "v0.23.2" "v0.24.0"))) t) (defcustom rust-ts-mode-indent-offset 4 diff --git a/lisp/treesit.el b/lisp/treesit.el index 7ccc14dceda..c85768256f7 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -70,6 +70,9 @@ in a Emacs not built with tree-sitter library." (declare-function treesit-language-available-p "treesit.c") (declare-function treesit-language-version "treesit.c") + (declare-function treesit-language-abi-version "treesit.c") + (declare-function treesit-library-abi-version "treesit.c") + (declare-function treesit-parser-p "treesit.c") (declare-function treesit-node-p "treesit.c") (declare-function treesit-compiled-query-p "treesit.c") -- 2.39.5