Fennel language server protocol (LSP) support.
fennel-language-server
Fennel language server protocol (LSP) support.
fennel-language-server is currently in a very early stage and unreliable. Use it just for an encouraging try.
Installation
Because it is written in pure Rust language, the server should be installed via cargo.
cargo install --git https://github.com/rydesun/fennel-language-server
No demand for the Fennel environment. You don't even need Fennel runtime! (It sounds a little weird but that's the truth)
Integration
NOTE: The executable file is now named fennel-language-server. The former name fennel-ls has been abandoned.
Neovim
For Nvim user to setup fennel-language-server with nvim-lspconfig, add the following code to your configuration.
local lspconfig = require 'lspconfig'
require 'lspconfig.configs'.fennellanguageserver = {
default_config = {
-- replace it with true path
cmd = {'/PATH/TO/BINFILE'},
filetypes = {'fennel'},
singlefilesupport = true,
-- source code resides in directory fnl/
rootdir = lspconfig.util.rootpattern("fnl"),
settings = {
fennel = {
workspace = {
-- If you are using hotpot.nvim or aniseed,
-- make the server aware of neovim runtime files.
library = vim.api.nvimlistruntime_paths(),
},
diagnostics = {
globals = {'vim'},
},
},
},
},
}
lspconfig.fennellanguageserver.setup{}
Status
There is a long way to go. Features are partially completed:
- [x]
Diagnostics: Be careful these are not fully provided! - [x]
Goto Definition - [x]
Code Completion - [x]
References - [x]
Hover - [x]
Rename - [ ]
Formatter
The following are also known issues:
- Macro grammar support is very limited.
- Type checking is very weak.
- Lack of cross-file operation.
require-macros still does not analyzed.
You should use import-macros for a clear namespace.
Also See
XeroOl fennel-ls written in pure fennel you may love