Subject: bug#68579: [PATCH v2] Support a local repo as URL in treesit-language-source-alist

From: Eli Zaretskii <[email-masked]>
Date: Sat, 27 Jan 2024 11:37:27 +0200

> From: Konstantin Kharlamov <[email-masked]>
> Date: Sat, 20 Jan 2024 14:56:29 +0300
> 
> Sometimes people may need to bisect to find specific revision in a
> grammar repo. In this case they'd want to point the URL to the local
> repo to avoid cloning it on every rebuild. So add support for full
> path in treesit-language-source-alist.
> 
> * lisp/treesit.el (treesit--install-language-grammar-1): Test if URL
> starts with / meaning that the URL is a local path.  Then if it is,
> avoid cloning the repo and removing the path on success.
> (treesit--git-clone-repo): Factor out the code for cloning to a separate
> function.
> (treesit--git-checkout-branch): A helper to checkout the revision for
> cases where we didn't clone the repo but want it to point the
> revision.
> ---

Thanks, but could you please send the patch as attachments created
with "git format-patch", and include only the stuff you think should
be in the patch and the commit log message?

Also, I have a few minor comments below.

> ++++
> +** 'treesit-install-language-grammar' can handle local directory as URL.
> +It is now possible to pass a directory of a local repository as URL
                                                                ^^^^^^
I think you mean "instead of a URL" there.

> +inside 'treesit-language-source-alist', so that calling
> +'treesit-install-language-grammar' would avoid cloning the repository.
> +It may be useful for example for the purposes of bisecting a
                   ^           ^
Commas missing there.

> --- a/lisp/treesit.el
> +++ b/lisp/treesit.el
> @@ -3410,14 +3410,16 @@ treesit-explore-mode
>  ;;; Install & build language grammar
>  
>  (defvar treesit-language-source-alist nil
> -  "Configuration for downloading and installing tree-sitter language grammars.
> +  "Configuration for downloading and installing tree-sitter language
> +grammars. The grammar can also be built from a local directory if
> +URL is an existing local path to the repo.

The first line of a doc string should be a single complete sentence
(because various apropos commands display only the first lines of doc
strings).

>  The value should be an alist where each element has the form
>  
>      (LANG . (URL REVISION SOURCE-DIR CC C++))
>  
>  Only LANG and URL are mandatory.  LANG is the language symbol.
> -URL is the Git repository URL for the grammar.
> +URL is the Git repository URL or directory name for the grammar.

Suggest to reword:

  URL is the URL of the grammar's Git repository or a directory where
  the repository has been cloned.

Thanks.