You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
2.8 KiB
Markdown

# vim-flow
A vim plugin for [Flow][flow].
- Adds completions to `omnifunc`
- Checks JavaScript files for type errors on save
## Requirements
- Requires [Flow][flow] to be installed and available on your path
- Requires the project to be initialised with `flow init`
- Requires JavaScript files to be marked with `/* @flow */` or `/* @flow weak */` at the top
## Installation
### [Pathogen][pathogen]
cd ~/.vim/bundle
git clone git://github.com/flowtype/vim-flow.git
### [NeoBundle][neobundle]
Add this to your `~/.vimrc`
```VimL
NeoBundleLazy 'flowtype/vim-flow', {
\ 'autoload': {
\ 'filetypes': 'javascript'
\ }}
```
#### With [Flow][flow] build step, using [flow-bin][flowbin]
```VimL
NeoBundleLazy 'flowtype/vim-flow', {
\ 'autoload': {
\ 'filetypes': 'javascript'
\ },
\ 'build': {
\ 'mac': 'npm install -g flow-bin',
\ 'unix': 'npm install -g flow-bin'
\ }}
```
## Usage
Unless [disabled manually][gflowenable], vim-flow will check JavaScript and JSX files on save.
## Commands
#### `FlowMake`
Triggers a type check for the current file.
#### `FlowToggle`
Turns automatic checks on save on or off.
#### `FlowType`
Display the type of the variable under the cursor.
#### `FlowJumpToDef`
Jump to the definition of the variable under the cursor.
## Configuration
#### `g:flow#autoclose`
If this is set to `1`, the |quickfix| window opened when the plugin finds an error
will close automatically.
Default is `0`.
#### `g:flow#enable`
Typechecking is done automatically on `:w` if set to `1`.
To disable this, set to `0` in your ~/.vimrc, like so:
```VimL
let g:flow#enable = 0
```
Default is `1`.
#### `g:flow#errjmp`
Jump to errors after typechecking if set to `1`.
Default is `0`.
#### `g:flow#flowpath`
Leave this as default to use the flow executable defined on your path. To use
a custom flow executable, set this like so:
```VimL
let g:flow#flowpath = /your/flow-path/flow
```
#### `g:flow#omnifunc`
By default `omnifunc` will be set to provide omni completion. To disable it
(prevent overwriting an existed omnifunc), set this value to 0:
```VimL
let g:flow#omnifunc = 0
```
#### `g:flow#timeout`
By default `timeout` will be set to 2 seconds. If you are working on a larger
codebase, you may want to increase this to avoid errors when Flow initializes.
```VimL
let g:flow#timeout = 4
```
#### `g:flow#qfsize`
Leave this as default to let the plugin decide on the quickfix window size.
[gflowenable]: https://github.com/flowtype/vim-flow#gflowenable
[flow]: https://github.com/facebook/flow
[flowbin]: https://github.com/sindresorhus/flow-bin
[pathogen]: https://github.com/tpope/vim-pathogen
[neobundle]: https://github.com/Shougo/neobundle.vim