Subject: bug#59471: closed (Re: bug#59471: [PATCH] sh-mode: Run treesit-ready-p only when sh-shell is 'bash)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 23 Nov 2022 01:40:02 +0000

Your bug report

#59471: [PATCH] sh-mode: Run treesit-ready-p only when sh-shell is 'bash

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
59471: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59471
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#59471: [PATCH] sh-mode: Run treesit-ready-p only when sh-shell is 'bash
From: Yuan Fu <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Tue, 22 Nov 2022 17:39:08 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Brian Leung <[email-masked]> writes:

> Tags: patch
>
> This patch guards the treesit-ready-p check to run only when sh-shell is
> 'bash, in order to prevent an annoying warning when viewing (say) sh or
> zsh files. But maybe we also want to allow treesitter when sh-shell is
> 'sh?

Oh, thanks! Though I did it a bit differently, by separating
tree-sitter-based mode into a independent major mode (sh-ts-mode), which
is in line with other tree-sitter-based modes (python-ts-mode,
js-ts-mode, etc).

How to make bash-ts-mode fallback to sh-mode when it encounters a shell
script other than bash is still in discussion.

Yuan

Subject: [PATCH] sh-mode: Run treesit-ready-p only when sh-shell is 'bash
From: Brian Leung <[email-masked]>
To: [email-masked]
Date: Tue, 22 Nov 2022 02:54:55 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Tags: patch

This patch guards the treesit-ready-p check to run only when sh-shell is
'bash, in order to prevent an annoying warning when viewing (say) sh or
zsh files. But maybe we also want to allow treesitter when sh-shell is
'sh?

In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
version 1.16.0, Xaw3d scroll bars)
Repository revision: aeadba1418d8fc18f17b4ae415cde35e9e272e7a
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: NixOS 22.11 (Raccoon)

Configured using:
 'configure
 --prefix=/nix/store/yf7bpm9w6nqwil5xfxa9iz22m57wz4l1-emacs-git-20221121.0
 --disable-build-details --with-modules --with-x-toolkit=lucid
 --with-xft --with-cairo --with-native-compilation'

>From aa8c60cff6f834e18db44587a6e623292b01978e Mon Sep 17 00:00:00 2001
From: Brian Leung <[email-masked]>
Date: Mon, 21 Nov 2022 18:52:26 -0800
Subject: [PATCH] sh-mode: Run treesit-ready-p only when sh-shell is 'bash

* lisp/progmodes/sh-script.el (sh-mode): Guard treesit-ready-p check.

Without this patch, enabling sh-mode in any non-Bash file results in
an annoying warning like:

Warning (treesit): Cannot activate tree-sitter, because language
definition for zsh is unavailable (not-found): (libtree-sitter-zsh
libtree-sitter-zsh.so) No such file or directory
---
 lisp/progmodes/sh-script.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 54f005508c..0a0617bddd 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1587,7 +1587,8 @@ sh-mode
 
   (cond
    ;; Tree-sitter.  If the shell is bash, we can enable tree-sitter.
-   ((treesit-ready-p sh-shell)
+   ((and (eq sh-shell 'bash)
+         (treesit-ready-p sh-shell))
     (setq-local treesit-font-lock-feature-list
                 '((comment function string heredoc)
                   (variable keyword command declaration-command)
-- 
2.38.1