bash-language-serverA language server for Bash

联合创作 · 2023-09-30 06:12

Bash Language Server


Bash language server implementation based on Tree Sitter and its grammar for Bash with explainshell integration.


Features



  • Jump to declaration

  • Find references

  • Code Outline & Show Symbols

  • Highlight occurrences

  • Code completion

  • Simple diagnostics reporting

  • Documentation for flags on hover

  • 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:



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.

浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报