# Language-Based Tools

Language-based tools are software that operate on programming languages, including Integrated Development Environments (IDEs) and others.

Many of these tools can be configured to recognise the syntax of a .enaml file, and thus provide syntax-colouring, indenting support and other features.

Enaml comes bundled with a number of configuration files for common IDEs and other tools.

## BBEdit

BBEdit is a commercial MacOS IDE from Bare Bones.

An Enaml language library for BBEdit is provided in the source at `tools/barebones/`

For installation instructions, see the BBEdit Support pages.

## GNU Emacs

GNU Emacs is a popular, cross-platform, open-source IDE.

An Enaml mode for Emacs is provided in the source at `tools/emacs`.

For installation instructions, see in the source at `tools/emacs/README.rst`

## TextMate

TextMate is a commercial MacOS IDE.

An Enaml language definition for TextMate is provided in the source tree at `tools/sublimetext`.

For installation instructions, see the TextMate Manual.

## Sublime Text

Sublime Text is a cross-platform, commercial IDE.

Sublime Text can also use the TextMate language definition at `tools/sublimetext/Enaml.tmLanguage`.

The preferred method to access it is to use the Sublime Package Manager. Alternatively, the files can be obtained on Github and manually used.

For installation instructions, see the Sublime Text manual.

## Visual Studio

Visual Studio is a commercial IDE for Windows and MacOs from Microsoft.

Visual Studio can also use the TextMate language definition at `tools/sublimetext/Enaml.tmLanguage`.

For installation instructions, see the Visual Studio manual.

Alternatively, there is a third-party Visual Studio extension, enaml-vs available free from the Visual Studio Marketplace, which offers simpler installation of the same definitions.

Warning

Third-party plugins are not supported by the Enaml team.

## PyCharm

PyCharm is a cross-platform, freemium Python IDE from JetBrains.

PyCharm can also use the TextMate language definition at `tools/sublimetext/Enaml.tmLanguage`.

For installation instructions, see the TextMate Bundles support plugin manual.

Alternatively, there are two third-party PyCharm plugins to add basic syntax support for Enaml:

- pycharm-enaml-plugin

- pycharm-enaml-keywords

Warning

Third-party plugins are not supported by the Enaml team.

## Vim

Vim is a popular, cross-platform, charityware text editor.

Enaml syntax and indent files are available at `tools/vim`.

For installation instructions, see in the source at `tools/vim/README.rst`

## Pygments

Pygments is an open-source generic syntax highlighter. It is used by Sphinx to format code included in project documentation.

An Enaml lexer for Pygments is available at `tools/pygments`.

To install, change into the `./tools/pygments` directory, and run `pip install -e .`.

Alternatively, it can be installed directly from PyPi: `pip install pygments-enaml`

Once this is installed, it will be automatically used by Sphinx to format Enaml code blocks (i.e. code directives, with enaml as the language argument.)