diff options
Diffstat (limited to 'lua/lspconfig/dartls.lua')
| -rw-r--r-- | lua/lspconfig/dartls.lua | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/lua/lspconfig/dartls.lua b/lua/lspconfig/dartls.lua new file mode 100644 index 00000000..1baf05d6 --- /dev/null +++ b/lua/lspconfig/dartls.lua @@ -0,0 +1,55 @@ +local util = require 'lspconfig/util' +local configs = require 'lspconfig/configs' + +local server_name = "dartls" +local bin_name = "dart" + +local find_dart_sdk_root_path = function() + if 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") + return flutter_bin.."/cache/dart-sdk/bin/dart" + elseif vim.fn["executable"]("dart") == 1 then + return vim.fn["resolve"](vim.fn["exepath"]("dart")) + else + return '' + end +end + +local analysis_server_snapshot_path = function() + local dart_sdk_root_path = vim.fn["fnamemodify"](find_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 + + return snapshot +end + +configs[server_name] = { + default_config = { + cmd = {bin_name, analysis_server_snapshot_path(), "--lsp"}; + filetypes = {"dart"}; + root_dir = util.root_pattern("pubspec.yaml"); + init_options = { + onlyAnalyzeProjectsWithOpenFiles = "false", + suggestFromUnimportedLibraries = "true", + closingLabels = "true", + outline = "true", + flutterOutline= "false" + }; + }; + docs = { + package_json = "https://raw.githubusercontent.com/Dart-Code/Dart-Code/master/package.json"; + description = [[ +https://github.com/dart-lang/sdk/tree/master/pkg/analysis_server/tool/lsp_spec + +Language server for dart. +]]; + default_config = { + root_dir = [[root_pattern("pubspec.yaml")]]; + }; + }; +}; +-- vim:et ts=2 sw=2 |
