diff options
| author | Huan Nguyen | 2023-10-07 12:03:55 +0200 |
|---|---|---|
| committer | Yuan Fu | 2023-10-20 21:09:03 -0700 |
| commit | 8faffc26a623cee5cd46565ad519fef8ceb1eacb (patch) | |
| tree | da8235e9b9d40ef3ae22b063aa76758ce33796d5 | |
| parent | c94b6397bd95836250b1a2338aedb13d7872345a (diff) | |
| download | emacs-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.el | 45 |
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)))) |