bash-lsp / Bash Language Server
Programming Languages
Labels
Projects that are alternatives of or similar to Bash Language Server
Bash Language Server
Bash language server implementation based on Tree Sitter and its grammar for Bash with explainshell integration.
Features
- [x] Jump to declaration
- [x] Find references
- [x] Code Outline & Show Symbols
- [x] Highlight occurrences
- [x] Code completion
- [x] Simple diagnostics reporting
- [x] Documentation for flags on hover
- [x] Workspace symbols
- [ ] Rename symbol
Installation
npm i -g bash-language-server
If you encounter installation errors, ensure you have node version 8 or newer (node --version
).
Clients
The following editors and IDEs have available clients:
- Visual Studio Code (Bash IDE)
- Atom (ide-bash)
- Sublime Text (LSP-bash)
- Vim (see below)
- Neovim (see below)
- Oni (see below)
- Eclipse (ShellWax)
- Emacs (see below)
- JupyterLab (jupyterlab-lsp)
Vim
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']},
\ 'allowlist': ['sh'],
\ })
endif
For Vim 8 or Neovim using neoclide/coc.nvim, according to it's Wiki article, add the following to your coc-settings.json
:
"languageserver": {
"bash": {
"command": "bash-language-server",
"args": ["start"],
"filetypes": ["sh"],
"ignoredRootPaths": ["~"]
}
}
For Vim 8 or NeoVim using dense-analysis/ale add the following
configuration to your .vimrc
:
let g:ale_linters = {
\ 'sh': ['language_server'],
\ }
Neovim
For NeoVim using autozimu/LanguageClient-neovim, add the following configuration to
init.vim
:
let g:LanguageClient_serverCommands = {
\ 'sh': ['bash-language-server', 'start']
\ }
For NeoVim v0.5(nightly) using its built-in lsp, install neovim/nvim-lspconfig and add the following configuration to either your init.vim
or init.lua
init.vim
:
lua require'lspconfig'.bashls.setup{}
or
init.lua
:
require'lspconfig'.bashls.setup{}
Oni
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"],
Emacs
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))
Development Guide
Please see docs/development-guide for more information.