diff options
| author | GenesisTMS <nemi@skaut.cz> | 2020-02-15 19:28:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-15 19:28:24 +0100 |
| commit | 639f1b9dda75fbd21ee2d324ff4e239647e82bad (patch) | |
| tree | 886e4e181fad526c03d581d18edc4f30e6ecf6a7 /lua/nvim_lsp | |
| parent | Update (diff) | |
| parent | dartls: auto detect Dart SDK root path (diff) | |
| download | nvim-lspconfig-639f1b9dda75fbd21ee2d324ff4e239647e82bad.tar nvim-lspconfig-639f1b9dda75fbd21ee2d324ff4e239647e82bad.tar.gz nvim-lspconfig-639f1b9dda75fbd21ee2d324ff4e239647e82bad.tar.bz2 nvim-lspconfig-639f1b9dda75fbd21ee2d324ff4e239647e82bad.tar.lz nvim-lspconfig-639f1b9dda75fbd21ee2d324ff4e239647e82bad.tar.xz nvim-lspconfig-639f1b9dda75fbd21ee2d324ff4e239647e82bad.tar.zst nvim-lspconfig-639f1b9dda75fbd21ee2d324ff4e239647e82bad.zip | |
Merge pull request #1 from h-michael/dartls
dartls: auto detect Dart SDK root path
Diffstat (limited to 'lua/nvim_lsp')
| -rw-r--r-- | lua/nvim_lsp/dartls.lua | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/lua/nvim_lsp/dartls.lua b/lua/nvim_lsp/dartls.lua index 663c47a1..b9bdcabf 100644 --- a/lua/nvim_lsp/dartls.lua +++ b/lua/nvim_lsp/dartls.lua @@ -4,11 +4,39 @@ local lsp = vim.lsp local server_name = "dartls" local bin_name = "dart" -local dart_sdk_path = os.getenv("DART_SDK") + +local dart_sdk_root_path = function() + if vim.fn["executable"]("dart") == 1 then + return vim.fn["resolve"](vim.fn["exepath"]("dart")) + elseif vim.fn["executable"]("flutter") == 1 then + local flutter_path = vim.fn["resolve"](vim.fn["exepath"]("flutter")) + local flutter_bin = vim.fn["fnamemodify"](flutter_path, ":h") + local dart_sdk_root_path = flutter_bin.."/cache/dart-sdk/bin/dart" + if vim.fn["executable"](dart_sdk_root_path) == 1 then + return dart_sdk_root_path + end + end + error("[LSP] Could not find Dart SDK root path") +end + +local analysis_server_snapshot_path = function() + local dart_sdk_root_path = vim.fn["fnamemodify"](dart_sdk_root_path(), ":h") + local snapshot = dart_sdk_root_path.."/snapshots/analysis_server.dart.snapshot" + + if vim.fn["has"]("win32") == 1 or vim.fn["has"]("win64") == 1 then + snapshot = snapshot:gsub("/", "\\") + end + + if vim.fn["filereadable"](snapshot) == 1 then + return snapshot + else + error("[LSP] Could not find analysis server snapshot") + end +end configs[server_name] = { default_config = { - cmd = {bin_name, dart_sdk_path .. "/bin/snapshots/analysis_server.dart.snapshot", "--lsp"}; + cmd = {bin_name, analysis_server_snapshot_path(), "--lsp"}; filetypes = {"dart"}; root_dir = nvim_lsp.util.root_pattern("pubspec.yaml"); log_level = lsp.protocol.MessageType.Warning; @@ -22,16 +50,15 @@ configs[server_name] = { settings = {}; }; docs = { - package_json = "https://raw.githubusercontent.com/Dart-Code/Dart-Code/master/package.json"; + vscode = "Dart-Code.dart-code"; description = [[ https://github.com/dart-lang/sdk/tree/master/pkg/analysis_server/tool/lsp_spec -Language server for Dart. +Language server for dart. ]]; default_config = { root_dir = [[root_pattern("pubspec.yaml")]]; }; }; }; - -- vim:et ts=2 sw=2 |
