aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuan Nguyen2023-10-07 12:03:55 +0200
committerYuan Fu2023-10-20 21:09:03 -0700
commit8faffc26a623cee5cd46565ad519fef8ceb1eacb (patch)
treeda8235e9b9d40ef3ae22b063aa76758ce33796d5
parentc94b6397bd95836250b1a2338aedb13d7872345a (diff)
downloademacs-8faffc26a623cee5cd46565ad519fef8ceb1eacb.tar.gz
emacs-8faffc26a623cee5cd46565ad519fef8ceb1eacb.zip
New keyword :default-language in treesit-font-lock-rules function.
* lisp/treesit.el (treesit-font-lock-rules): Keyword :default-language LANGUAGE will be chosen for every :feature. Using :language will override the :default-language for the next :feature.
-rw-r--r--lisp/treesit.el45
1 files changed, 28 insertions, 17 deletions
diff --git a/lisp/treesit.el b/lisp/treesit.el
index c73ac9912d6..879afb4c73c 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -922,12 +922,22 @@ name, it is ignored."
922 ;; that following queries will apply to. 922 ;; that following queries will apply to.
923 current-language current-override 923 current-language current-override
924 current-feature 924 current-feature
925 ;; DEFAULT-LANGUAGE will be chosen when current-language is
926 ;; not set.
927 default-language
925 ;; The list this function returns. 928 ;; The list this function returns.
926 (result nil)) 929 (result nil))
927 (while query-specs 930 (while query-specs
928 (let ((token (pop query-specs))) 931 (let ((token (pop query-specs)))
929 (pcase token 932 (pcase token
930 ;; (1) Process keywords. 933 ;; (1) Process keywords.
934 (:default-language
935 (let ((lang (pop query-specs)))
936 (when (or (not (symbolp lang)) (null lang))
937 (signal 'treesit-font-lock-error
938 `("Value of :default-language should be a symbol"
939 ,lang)))
940 (setq default-language lang)))
931 (:language 941 (:language
932 (let ((lang (pop query-specs))) 942 (let ((lang (pop query-specs)))
933 (when (or (not (symbolp lang)) (null lang)) 943 (when (or (not (symbolp lang)) (null lang))
@@ -955,23 +965,24 @@ name, it is ignored."
955 (setq current-feature var))) 965 (setq current-feature var)))
956 ;; (2) Process query. 966 ;; (2) Process query.
957 ((pred treesit-query-p) 967 ((pred treesit-query-p)
958 (when (null current-language) 968 (let ((lang (or default-language current-language)))
959 (signal 'treesit-font-lock-error 969 (when (null lang)
960 `("Language unspecified, use :language keyword to specify a language for this query" ,token))) 970 (signal 'treesit-font-lock-error
961 (when (null current-feature) 971 `("Language unspecified, use :language keyword or :default-language to specify a language for this query" ,token)))
962 (signal 'treesit-font-lock-error 972 (when (null current-feature)
963 `("Feature unspecified, use :feature keyword to specify the feature name for this query" ,token))) 973 (signal 'treesit-font-lock-error
964 (if (treesit-compiled-query-p token) 974 `("Feature unspecified, use :feature keyword to specify the feature name for this query" ,token)))
965 (push `(,current-language token) result) 975 (if (treesit-compiled-query-p token)
966 (push `(,(treesit-query-compile current-language token) 976 (push `(,lang token) result)
967 t 977 (push `(,(treesit-query-compile lang token)
968 ,current-feature 978 t
969 ,current-override) 979 ,current-feature
970 result)) 980 ,current-override)
971 ;; Clears any configurations set for this query. 981 result))
972 (setq current-language nil 982 ;; Clears any configurations set for this query.
973 current-override nil 983 (setq current-language nil
974 current-feature nil)) 984 current-override nil
985 current-feature nil)))
975 (_ (signal 'treesit-font-lock-error 986 (_ (signal 'treesit-font-lock-error
976 `("Unexpected value" ,token)))))) 987 `("Unexpected value" ,token))))))
977 (nreverse result)))) 988 (nreverse result))))