aboutsummaryrefslogtreecommitdiffhomepage
path: root/sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el
diff options
context:
space:
mode:
Diffstat (limited to 'sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el')
-rw-r--r--sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el24
1 files changed, 21 insertions, 3 deletions
diff --git a/sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el b/sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el
index 4cc6332..098a28c 100644
--- a/sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el
+++ b/sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el
@@ -1,10 +1,28 @@
(add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
+;; Regex / font-lock major mode. Fallback for Emacs < 29 and for users
+;; who have not installed the tree-sitter-sisu parser.
(autoload 'sisu-spine-mode "sisu-spine-mode" "\
Major mode for editing SiSU (spine) markup files.
SiSU (https://www.sisudoc.org/) document structuring, publishing
and search.
\(fn)" t nil)
-(add-to-list 'auto-mode-alist '("\\.sst\\'" . sisu-spine-mode))
-(add-to-list 'auto-mode-alist '("\\.ssm\\'" . sisu-spine-mode))
-(add-to-list 'auto-mode-alist '("\\.ssi\\'" . sisu-spine-mode))
+
+;; Tree-sitter major mode (Emacs 29+). When the parser is installed it
+;; is selected by `auto-mode-alist'; otherwise the regex mode is used.
+(autoload 'sisu-spine-ts-mode "sisu-spine-ts-mode" "\
+Tree-sitter major mode for editing SiSU (spine) markup files.
+
+\(fn)" t nil)
+(autoload 'sisu-spine-ts-install-grammar "sisu-spine-ts-mode" "\
+Install the tree-sitter-sisu grammar for `sisu-spine-ts-mode'.
+\(fn)" t nil)
+(defun sisu-spine-auto-mode ()
+ "Choose `sisu-spine-ts-mode' if the parser is installed, else fall back."
+ (if (and (fboundp 'treesit-ready-p) (treesit-ready-p 'sisu t))
+ (sisu-spine-ts-mode)
+ (sisu-spine-mode)))
+
+(add-to-list 'auto-mode-alist '("\\.sst\\'" . sisu-spine-auto-mode))
+(add-to-list 'auto-mode-alist '("\\.ssm\\'" . sisu-spine-auto-mode))
+(add-to-list 'auto-mode-alist '("\\.ssi\\'" . sisu-spine-auto-mode))