Bash language server implementation based on Tree Sitter and its grammar for Bash with explainshell integration.
- Jump to declaration
 - Find references
 - Code Outline & Show Symbols
 - Highlight occurrences
 - Code completion
 - Simple diagnostics reporting
 - Documentation for flags on hover
 - Rename symbol
 
npm i -g bash-language-serverIf you encounter installation errors, ensure you have node version 8 or newer (node --version).
The following editors and IDEs have available clients:
- Visual Studio Code (Bash IDE)
 - Atom (ide-bash)
 - Vim (see below)
 - Neovim (see below)
 - Oni (see below)
 - Eclipse (ShellWax)
 - Emacs (see below)
 
For Vim 8 or later install the plugin prabirshrestha/vim-lsp and add the following configuration to .vimrc:
if executable('bash-language-server') au User lsp_setup call lsp#register_server({ \ 'name': 'bash-language-server', \ 'cmd': {server_info->[&shell, &shellcmdflag, 'bash-language-server start']}, \ 'whitelist': ['sh'], \ }) endifFor Vim 8 or Neovim using neoclide/coc.nvim, according to it's Wiki article, add the following to your coc-settings.json:
For Vim 8 or NeoVim using w0rp/ale add the following configuration to your .vimrc:
let g:ale_linters = { \ 'sh': ['language_server'], \ }Install the plugin autozimu/LanguageClient-neovim and add the following configuration to init.vim:
let g:LanguageClient_serverCommands = { \ 'sh': ['bash-language-server', 'start'] \ }On the config file (File -> Preferences -> Edit Oni config) add the following configuration:
"language.bash.languageServer.command": "bash-language-server", "language.bash.languageServer.arguments": ["start"],Lsp-mode has a built-in client, can be installed by use-package. Add the configuration to your .emacs.d/init.el
(use-package lsp-mode :commands lsp :hook (sh-mode . lsp))Please see docs/development-guide for more information.