[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master cc0f9389b8e: Fix treesit-install-language-grammar for non-interac
From: |
Yuan Fu |
Subject: |
master cc0f9389b8e: Fix treesit-install-language-grammar for non-interactive call |
Date: |
Wed, 19 Apr 2023 19:27:41 -0400 (EDT) |
branch: master
commit cc0f9389b8ebedad6401464ee3a259dba3c7abaf
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>
Fix treesit-install-language-grammar for non-interactive call
A continuation of bug#62704.
* lisp/treesit.el (treesit-install-language-grammar): Differentiate
between interactive and non-interactive call, and don't prompt when
it's called non-interactively.
---
lisp/treesit.el | 35 +++++++++++++++++++++++------------
1 file changed, 23 insertions(+), 12 deletions(-)
diff --git a/lisp/treesit.el b/lisp/treesit.el
index ed7ad280684..b7af64ee8b5 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -2994,37 +2994,48 @@ See `treesit-language-source-alist' for details."
"History for OUT-DIR for `treesit-install-language-grammar'.")
;;;###autoload
-(defun treesit-install-language-grammar (lang)
+(defun treesit-install-language-grammar (lang &optional out-dir)
"Build and install the tree-sitter language grammar library for LANG.
Interactively, if `treesit-language-source-alist' doesn't already
have data for building the grammar for LANG, prompt for its
-repository URL and the C/C++ compiler to use.
+repository URL and the C/C++ compiler to use. Non-interactively,
+signal an error when there's no recipe for LANG.
This command requires Git, a C compiler and (sometimes) a C++ compiler,
and the linker to be installed and on PATH. It also requires that the
recipe for LANG exists in `treesit-language-source-alist'.
See `exec-path' for the current path where Emacs looks for
-executable programs, such as the C/C++ compiler and linker."
+executable programs, such as the C/C++ compiler and linker.
+
+Interactively, prompt for the directory in which to install the
+compiled grammar files. Non-interactively, use OUT-DIR; if it's
+nil, the grammar is installed to the standard location, the
+\"tree-sitter\" directory under `user-emacs-directory'."
(interactive (list (intern
(completing-read
"Language: "
- (mapcar #'car treesit-language-source-alist)))))
+ (mapcar #'car treesit-language-source-alist)))
+ 'interactive))
(when-let ((recipe
(or (assoc lang treesit-language-source-alist)
- (treesit--install-language-grammar-build-recipe
- lang)))
+ (if (eq out-dir 'interactive)
+ (treesit--install-language-grammar-build-recipe
+ lang)
+ (signal 'treesit-error `("Cannot find recipe for this
language" ,lang)))))
(default-out-dir
(or (car treesit--install-language-grammar-out-dir-history)
(locate-user-emacs-file "tree-sitter")))
(out-dir
- (read-string
- (format "Install to (default: %s): "
- default-out-dir)
- nil
- 'treesit--install-language-grammar-out-dir-history
- default-out-dir)))
+ (if (eq out-dir 'interactive)
+ (read-string
+ (format "Install to (default: %s): "
+ default-out-dir)
+ nil
+ 'treesit--install-language-grammar-out-dir-history
+ default-out-dir)
+ out-dir)))
(condition-case err
(apply #'treesit--install-language-grammar-1
(cons out-dir recipe))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master cc0f9389b8e: Fix treesit-install-language-grammar for non-interactive call,
Yuan Fu <=