branch: elpa/typst-ts-mode commit 42c080fa64eb8223c42302b00f0f53e53dfdc6fa Author: Meow King <mr.meowk...@anche.no> Commit: Meow King <mr.meowk...@anche.no>
fix(compabiilty): Emacs29 treesit-lparser-list -> typst-ts-utils-parser-list --- typst-ts-embedding-lang-settings.el | 6 +++--- typst-ts-mode.el | 2 +- typst-ts-utils.el | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/typst-ts-embedding-lang-settings.el b/typst-ts-embedding-lang-settings.el index d73ccc98c7..dcba2183e6 100644 --- a/typst-ts-embedding-lang-settings.el +++ b/typst-ts-embedding-lang-settings.el @@ -773,7 +773,7 @@ Use this function as one notifier of `treesit-parser-notifiers'." ;; parsers created by `treesit-language-at-point-function' ( ;; `typst-ts-mode--language-at-point'.) ;; i.e. parsers cannot be created by `treesit-range-settings' - (mapcar #'treesit-parser-language (treesit-parser-list)) + (mapcar #'treesit-parser-language (typst-ts-utils-parser-list)) ;; parsers created by `treesit-range-settings' (mapcar #'treesit-parser-language (typst-ts-utils-local-parsers-on (point-min) (point-max)))))) @@ -789,7 +789,7 @@ Use this function as one notifier of `treesit-parser-notifiers'." (typst-ts-els-merge-lang-settings lang) ;; some feature like cmake-ts-mode will create a parser when ;; the feature is required, so we need to clean thease parsers - (mapc #'treesit-parser-delete (treesit-parser-list nil lang)) + (mapc #'treesit-parser-delete (typst-ts-utils-parser-list nil lang)) (message "Load %s language settings from configuration." lang)) (error ;; if language not in setting or encounter error during loading, @@ -801,7 +801,7 @@ Use this function as one notifier of `treesit-parser-notifiers'." (typst-ts-els--add-treesit-range-rules lang) ;; delete top level parsers, so range rules works (i.e. local parsers) ;; so that highlighting will not exceed the desired range - (mapc #'treesit-parser-delete (treesit-parser-list nil lang)) + (mapc #'treesit-parser-delete (typst-ts-utils-parser-list nil lang)) ;; find and merge settings (setq lang-ts-mode diff --git a/typst-ts-mode.el b/typst-ts-mode.el index 113458ed36..feae32afc2 100644 --- a/typst-ts-mode.el +++ b/typst-ts-mode.el @@ -1143,7 +1143,7 @@ typst tree sitter grammar (at least %s)!" (current-time-string min-time)) (typst-ts-els-merge-settings config) ;; some feature like cmake-ts-mode will create a parser when ;; the feature is required, so we need to clean thease parsers - (mapc #'treesit-parser-delete (treesit-parser-list nil lang)) + (mapc #'treesit-parser-delete (typst-ts-utils-parser-list nil lang)) (add-to-list 'typst-ts-els--include-languages lang)))) (typst-ts-mode-check-grammar-version)) diff --git a/typst-ts-utils.el b/typst-ts-utils.el index b817742974..aa6311ba1a 100644 --- a/typst-ts-utils.el +++ b/typst-ts-utils.el @@ -23,6 +23,21 @@ (require 'treesit) +(defun typst-ts-utils-parser-list (&optional buffer language) + "An comptibility function for Emacs 29's `treesit-parser-list' function. +BUFFER defaults to the current buffer. If that buffer is an indirect +buffer, its base buffer is used instead. That is, indirect buffers +use their base buffer's parsers. + +If LANGUAGE is non-nil, only return parsers for that language. " + (if (>= emacs-major-version 30) + (funcall #'treesit-parser-list buffer language) + (let ((parsers (treesit-parser-list buffer))) + (seq-filter + (lambda (parser) + (eq (treesit-parser-language parser) language)) + parsers)))) + ;; code is from treesit.el inside Emacs Source (defun typst-ts-utils-local-parsers-at (&optional pos language with-host) "Return all the local parsers at POS.