A major mode for editing Astro templates. Requires Emacs 30.
This project has been migrated, and is no longer updated here. It now lives on my personal Forgejo instance.
Available as astro-ts-mode. Install with your preferred package manager, such as straight.el.
Clone this repo anywhere you want, probably somewhere in ~/.emacs.d . Then, add the directory to your load-path.
For example:
cd ~/.emacs.d git clone https://github.com/Sorixelle/astro-ts-mode.git
Then, in init.el:
(add-to-list 'load-path (concat user-emacs-directory "astro-ts-mode"))
(require 'astro-ts-mode)The first time you open a .astro file, or (require 'astro-ts-mode), you’ll likely get a warning such as the following:
Cannot activate tree-sitter, because language grammar for astro is unavailable
Because this major mode is powered by Tree-sitter, it depends on an external grammar to provide a syntax tree for Astro templates. To set it up, you’ll need to set treesit-language-source-alist to point to the correct repositories for each language. At a minimum, you’ll need to specify astro, tsx and css, like so:
(setq treesit-language-source-alist
'((astro "https://github.com/virchau13/tree-sitter-astro")
(css "https://github.com/tree-sitter/tree-sitter-css")
(tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src")))Once that’s been setup, you’ll need to run treesit-install-language-grammar once for each language in the list. You can do this interactively (M-x), or by evaluating this snippet:
(mapc #'treesit-install-language-grammar '(astro css tsx))Alternatively, if you’re using treesit-auto to manage tree-sitter grammars for you, you can specify a recipe for it:
(let ((astro-recipe (make-treesit-auto-recipe
:lang 'astro
:ts-mode 'astro-ts-mode
:url "https://github.com/virchau13/tree-sitter-astro"
:revision "master"
:source-dir "src")))
(add-to-list 'treesit-auto-recipe-list astro-recipe))Make sure you have a working C compiler as cc in your PATH, since this needs to compile the grammars.
You can use these variables to customize the behaviour of astro-ts-mode:
astro-ts-mode-indent-offset- Number of spaces for each indentation step. Defaults to 2.
- virchau13 for tree-sitter-astro, the Tree-sitter grammar this major mode is built on
- The Astro team for the framework this mode is built for