docs-v2/content/shared/influxdb-v2/tools/flux-vim-lsp.md

108 lines
2.6 KiB
Markdown

> [!Important]
> #### Flux-LSP no longer maintained
> The `flux-lsp` Flux Language Server Protocol plugin is no longer maintained.
> The [`flux-lsp` repo](https://github.com/influxdata/flux-lsp) has been archived and is no longer receiving updates.
## Requirements
- Vim 8+
- [npm](https://www.npmjs.com/get-npm)
## Install the Flux plugin
There are many ways to install and manage Vim plugins.
We recommend either of the following two methods:
- [Install with vim-lsp](#install-with-vim-lsp)
- [Install with vim-coc](#install-with-vim-coc)
Both methods require you to add the following to your `.vimrc` so that Vim can recognize the `.flux` file type:
```
" Flux file type
au BufRead,BufNewFile *.flux set filetype=flux
```
### Install with vim-lsp
1. **Install `flux-lsp-cli` with npm**
```sh
npm i -g @influxdata/flux-lsp-cli
```
2. **Install [vim-lsp](https://github.com/prabirshrestha/vim-lsp)**
If it doesn't exist yet, create a directory called `pack/$USER/start/` in your `~/.vim/` and clone `vim-lsp` into it:
```sh
cd ~
mkdir -p .vim/pack/$USER/start/
cd .vim/pack/$USER/start/
git clone https://github.com/prabirshrestha/vim-lsp
```
3. **Edit your `.vimrc`**
Next, edit your `.vimrc` configuration file to include the following:
```
let g:lsp_diagnostics_enabled = 1
if executable('flux-lsp')
au User lsp_setup call lsp#register_server({
\ 'name': 'flux lsp',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'flux-lsp']},
\ 'whitelist': ['flux'],
\ })
endif
autocmd FileType flux nmap gd <plug>(lsp-definition)
```
### Install with vim-coc
1. **Install `flux-lsp-cli` from npm**
```sh
npm i -g @influxdata/flux-lsp-cli
```
2. **Install plug-vim**
[Install plug-vim](https://github.com/junegunn/vim-plug#installation), a plugin manager for Vim.
3. **Install vim-coc**
[Install vim-coc](https://github.com/neoclide/coc.nvim#quick-start), a code-completion plugin for Vim.
4. **Configure vim-coc**
vim-coc uses a `coc-settings.json` located in your `~/.vim/` directory.
To run the Flux LSP, add the Flux section under `languageserver`:
```json
{
"languageserver": {
"flux": {
"command": "flux-lsp",
"filetypes": ["flux"]
}
}
}
```
To debug flux-lsp, configure it to log to `/tmp/fluxlsp`:
```json
{
"languageserver": {
"flux": {
"command": "flux-lsp",
"args": ["-l", "/tmp/fluxlsp"],
"filetypes": ["flux"]
}
}
}
```