LSP Server for EOLANG
July 9, 2026 · View on GitHub
This is the LSP server for EO.
It provides semantic highlighting and parsing error checking for .eo files
(written in EOLANG).
In order to use it, you need to have Node and npm installed.
Building it from source additionally requires a Java runtime
(JRE 11 or newer), since the parser is generated with ANTLR4.
Using with IntelliJ (with LSP4IJ)
LSP4IJ, a free LSP support plugin
for IntelliJ, provides an EO LSP server template
to automatically install and run the LSP Server for EOLANG:
- Install LSP4IJ into IntelliJ
- Open any
*.eofile, a notification will appear withInstall LSP Server for EOLANG - Click the link, confirm the server creation, then click
OK - The server will be installed (via npm)
Once done, semantic tokens and diagnostics will be available.
Using with Sublime Text
To use this LSP server with Sublime Text, you'll need to install
the LSP package and configure it
in Settings → Package Settings → LSP → Settings:
{
"clients": {
"eo-lsp": {
"enabled": true,
"command": ["npx", "-y", "eo-lsp-server@0.4.1", "--stdio"],
"selector": "source.eo"
}
}
}
Then, create a syntax definition file in
~/Library/Application Support/Sublime Text/Packages/User/EO.sublime-syntax:
%YAML 1.2
---
name: EO
file_extensions:
- eo
scope: source.eo
contexts:
main:
- match: '^\+[^\n]+$'
scope: meta.eo
- match: '#.*$'
scope: comment.line.eo
- match: '[@^*?]'
scope: keyword.eo
- match: '[\[\]\\>!:\.\)\(]|\+>'
scope: keyword.operator.eo
- match: '"[^"]*"'
scope: string.quoted.double.eo
- match: '\b(\+|-)?\d+(\.\d+(e(\+|-)?\d)?)?\b'
scope: constant.numeric.eo
Should work. If it doesn't, file an issue, we'll help.
Using with Neovim
To use this LSP server with Neovim, you need Neovim 0.11 or later (the built-in LSP client, no plugin required).
First, tell Neovim that *.eo files use the eo filetype, by adding
this to your init.lua:
vim.filetype.add({ extension = { eo = 'eo' } })
Then, register the server and enable it:
vim.lsp.config['eo_lsp'] = {
cmd = { 'npx', '-y', 'eo-lsp-server@0.4.1', '--stdio' },
filetypes = { 'eo' },
root_markers = { '.git', '.eo-root' },
}
vim.lsp.enable('eo_lsp')
Open any *.eo file; the server starts on attach and provides
semantic tokens and diagnostics.
Should work. If it doesn't, file an issue, we'll help.
How to Contribute
First, install Node modules with:
npm install
Then, build the project (this needs a Java runtime on your PATH,
because make generates the parser by running the ANTLR4 jar):
make
Make changes on a new branch.
You can run an instance of VS Code with the extension running by hitting F5
in the code editor.
After modifications, test your code with:
make test
Create a pull request, we'll be glad to review it and merge.