Herb Language Server
Package: @herb-tools/language-server
Language Server Protocol integration for HTML-aware ERB parsing using the Herb Parser.
Installation
Visual Studio Code
Install the Herb LSP extension from the Visual Studio Marketplace.
Cursor (Open VSX Registry)
Install the Herb LSP extension from the Open VSX Registry.
Zed
The Herb Language Server is part of the official Ruby extension for Zed. Just install the Ruby extension in Zed and you should be good to go.
Read more in the documentation.
Neovim (using nvim-lspconfig
)
After installing the Herb Language Server (see below), add herb_ls
to your Neovim config (requires nvim 0.11+):
require('lspconfig')
vim.lsp.enable('herb_ls')
Sublime Text (using Sublime LSP)
After installing the Herb Language Server (see below) and Sublime LSP, update the preferences for the LSP
package:
// LSP.sublime-settings
{
"clients": {
"herb": {
"enabled": true,
"command": [
"herb-language-server",
"--stdio"
],
"selector": "text.html.ruby | text.html.rails",
"settings": {
"languageServerHerb.linter": {
"enabled": true
}
},
"initializationOptions": {
"enabledFeatures": {
"diagnostics": true,
},
"experimentalFeaturesEnabled": true
}
}
},
}
Manual Installation
You can use the language server in any editor that supports the Language Server Protocol.
NPM (Global)
npm install -g @herb-tools/language-server
Yarn (Global)
yarn global add @herb-tools/language-server
Run
herb-language-server --stdio
Usage
Usage: herb-language-server [options]
Options:
--stdio use stdio
--node-ipc use node-ipc
--socket=<port> use socket
NPX
Alternatively you can also run the language server directly with npx
without installing anything:
npx @herb-tools/language-server --stdio
Configuration
The language server can be configured using a .herb-lsp/config.json
file in your project root. This file is automatically created when the language server starts if it doesn't exist.
Formatter Configuration
You can configure formatting behavior by adding a formatter
section to your config:
{
"version": "0.3.1",
"createdAt": "2025-06-29T00:00:00.000Z",
"updatedAt": "2025-06-29T00:00:00.000Z",
"options": {
"formatter": {
"enabled": true,
"indentWidth": 2,
"maxLineLength": 80
}
}
}
formatter
Options
enabled
(boolean
): Enable or disable formatting for this project. Defaults tofalse
.indentWidth
(number
): Number of spaces for each indentation level. Defaults to2
.maxLineLength
(number
): Maximum line length before wrapping. Defaults to80
.
Note: VS Code users can also control formatting globally through the languageServerHerb.formatter.enabled
setting in VS Code preferences. Formatting is currently in Beta and disabled by default.