# Gherkin Auto-Complete Plus
[![Build Status](https://travis-ci.org/austincrft/sublime-gherkin-auto-complete-plus.svg?branch=master)](https://travis-ci.org/austincrft/sublime-gherkin-auto-complete-plus)
[![Join the chat at https://gitter.im/austincrft/sublime-gherkin-auto-complete-plus](https://badges.gitter.im/austincrft/sublime-gherkin-auto-complete-plus.svg)](https://gitter.im/austincrft/sublime-gherkin-auto-complete-plus?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
This is a [Sublime Text](http://www.sublimetext.com/) auto-complete package for use with [Cucumber](https://cucumber.io/)'s [Gherkin](https://cucumber.io/docs/reference#gherkin) language. This package will catalog Gherkin step definitions from the `*.feature` files of the selected directories and provide auto-complete suggestions based on the catalogued steps.
## Examples
**Auto-Complete**
![auto_complete](/img/auto_complete.gif)
**Fuzzy-searching steps**
![example](/img/list_steps_command.gif)
## Usage Info
**This package is only compatible with Sublime Text 3. It will not work on Sublime Text 2.**
- Any folders open in Sublime Text will be searched recursively for `*.feature` files. You can specify additional directories via the package's settings file *(Note: There is an option to use only these directories)*.
- Step catalog is updated when the package loads or on the save of a `*.feature` file
- This package relies on the first word of the line being a keyword (`Given`, `When`, `Then`) in order to give auto-complete suggestions. If a keyword is not found on the current line, the previous one will be used.
- If the first word on a line is an asterisk (`*`), that step will show up under all other step types
- It is not recommended that this is used alongside [cucumber-sublime-bundle](https://github.com/drewda/cucumber-sublime-bundle), as the bundled auto-complete will interfere with the results. At the moment, I've included the Gherkin syntax files so that this package can be self-contained. I have tried contacting the owner of that bundle, but he is not an easy man to reach.
## Options/Settings
The settings file for this package can be accessed from the toolbar via `Preferences -> Package Settings -> Gherkin Auto-Complete Plus -> Settings - User` (Note: You can open `Settings - Default` as a reference)
```javascript
{
// A collection of ADDITIONAL directories containing the features files you would like to scan
// The directories listed here will be scanned IN ADDITION to the folder(s) open in Sublime Text
"feature_file_directories":
[
"path/to/feature/files/directory",
"some/path/to/different/feature/files/directory"
],
// When this is set to true, the open directories in Sublime Text will be ignored, and only
// the directories listed in the `feature_file_directories` option will be used
"ignore_open_directories": false,
// Logging for execution information -- this will output to the Sublime Text Console
// You can view the console by going to the toolbar and selecting `View -> Show Console`
// Valid options:
// DEBUG - Detailed information for debugging
// INFO - Confirmation that things are working as expected
// WARNING - An indication something might fail in the future
// ERROR - An error occurred, likely a recoverable one
// CRITICAL - A non-recoverable error -- execution will stop
"logging_level": "error"
}
```
## Why did you create a new Gherkin Auto-Complete package instead of contributing to the existing one?
Short answer: There were a lot of changes I wanted to make, and felt it warranted a new package.
Differences:
- The auto-complete suggestions will pop up as you type -- no need to open manually
- Pressing space does not automatically commit the highlighted suggestion, so it shouldn't interrupt your workflow
- Only gives suggestions for current step-type (if the line starts with `Given`, then only `Given` steps will be suggested)
- Steps are formatted in snippet-notation to allow tabbing to values
- Table rows are not catalogued, which are unlikely to be duplicated exactly
- Values in between quotes (single and double), less- and greater-than signs, and numbers in 'integer' and 'decimal' format are ignored to remove duplicates from the step list
## Isn't the name 'Gherkin Auto-Complete *Plus*' a bit arrogant?
Absolutely, yes. It's intended to be tongue-in-cheek, but also I couldn't think of a better name. :smirk:
## Installation
#### Automatic - via [Package Control](https://packagecontrol.io/)
```
Search for 'Gherkin Auto-Complete Plus'
```
#### Mac OSX
``` bash
cd ~/Library/Application\ Support/Sublime\ Text\ 3/Packages
git clone https://github.com/austincrft/sublime-gherkin-auto-complete-plus.git "Gherkin Auto-Complete Plus"
```
#### Linux
``` bash
cd ~/.config/sublime-text-3/Installed\ Packages
git clone https://github.com/austincrft/sublime-gherkin-auto-complete-plus.git "Gherkin Auto-Complete Plus"
```
#### Windows
``` bash
cd "C:\Users\\AppData\Roaming\Sublime Text 3\Installed Packages"
git clone https://github.com/austincrft/sublime-gherkin-auto-complete-plus.git "Gherkin Auto-Complete Plus"
```
## Credits
The accompanied `*.tmLanguage` files were taken from [@drewda](https://github.com/drewda)'s [cucumber-sublime-bundle](https://github.com/drewda/cucumber-sublime-bundle) repository.