Awesome
Project Status: 🚨 Unmaintained 🚨
This project is no longer maintained. We will not be accepting pull requests, addressing issues, nor making future releases.
Language Server Protocol is now supported natively in the core flow
program by running flow lsp
, and all of flow-language-server
's supported features are supported in Flow's native LSP implementation.
Flow Language Server
This is an implementation of the Language Server Protocol for the Flow static type checker for JavaScript. flow-language-server
makes creating a Flow integration for your favorite text editor or IDE much simpler.
Requirements
flow-language-server requires Node v6 or any later maintained version of Node.js. It also requires any supported operating system platform for Flow.
Supported features
- IntelliSense/code completion (
textDocument/completion
) - go to definition (
textDocument/definition
) - document highlighting (
textDocument/documentHighlight
) - document symbols outline (
textDocument/documentSymbol
) - hovers (
textDocument/hover
)
Installation
You most likely don't need to install flow-language-server
directly if you want Flow support for your favorite editor; instead, check out the integrations below.
How it works
flow-language-server
wraps the existing flow server binary the user has installed either locally in their project as the flow-bin
module from npm, or globally as the flow
binary. flow-language-server
translates messages as they come in from Flow, sending them over JSON RPC via stdio, node-ipc, a socket, or a named pipe. It also, for the time being, automatically downloads and manages any missing flow binaries, though this probably is best suited to each individual editor integration.
Building an editor integration
If your editor integration is built with node.js, you can install flow-language-server
as a dependency:
yarn add flow-language-server
ornpm install -S flow-language-server
Otherwise, flow-language-server
can be installed globally from npm into the user's path:
yarn global add flow-language-server
ornpm install -g flow-language-server
Editor Integrations
Flow for Atom IDE (ide-flowtype)
Developed in conjunction with flow-language-server, Flow for Atom IDE showcases all that the language server has to offer. Install it as ide-flowtype
through Atom's package manager along with atom-ide-ui
.
Neovim
flow-language-server
can be used with neovim:
- Install LanguageClient-neovim
- Run
npm install -g flow-language-server
oryarn global add flow-language-server
- Add the following to neovim's configuration:
let g:LanguageClient_serverCommands = {
\ 'javascript': ['flow-language-server', '--stdio'],
\ }
Wrote your own editor integration using flow-language-server
? Send us a pull request to add it here!
Contributing
Code of Conduct
Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please read the full text so that you can understand what actions will and will not be tolerated.
Contributor License Agreement ("CLA")
In order to accept your pull request, we need you to submit a CLA. You only need to do this once to work on any of Facebook's open source projects.
Complete your CLA here: https://code.facebook.com/cla
License
flow-language-server is BSD licensed. We also provide an additional patent grant.