Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

bash-language-server

Package Overview
Dependencies
Maintainers
2
Versions
107
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bash-language-server - npm Package Compare versions

Comparing version 4.1.0 to 4.1.1

5

CHANGELOG.md
# Bash Language Server
## 4.1.1
- Background analysis: handle workspace root being a URL https://github.com/bash-lsp/bash-language-server/pull/625
- Shell documentation: add `--noprofile --norc` to avoid config files breaking formatting https://github.com/bash-lsp/bash-language-server/pull/626
## 4.1.0

@@ -4,0 +9,0 @@

6

out/util/fs.js

@@ -20,4 +20,5 @@ "use strict";

exports.getFilePaths = exports.untildify = void 0;
const os = require("node:os");
const node_url_1 = require("node:url");
const fastGlob = require("fast-glob");
const os = require("os");
// from https://github.com/sindresorhus/untildify/blob/f85a087418aeaa2beb56fe2684fe3b64fc8c588d/index.js#L11

@@ -34,2 +35,5 @@ function untildify(pathWithTilde) {

return __awaiter(this, void 0, void 0, function* () {
if (rootPath.startsWith('file://')) {
rootPath = (0, node_url_1.fileURLToPath)(rootPath);
}
const stream = fastGlob.stream([globPattern], {

@@ -36,0 +40,0 @@ absolute: true,

2

out/util/sh.js

@@ -24,3 +24,3 @@ "use strict";

else {
args.push('-c', body);
args.push('--noprofile', '--norc', '-c', body);
}

@@ -27,0 +27,0 @@ const process = ChildProcess.spawn(cmd, args);

@@ -6,3 +6,3 @@ {

"license": "MIT",
"version": "4.1.0",
"version": "4.1.1",
"publisher": "mads-hartmann",

@@ -28,8 +28,8 @@ "main": "./out/server.js",

"vscode-languageserver": "8.0.2",
"vscode-languageserver-textdocument": "1.0.7",
"vscode-languageserver-textdocument": "1.0.8",
"web-tree-sitter": "0.20.7",
"zod": "3.19.1"
"zod": "3.20.2"
},
"scripts": {
"prepublishOnly": "cd ../ && yarn run compile"
"prepublishOnly": "cd ../ && yarn run compile && cp README.md server/"
},

@@ -36,0 +36,0 @@ "devDependencies": {

# Bash Language Server
Bash language server implementation based on [Tree Sitter][tree-sitter] and its [grammar for Bash][tree-sitter-bash]. Integrates with [explainshell][explainshell] and [shellcheck][shellcheck].
Bash language server that brings an IDE-like experience for bash scripts to most editors. This is based on the [Tree Sitter parser][tree-sitter-bash] and supports [explainshell][explainshell] and [shellcheck][shellcheck].
Documentation for environment variables can be found in the [config.ts][https://github.com/bash-lsp/bash-language-server/blob/main/server/src/config.ts] file.
We strongly recommend that you install [shellcheck][shellcheck] to enable linting: https://github.com/koalaman/shellcheck#installing
For more information see the GitHub repository: [bash-ide/bash-language-server][https://github.com/bash-lsp/bash-language-server]
Documentation around configuration can be found in the [config.ts](https://github.com/bash-lsp/bash-language-server/blob/main/server/src/config.ts) file.
## Features
- Jump to declaration
- Find references
- Code Outline & Show Symbols
- Highlight occurrences
- Code completion
- Simple diagnostics reporting
- Documentation for symbols on hover
- Workspace symbols
To be implemented:
- Rename symbol
- Better jump to declaration and find references based on scope
## Installation
```bash
npm i -g bash-language-server
```
On Fedora based distros:
```bash
dnf install -y nodejs-bash-language-server
```
If you encounter installation errors, ensure you have node version 14 or newer (`node --version`).
### Clients
The following editors and IDEs have available clients:
- Atom ([ide-bash][ide-bash])
- Eclipse ([ShellWax](https://marketplace.eclipse.org/content/shellwax))
- Emacs ([see below](#emacs))
- [Helix](https://helix-editor.com/) (built-in support)
- JupyterLab ([jupyterlab-lsp][jupyterlab-lsp])
- Neovim ([see below](#neovim))
- Sublime Text ([LSP-bash][sublime-text-lsp])
- Vim ([see below](#vim))
- Visual Studio Code ([Bash IDE][vscode-marketplace])
- [Oni](https://github.com/onivim/oni) ([see below](#oni))
#### Vim
For Vim 8 or later install the plugin [prabirshrestha/vim-lsp][vim-lsp] and add the following configuration to `.vimrc`:
```vim
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', 'bash'],
\ })
endif
```
For Vim 8 or Neovim using [neoclide/coc.nvim][coc.nvim], according to [it's Wiki article](https://github.com/neoclide/coc.nvim/wiki/Language-servers#bash), add the following to your `coc-settings.json`:
```jsonc
"languageserver": {
"bash": {
"command": "bash-language-server",
"args": ["start"],
"filetypes": ["sh"],
"ignoredRootPaths": ["~"]
}
}
```
For Vim 8 or NeoVim using [dense-analysis/ale][vim-ale] add the following
configuration to your `.vimrc`:
```vim
let g:ale_linters = {
\ 'sh': ['language_server'],
\ }
```
#### Neovim
For Neovim v0.8:
```lua
vim.api.nvim_create_autocmd('FileType', {
pattern = 'sh',
callback = function()
vim.lsp.start({
name = 'bash-language-server',
cmd = { 'bash-language-server', 'start' },
})
end,
})
```
For NeoVim using [autozimu/LanguageClient-neovim][languageclient-neovim], add the following configuration to
`init.vim`:
```vim
let g:LanguageClient_serverCommands = {
\ 'sh': ['bash-language-server', 'start']
\ }
```
For Vim8/NeoVim v0.5 using [jayli/vim-easycomplete](https://github.com/jayli/vim-easycomplete). Execute `:InstallLspServer sh` and config nothing. Maybe it's the easiest way to use bash-language-server in vim/nvim.
#### Oni
On the config file (`File -> Preferences -> Edit Oni config`) add the following configuration:
```javascript
"language.bash.languageServer.command": "bash-language-server",
"language.bash.languageServer.arguments": ["start"],
```
#### Emacs
[Lsp-mode](https://github.com/emacs-lsp/lsp-mode) has a built-in client, can be installed by `use-package`.
Add the configuration to your `.emacs.d/init.el`
```emacs-lisp
(use-package lsp-mode
:commands lsp
:hook
(sh-mode . lsp))
```
## Development Guide
Please see [docs/development-guide][dev-guide] for more information.
[tree-sitter]: https://github.com/tree-sitter/tree-sitter
[tree-sitter-bash]: https://github.com/tree-sitter/tree-sitter-bash
[vscode-marketplace]: https://marketplace.visualstudio.com/items?itemName=mads-hartmann.bash-ide-vscode
[dev-guide]: https://github.com/bash-lsp/bash-language-server/blob/master/docs/development-guide.md
[ide-bash]: https://atom.io/packages/ide-bash
[sublime-text-lsp]: https://packagecontrol.io/packages/LSP-bash
[explainshell]: https://explainshell.com/
[shellcheck]: https://www.shellcheck.net/
[languageclient-neovim]: https://github.com/autozimu/LanguageClient-neovim
[nvim-lspconfig]: https://github.com/neovim/nvim-lspconfig
[vim-lsp]: https://github.com/prabirshrestha/vim-lsp
[vim-ale]: https://github.com/dense-analysis/ale
[coc.nvim]: https://github.com/neoclide/coc.nvim
[jupyterlab-lsp]: https://github.com/krassowski/jupyterlab-lsp

@@ -0,1 +1,3 @@

import { pathToFileURL } from 'node:url'
import {

@@ -204,3 +206,3 @@ FIXTURE_DOCUMENT,

parser,
workspaceFolder: REPO_ROOT_FOLDER,
workspaceFolder: pathToFileURL(REPO_ROOT_FOLDER).href,
})

@@ -207,0 +209,0 @@ await newAnalyzer.initiateBackgroundAnalysis({

@@ -1,3 +0,5 @@

import * as Process from 'child_process'
import * as Path from 'path'
import * as Process from 'node:child_process'
import * as Path from 'node:path'
import { pathToFileURL } from 'node:url'
import * as LSP from 'vscode-languageserver/node'

@@ -17,3 +19,3 @@ import { CodeAction } from 'vscode-languageserver/node'

async function initializeServer(
{ rootPath }: { rootPath?: string } = { rootPath: FIXTURE_FOLDER },
{ rootPath }: { rootPath?: string } = { rootPath: pathToFileURL(FIXTURE_FOLDER).href },
) {

@@ -20,0 +22,0 @@ const diagnostics: Array<LSP.PublishDiagnosticsParams | undefined> = []

@@ -0,3 +1,5 @@

import * as os from 'node:os'
import { fileURLToPath } from 'node:url'
import * as fastGlob from 'fast-glob'
import * as os from 'os'

@@ -21,2 +23,6 @@ // from https://github.com/sindresorhus/untildify/blob/f85a087418aeaa2beb56fe2684fe3b64fc8c588d/index.js#L11

}): Promise<string[]> {
if (rootPath.startsWith('file://')) {
rootPath = fileURLToPath(rootPath)
}
const stream = fastGlob.stream([globPattern], {

@@ -23,0 +29,0 @@ absolute: true,

@@ -17,3 +17,3 @@ import * as ChildProcess from 'child_process'

} else {
args.push('-c', body)
args.push('--noprofile', '--norc', '-c', body)
}

@@ -20,0 +20,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc