From 8603c023d9b9980a75798ecc4f25f1fe07c0b8a0 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Thu, 1 May 2025 20:55:33 +0300 Subject: [PATCH] Avoid adding duplicate items to 'treesit-language-source-alist'. * lisp/textmodes/mhtml-ts-mode.el: * lisp/progmodes/php-ts-mode.el: Use 'add-to-list' on items in language-source-alist that should check for duplicate items. * test/infra/Dockerfile.emba: Move multi-language mhtml-ts-mode and php-ts-mode to the end to give their dependent grammars a lower priority. * test/lisp/progmodes/js-tests.el (js-ts-mode-test-indentation): Skip the test when 'jsdoc' is missing since 'js-ts-mode' depends on the 'jsdoc' grammar. (cherry picked from commit 5684a3808677fb701833c83325cd3bc8de475561) --- lisp/progmodes/php-ts-mode.el | 5 ++--- lisp/textmodes/mhtml-ts-mode.el | 5 ++--- test/infra/Dockerfile.emba | 8 ++++---- test/lisp/progmodes/js-tests.el | 2 +- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/lisp/progmodes/php-ts-mode.el b/lisp/progmodes/php-ts-mode.el index 8a739fc62c2..c13b31a439a 100644 --- a/lisp/progmodes/php-ts-mode.el +++ b/lisp/progmodes/php-ts-mode.el @@ -91,9 +91,8 @@ You can customize `treesit-language-source-alist' if you want to stick to a specific commit and/or use different parsers.") -(setq treesit-language-source-alist - (append treesit-language-source-alist - php-ts-mode--language-source-alist)) +(dolist (item php-ts-mode--language-source-alist) + (add-to-list 'treesit-language-source-alist item t)) (defun php-ts-mode-install-parsers () "Install all the required treesitter parsers. diff --git a/lisp/textmodes/mhtml-ts-mode.el b/lisp/textmodes/mhtml-ts-mode.el index d8fdd1b19a6..5a29c9f0ee5 100644 --- a/lisp/textmodes/mhtml-ts-mode.el +++ b/lisp/textmodes/mhtml-ts-mode.el @@ -73,9 +73,8 @@ You can customize `treesit-language-source-alist' if you want to stick to a specific commit and/or use different parsers.") -(setq treesit-language-source-alist - (append treesit-language-source-alist - mhtml-ts-mode--language-source-alist)) +(dolist (item mhtml-ts-mode--language-source-alist) + (add-to-list 'treesit-language-source-alist item t)) (defun mhtml-ts-mode-install-parsers () "Install all the required treesitter parsers. diff --git a/test/infra/Dockerfile.emba b/test/infra/Dockerfile.emba index 1c1fbfc361a..c6aed2aeac9 100644 --- a/test/infra/Dockerfile.emba +++ b/test/infra/Dockerfile.emba @@ -131,10 +131,10 @@ RUN src/emacs -Q --batch \ (treesit-library-abi-version t) (treesit-library-abi-version))' \ --eval '(setq treesit-extra-load-path (list "/root/.emacs.d/tree-sitter"))' \ --eval '(dolist (feature (quote (c-ts-mode cmake-ts-mode csharp-mode \ - dockerfile-ts-mode elixir-ts-mode go-ts-mode heex-ts-mode java-ts-mode \ - js json-ts-mode lua-ts-mode php-ts-mode python ruby-ts-mode rust-ts-mode \ - sh-script typescript-ts-mode css-mode html-ts-mode markdown-ts-mode \ - mhtml-ts-mode toml-ts-mode yaml-ts-mode treesit-x))) (require feature))' \ + dockerfile-ts-mode elixir-ts-mode heex-ts-mode go-ts-mode java-ts-mode \ + js json-ts-mode lua-ts-mode python ruby-ts-mode rust-ts-mode sh-script \ + typescript-ts-mode css-mode html-ts-mode markdown-ts-mode toml-ts-mode \ + yaml-ts-mode mhtml-ts-mode php-ts-mode treesit-x))) (require feature))' \ --eval '(dolist (lang (mapcar (quote car) treesit-language-source-alist)) \ (treesit-install-language-grammar lang "/root/.emacs.d/tree-sitter"))' \ --eval '(message "treesit-language-source-alist\n%s" \ diff --git a/test/lisp/progmodes/js-tests.el b/test/lisp/progmodes/js-tests.el index 7d7aa7562a3..1a7edc5735e 100644 --- a/test/lisp/progmodes/js-tests.el +++ b/test/lisp/progmodes/js-tests.el @@ -291,7 +291,7 @@ function bar() { ;;;; Tree-sitter tests. (ert-deftest js-ts-mode-test-indentation () - (skip-unless (treesit-ready-p 'javascript)) + (skip-unless (and (treesit-ready-p 'javascript) (treesit-ready-p 'jsdoc))) (ert-test-erts-file (ert-resource-file "js-ts-indents.erts"))) (provide 'js-tests) -- 2.39.5