* Added a new function to each language to select the backend * Use these new functions in all `pcase`.
3.5 KiB
Shell Scripts layer
Description
This simple layer adds support for shell scripting.
Supported scripting files:
.sh
.fish
: fish shell
Note: For Windows scripting see the layer windows-scripts
Features:
- Auto-completion using company-shell
Sh
scripts linting using shellcheckSh
scripts style checking using bashate- Support for the Language Server Protocol (experimental)
Install
Layer
To use this configuration layer, add it to your ~/.spacemacs
. You will need to
add shell-scripts
to the existing dotspacemacs-configuration-layers
list in this
file.
Linting
In order to enable sh
scripts linting, install shellcheck.
Style checking
In order to enable sh
scripts style checking, install bashate.
Backends
You have the choice between two different backends with different setup instructions and different capabilities.
Shell-script-mode
This is the recommended way for working with shell scripts in emacs. It works by using an emacs major mode.
It supports bash
and fish
shell scripts.
No additional setup is necessary.
LSP
This backend uses an external server to provide the various IDE integrations
and a more modern UI integration in spacemacs
.
However it only supports working with bash
scripts.
It requires installing the external server via:
npm i -g bash-language-server
Enable the lsp
layer to activate this backend as well as setting the layer
variable shell-scripts-backend
:
(shell-scripts :variables shell-scripts-backend 'lsp)
You can find further information about the project at its GitHub page.
Key bindings
Key binding | Description |
---|---|
SPC m \ |
insert end-of-line backslashes to the lines in the region |
SPC i ! |
insert shebang in a script file |
SPC m i ! |
insert shebang in a script file |
SPC m i c |
insert switch case statement if supported by shell |
SPC m i i |
insert if statement if supported by shell |
SPC m i f |
insert function definition if supported by shell |
SPC m i o |
insert for loop if supported by shell |
SPC m i e |
insert an indexed for loop if supported by shell |
SPC m i w |
insert while loop if supported by shell |
SPC m i r |
insert repeat loop if supported by shell |
SPC m i s |
insert select loop if supported by shell |
SPC m i u |
insert until loop if supported by shell |
SPC m i g |
insert a getopts while loop if supported by shell |