local configs = require 'lspconfig/configs' local util = require 'lspconfig/util' local lsp = vim.lsp local api = vim.api local server_name = 'elmls' local bin_name = 'elm-language-server' local default_capabilities = lsp.protocol.make_client_capabilities() default_capabilities.offsetEncoding = { 'utf-8', 'utf-16' } local elm_root_pattern = util.root_pattern 'elm.json' configs[server_name] = { default_config = { cmd = { bin_name }, -- TODO(ashkan) if we comment this out, it will allow elmls to operate on elm.json. It seems like it could do that, but no other editor allows it right now. filetypes = { 'elm' }, root_dir = function(fname) local filetype = api.nvim_buf_get_option(0, 'filetype') if filetype == 'elm' or (filetype == 'json' and fname:match 'elm%.json$') then return elm_root_pattern(fname) end end, init_options = { elmPath = 'elm', elmFormatPath = 'elm-format', elmTestPath = 'elm-test', elmAnalyseTrigger = 'change', }, }, docs = { package_json = 'https://raw.githubusercontent.com/elm-tooling/elm-language-client-vscode/master/package.json', description = [[ https://github.com/elm-tooling/elm-language-server#installation If you don't want to use Nvim to install it, then you can use: ```sh npm install -g elm elm-test elm-format @elm-tooling/elm-language-server ``` ]], default_config = { root_dir = [[root_pattern("elm.json")]], }, }, } -- vim:et ts=2 sw=2