This repository contains several Emacs packages and tools to make editing Stan files easier.
-
stan-mode
is a major mode for editing Stan files. Its current features include:- syntax highlighting
- indentation
- imenu support for blocks, variables, and user-defined functions.
-
stan-snippets
: Adds Stan support for yasnippet. Yasnippet is a template system for Emacs. Snippets are defined for blocks, control structures, and all the built-in functions and distributions. -
indent-stan-files
: A shell script that usesstan-mode
to indent a file. See its README. -
stan-lang
: The filestan_lang.json
contains all keywords, functions (with their signatures and documentation) in the Stan modeling language. This is used to generate the keyword lists and snippets used by the modes. It could also be useful for developers designing tools for Stan, e.g. other editor modes.
The recommended way to install these packages is using the built-in package manager: package.el
.
These packages are available from MELPA.
If you're not already using MELPA, follow its installation instructions.
You can then install the packages using the following commands:
M-x package-install [RET] stan-mode [RET]
M-x package-install [RET] stan-snippets [RET]
If the installation does not work, try refreshing the package list:
M-x package-refresh-contents [RET]
Or add the following to you init.el
:
(package-refresh-contents)
(mapc
(lambda (p)
(unless (package-installed-p p)
(package-install p)))
'(stan-mode stan-snippets))
Another way to manage dependencies is to to use Cask. See its docs for an argument as to why to use Cask to manage your configuration.
Simply add the following to your Cask file:
(source melpa)
(depends-on "stan-mode")
(depends-on "stan-snippets")
and from the command line in the same directory as the Cask file use cask
to install the packages,
$ cask install
See the Cask documentation for more information.
To use, add the following to your init.el
file:
(require 'stan-mode)
To use, add the following to your init.el
file:
(require 'stan-snippets)
To use yasnippet
globally:
(yas-global-mode 1)
Else, to use yasnippet
only for stan-mode
:
(add-hook 'stan-mode-hook '(lambda () (yas-minor-mode)))
See the documenation for yasnippet for more information on using yasnippet-mode
.
stan-mode
does not directly support autocomplete.
However a dictionary compatible with autocomplete-mode is available for stan-mode.
To use autocomplete with stan, download the stan-mode, and follow the autocomplete directions for using a major-mode dictionary.
To update stan-mode when a version of the Stan language comes out:
- Replace
stan-lang/stan-functions-*.txt
with the newest version from CmdStan. - Build the emacs files
$ make
- Save and commit the changes
- Bump the version number of the emacs packages. For example, to bump to 8.0.0. This is different than the Stan language version.
$ ./update-versions.sh 8.0.0
- Tag the commit and push the tag
$ git tag v8.0.0
$ git push --tags
All packages are free software under the GPL v3.