Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/Pegase745/sublime-flowtype

A full featured Flow type support for Sublime Text 3
https://github.com/Pegase745/sublime-flowtype

flow javascript sublime-text

Last synced: 18 days ago
JSON representation

A full featured Flow type support for Sublime Text 3

Awesome Lists containing this project

README

        

# FlowType

*FlowType turns your Sublime Text 3 into a full featured Flow IDE.*

[![GitHub (pre-)release](https://img.shields.io/github/release/Pegase745/sublime-flowtype/all.svg)](https://github.com/Pegase745/sublime-flowtype/releases)
[![Build Status](https://travis-ci.org/Pegase745/sublime-flowtype.svg?branch=master)](https://travis-ci.org/Pegase745/sublime-flowtype)
[![Build status](https://ci.appveyor.com/api/projects/status/jofwwwr30ub7f8r2/branch/master?svg=true)](https://ci.appveyor.com/project/Pegase745/sublime-flowtype)
[![Package Control](https://img.shields.io/packagecontrol/dt/FlowType.svg)](https://packagecontrol.io/packages/FlowType)
[![black](https://img.shields.io/badge/code%20style-black-000000.svg)]()

**Features**

* Add and remove flow pragma on a file
* Check file contents for flow errors and highlight regions
* Go to file containing the type definition
* View a variable's type definition
* Show a file's coverage
* Show a text spinner every time the flow cli is working
* Launch cli commands in a thread in order to never block the IDE

## Installation

Make sure you have [FlowType installed](https://flow.org/en/docs/install/) and binary `flow` is accesible for Sublime.

This package can be installed using [Package Control](https://packagecontrol.io/). Simply install the `FlowType` package from the official repository.

Otherwise, you must clone this repository in your packages directory. You can find it using the `Preferences -> Browse Packages` menu from within Sublime Text.

```bash
$ git clone https://github.com/Pegase745/sublime-flowtype.git FlowType
```

## Usage

### Settings

The package settings can be modified in three places:

| Description | File Location | Menu Entry |
| ----------- | ------------- | ------------- |
| Global | `Packages/FlowType/FlowType.sublime-settings` | `Preferences > Package Settings > FlowType > Settings-Default` |
| User | `Packages/User/FlowType.sublime-settings` | `Preferences > Package Settings > FlowType > Settings-User` |
| Project (**recommended**) | `/.sublime-project` | `Project > Edit Project` (*options must be placed under the settings key*) |

The default available configuration settings

| Key | Description | Default value |
| --- | ----------- | ------------- |
| `log_level` | Set logging level | `info` |
| `flow_bin_path` | Path to flow binary | /usr/local/bin/flow |
| `complete_with_builtintypes` | Allow completions of Flow built-in types | `true` |
| `suggest_autocomplete_on_edit` (**beta**) | Show autocomplete suggestions on edit | `false` |
| `check_contents_on_edit` | Check contents for Flow errors on edit | `true` |
| `check_contents_on_save` | Check contents for Flow errors on save | `false` |

### Key Bindings

The key bindings can be modified in two places:

| Description | File Location | Menu Entry |
| ----------- | ------------- | ------------- |
| Default | `Packages/Default/Default (Linux/OSX/Windows).sublime-keymap` | `Preferences > Key Bindings` |
| User | `Packages/User/Default (Linux/OSX/Windows).sublime-keymap` | `Preferences > Key Bindings` |

The default available key bindings

| Description | Linux/Windows | OSX |
| ----------- | ------------- | --- |
| View all errors | `ctrl+alt+c` | `super+alt+c` |
| Show autocomplete values | `ctrl+alt+space` | `super+alt+space` |

### Mouse Bindings

It is not advised to specify default mousemaps in order to not create conflicts with other packages.

Therefore, you can add mouse bindings for FlowType like this:

* For **Linux**, create a "Default (Linux).sublime-mousemap" in **~/.config/sublime-text-3/Packages/User**
* For **OSX**, create a "Default (OSX).sublime-mousemap" in **~/Library/Application Support/Sublime Text 3/Packages/User**
* For **Windows**, create a "Default (Windows).sublime-mousemap" in **%appdata%\Sublime Text 3\Packages\User**

For the following binding examples:

| Description | Linux/Windows | OSX |
| ----------- | ------------- | --- |
| Go to definition | `ctrl+left-click` | `super+left-click` |
| View type | `ctrl+right-click` | `super+right-click` |

You must enter the following conf:

**Linux and Windows**

```json
[
{
"button": "button1",
"count": 1,
"modifiers": ["ctrl"],
"press_command": "drag_select",
"command": "flowtype_goto_definition",
"context": [
{ "key": "selector", "operator": "equal", "operand": "source.js" }
]
},
{
"button": "button2",
"count": 1,
"modifiers": ["ctrl"],
"press_command": "drag_select",
"command": "flowtype_view_type",
"context": [
{ "key": "selector", "operator": "equal", "operand": "source.js" }
]
}
]
```

**OSX**

```json
[
{
"button": "button1",
"count": 1,
"modifiers": ["super"],
"press_command": "drag_select",
"command": "flowtype_goto_definition",
"context": [
{ "key": "selector", "operator": "equal", "operand": "source.js" }
]
},
{
"button": "button2",
"count": 1,
"modifiers": ["super"],
"press_command": "drag_select",
"command": "flowtype_view_type",
"context": [
{ "key": "selector", "operator": "equal", "operand": "source.js" }
]
}
]
```

## Change Log

All notable changes to this project will be documented on the Github [Releases](https://github.com/Pegase745/sublime-flowtype/releases) page.

*This project adheres to [Semantic Versioning](http://semver.org/) and [Keep A Changelog](http://keepachangelog.com/).*

## License

This package is distributed under the terms of the MIT license. See the [LICENSE](LICENSE) file for more details.