Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ostinelli/SublimErl

An Erlang Plugin for Sublime Text 2, which enables code completion and allows you to run tests within the editor itself.
https://github.com/ostinelli/SublimErl

Last synced: 3 months ago
JSON representation

An Erlang Plugin for Sublime Text 2, which enables code completion and allows you to run tests within the editor itself.

Awesome Lists containing this project

README

        

# SublimErl (Erlang Tests & Code Completion)

Overview
--------

SublimErl is a plugin for the text editor [Sublime Text 2](http://www.sublimetext.com/2). It allows you to:

* Benefit from **Code Completion** ( all Erlang libs + your current project )
* Allows you to **Auto-Indent** your Erlang code
* Run **Eunit** tests ( all tests for module / single test )
* Run **Common Tests** ( all tests for module )
* Run **Dialyzer** tests ( single module )
* **Goto any exported function** of your project easily
* Access **man pages** from the text editor

All within your test editor.

A brief feature introduction video can be seen [here](http://www.youtube.com/watch?v=KIzxbjlHmu0):

[![SublimErl screenshot](http://www.ostinelli.net/_out_images/video.png)](http://www.youtube.com/watch?v=KIzxbjlHmu0)

Screenshots
-----------

Here's a screenshot of SublimErl's **Code Completion** feature:

![SublimErl screenshot](http://www.ostinelli.net/_out_images/code_completion_full.gif)

Here's a screenshot of SublimErl's **Auto-Indenting** feature:

![SublimErl screenshot](http://www.ostinelli.net/_out_images/indenting.gif)

Here's a screenshot of SublimErl **running an Eunit specific test** in file.

![SublimErl screenshot](http://www.ostinelli.net/_out_images/running_test.jpeg)

Usage
-----

* **Code Completion**: Just type and select available options
* **Auto-Indenting**: hit `Command-Option-L` to auto-intent an entire file
* Run **single Eunit**: position your cursor anywhere **within** your test function and hit `Command-Shift-F8`
* Run **all Eunit tests** in file: position your cursor **outside** any test function and hit `Command-Shift-F8`
* Run **all CT tests** in file: view the file and hit `Command-Shift-F8`
* Run **Dialyzer** on file: view the file and hit `Command-Shift-F9`
* Re-Run the **previous test**: hit `Command-F8` ( you do not need to be viewing the test to launch it )
* View **Common Tests results** in browser: hit `Command-Option-F8` (OSX) | `Command-Alt-F8` (Linux/Win)
* **Goto any exported function** of your project easily: hit `Command-Option-p` (OSX) | `Command-Alt-p` (Linux/Win) and select a function
* To access **man pages**: hit `Command-Option-i` (OSX) | `Command-Alt-i` (Linux/Win) and select a module

Installation
------------
SublimErl currently supports only on **OSX** and **Linux**. There are 3 ways to install it.

##### 1. Sublime Package Control
Download and install the [Sublime Package Control](http://wbond.net/sublime_packages/package_control). This package controller allows you to easily manage your Sublime Text 2 plugins (installs / removals / upgrades).

SublimErl's latest stable versions are pushed automatically to the package control. However, if you want the latest and greatest, you'll have to use one of the other following options.

##### 2. Git Clone
Go to your Sublime Text 2 `Packages` directory:

* OS X: `~/Library/Application Support/Sublime Text 2/Packages`
* Linux: `~/.Sublime Text 2/Packages/`

and clone the repository using the command below:

``` shell
git clone https://github.com/ostinelli/SublimErl.git
```

##### 3. File Download
Head to the [downloads](https://github.com/ostinelli/SublimErl/downloads) section and unzipping the downloaded file into the Sublime Text 2 `Packages` directory.

Configuration
-------------

SublimErl needs and will try to detect the paths of the following executables: **rebar**, **erl**, **escript** and **dialyzer**. If it doesn't succeed to find those, or if you prefer to manually configure these path, you can set them in the `SublimErl.sublime-settings` file, located in the `SublimErl` plugin directory.

Dependencies
------------

To use SublimErl, you need to have:

* The editor [Sublime Text 2](http://www.sublimetext.com/2).
* [Erlang](http://www.erlang.org/download.html) ( ..obviously ^^_ ).
* Basho's [Rebar](https://github.com/basho/rebar) built after September 13th, 2012 (which has support for the `tests=` option).
* (optional) [Erlang man pages](http://www.erlang.org/download.html) if you use this functionality.

To unleash the full power of the plugin, you will also need to comply to:

* OTP standards ( i.e. have your project defined according to [OTP Directory Structure](http://www.erlang.org/doc/design_principles/applications.html#id73730) ).
* [Rebar's conventions](https://github.com/basho/rebar/wiki/Rebar-and-OTP-conventions).

TL;DR: it basically means to organize your project structure using:

```
-- myproject
|-- ebin
|-- src
|-- myproject.app.src
|-- test
|-- ...
```

or, for example, a more complex project structure defined in rebar.conf:

```
-- myproject
rebar.config
|-- apps
|-- app1
|-- app2
|-- deps
|-- dep1
|-- dep2
|-- ...
```

Known issues
------------

We have had reports that some plugin functionalities experience unwanted behaviour (freezing) with the Erlang precompiled package provided by Erlang Solutions, see [issue #56](https://github.com/ostinelli/SublimErl/issues/56). We're looking into this.