Emacs major mode for Salt States
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



License GPL 3 Build Status MELPA Badge MELPA Stable Badge

Salt-mode is a GNU Emacs major mode for editing SaltStack state files.

Salt is a Python-based configuration management and orchestration system built on top of a high-speed remote execution engine. Configuration management is most commonly managed by writing state files ending with .sls; this mode adds emacs support for these files.

Salt-mode requires a minimum emacs version of 24.4.

This uses mmm-mode and mmm-jinja2 to hook up Jinja2 templates into YAML (essentially what SaltStack files are).


  • Syntax highlighting
  • Indentation and alignment of expressions and statements
  • Jinja Templating Support
  • Spell checking of comments with flyspell
  • Open documentation for state functions
  • Navigation by state function


From MELPA or MELPA Stable with M-x package-install RET salt-mode.


Just visit Salt state files. The major mode is enabled automatically for Salt states with the extension .sls.


To enable flyspell for comments when using the mode:

(add-hook 'salt-mode-hook
        (lambda ()
            (flyspell-mode 1)))

State documentation

Use salt-mode-browse-doc to browse the documentation of the state module at point.

When run with a prefix argument, prompt for the state module to use.

If you have Python and the Salt Python modules installed, documentation may be viewed within Emacs via C-c C-d (salt-mode-describe-state) or ElDoc.

Function jumping

Use salt-mode-forward-state-function and salt-mode-backward-state-function, bound by default to C-M-b and C-M-f, to navigate by salt function.


Feel free to ask questions or make suggestions in the issue tracker on github.

This package was originally authored by Ben Hayden; the current maintainer is Glynn Forrest.


test/init.el defines a minimal emacs configuration with the local salt-mode file loaded.

Run make dev to load it in a new emacs.

You can also use the .sls files in test/ to test various mode functions.

Example configuration

With use-package:

(use-package salt-mode
  :ensure t
  (add-hook 'salt-mode-hook
            (lambda ()
              (flyspell-mode 1))))



Salt-mode is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Salt-mode is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

See COPYING for the complete license.