Ecosyste.ms: Awesome

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

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.

Lists

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.