Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/facebookarchive/flow-language-server
An implementation of the Language Server Protocol for Flow
https://github.com/facebookarchive/flow-language-server
Last synced: 2 months ago
JSON representation
An implementation of the Language Server Protocol for Flow
- Host: GitHub
- URL: https://github.com/facebookarchive/flow-language-server
- Owner: facebookarchive
- License: other
- Archived: true
- Created: 2017-04-18T19:48:48.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2019-01-24T00:31:15.000Z (almost 6 years ago)
- Last Synced: 2024-10-16T19:13:49.808Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 866 KB
- Stars: 188
- Watchers: 18
- Forks: 21
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# 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](https://github.com/facebook/flow) by running `flow lsp`, and all of `flow-language-server`'s supported features are supported in Flow's native LSP implementation.
# Flow Language Server
[![npm](https://img.shields.io/npm/v/flow-language-server.svg)](https://www.npmjs.com/package/flow-language-server) [![CircleCI](https://circleci.com/gh/flowtype/flow-language-server/tree/master.svg?style=shield&circle-token=58418cffe1efc61717f814506b22d443904db15d)](https://circleci.com/gh/flowtype/flow-language-server/tree/master)
This is an implementation of the [Language Server Protocol](https://github.com/Microsoft/language-server-protocol/) for the [Flow static type checker](https://flow.org/) 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](https://github.com/facebook/flow/#requirements).## 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](#editor-integrations).## 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` or
* `npm 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` or
* `npm install -g flow-language-server`## Editor Integrations
### [Flow for Atom IDE (ide-flowtype)](https://github.com/flowtype/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:
1. Install [LanguageClient-neovim](https://github.com/autozimu/LanguageClient-neovim)
2. Run `npm install -g flow-language-server` or `yarn global add flow-language-server`
3. Add the following to neovim's configuration:```vim
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](https://code.facebook.com/codeofconduct)
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:
## License
flow-language-server is BSD licensed. We also provide an additional patent grant.