aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/lspconfig/lean3ls.lua35
-rw-r--r--lua/lspconfig/leanls.lua21
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]];
};
};
}