diff options
| author | Rishikesh Vaishnav <rishhvaishnav@gmail.com> | 2021-06-13 12:21:12 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-13 12:21:12 -0700 |
| commit | eacaccb7d5b4e65c45f3a23142abe2aca647327e (patch) | |
| tree | 67e17754303d1af88c89091640dca747d802a563 | |
| parent | Update .mergify.yml (diff) | |
| download | nvim-lspconfig-eacaccb7d5b4e65c45f3a23142abe2aca647327e.tar nvim-lspconfig-eacaccb7d5b4e65c45f3a23142abe2aca647327e.tar.gz nvim-lspconfig-eacaccb7d5b4e65c45f3a23142abe2aca647327e.tar.bz2 nvim-lspconfig-eacaccb7d5b4e65c45f3a23142abe2aca647327e.tar.lz nvim-lspconfig-eacaccb7d5b4e65c45f3a23142abe2aca647327e.tar.xz nvim-lspconfig-eacaccb7d5b4e65c45f3a23142abe2aca647327e.tar.zst nvim-lspconfig-eacaccb7d5b4e65c45f3a23142abe2aca647327e.zip | |
feat(lean): add support for Lean 4 language server
| -rw-r--r-- | lua/lspconfig/lean3ls.lua | 35 | ||||
| -rw-r--r-- | lua/lspconfig/leanls.lua | 21 |
2 files changed, 50 insertions, 6 deletions
diff --git a/lua/lspconfig/lean3ls.lua b/lua/lspconfig/lean3ls.lua new file mode 100644 index 00000000..9f03cf2a --- /dev/null +++ b/lua/lspconfig/lean3ls.lua @@ -0,0 +1,35 @@ +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' + +configs.lean3ls = { + default_config = { + cmd = {"lean-language-server", "--stdio"}; + filetypes = {"lean3"}; + root_dir = function(fname) + return util.root_pattern("leanpkg.toml")(fname) or util.find_git_ancestor(fname) or util.path.dirname(fname) + end; + on_new_config = function(config, root) + if not util.path.is_file(root .. "/leanpkg.toml") then return end + if not config.cmd_cwd then + config.cmd_cwd = root + end + end; + }; + docs = { + description = [[ +https://github.com/leanprover/lean-client-js/tree/master/lean-language-server + +Lean installation instructions can be found +[here](https://leanprover-community.github.io/get_started.html#regular-install). + +Once Lean is installed, you can install the Lean 3 language server by running +```sh +npm install -g lean-language-server +``` + ]]; + default_config = { + root_dir = [[root_pattern("leanpkg.toml") or root_pattern(".git") or path.dirname]]; + }; + }; +} +-- vim:et ts=2 sw=2 diff --git a/lua/lspconfig/leanls.lua b/lua/lspconfig/leanls.lua index f74e4227..aa5153ca 100644 --- a/lua/lspconfig/leanls.lua +++ b/lua/lspconfig/leanls.lua @@ -3,21 +3,30 @@ local util = require 'lspconfig/util' configs.leanls = { default_config = { - cmd = {"lean-language-server", "--stdio"}; + cmd = {"lean", "--server"}; filetypes = {"lean"}; root_dir = function(fname) - return util.find_git_ancestor(fname) or vim.loop.os_homedir() + return util.root_pattern("leanpkg.toml")(fname) or util.find_git_ancestor(fname) or util.path.dirname(fname) + end; + on_new_config = function(config, root) + if not util.path.is_file(root .. "/leanpkg.toml") then return end + if not config.cmd_cwd then + config.cmd_cwd = root + end end; }; docs = { - package_json = "https://raw.githubusercontent.com/leanprover/vscode-lean/master/package.json"; description = [[ -https://github.com/leanprover/lean-client-js/tree/master/lean-language-server +https://github.com/leanprover/lean4 + +Lean installation instructions can be found +[here](https://leanprover-community.github.io/get_started.html#regular-install). -Lean language server. +The Lean 4 language server is built-in with a Lean 4 install +(and can be manually run with, e.g., `lean --server`). ]]; default_config = { - root_dir = [[root_pattern(".git") or os_homedir]]; + root_dir = [[root_pattern("leanpkg.toml") or root_pattern(".git") or path.dirname]]; }; }; } |
