From 9c7ccaf951d99143d83131e781080ec54eb8e41d Mon Sep 17 00:00:00 2001 From: Yuan Fu Date: Tue, 6 May 2025 20:57:06 -0700 Subject: [PATCH] Make treesit--simple-indent-eval more permissive (bug#78065) * lisp/treesit.el (treesit--simple-indent-eval): Allow EXP to be anything, so higher-order indent presets can take anything as an argument: t, nil, symbols, keywords, etc. (cherry picked from commit 0b4eb525b69822c6b503982ef49980c72c8d0232) --- lisp/treesit.el | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lisp/treesit.el b/lisp/treesit.el index 17b55362ab1..9cbf063be1d 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -2520,14 +2520,12 @@ the function." ;; `functionp'. ((alist-get exp treesit-simple-indent-presets)) ((functionp exp) exp) - ((symbolp exp) - (if (null exp) - exp - ;; Matchers only return lambdas, anchors only return - ;; integer, so we should never see a variable. - (signal 'treesit-indent-error - (list "Couldn't find the preset corresponding to expression" - exp)))) + ;; There are higher-order presets that take arguments, like + ;; (nth-sibling 1 t), so it's possible for exp to be something + ;; other than numbers and functions. Don't signal an error if + ;; exp isn't a function nor a number. In fact, allow exp to be + ;; any symbol or keyword, so users can define higher-order + ;; presets that takes keyword or symbol as arguments. (t exp))) ;; This variable might seem unnecessary: why split -- 2.39.5