diff options
Diffstat (limited to 'lua/lspconfig/server_configurations/dartls.lua')
| -rw-r--r-- | lua/lspconfig/server_configurations/dartls.lua | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/lua/lspconfig/server_configurations/dartls.lua b/lua/lspconfig/server_configurations/dartls.lua new file mode 100644 index 00000000..3e683ac2 --- /dev/null +++ b/lua/lspconfig/server_configurations/dartls.lua @@ -0,0 +1,61 @@ +local util = require 'lspconfig/util' + +local bin_name = 'dart' + +local find_dart_sdk_root_path = function() + if os.getenv 'FLUTTER_SDK' then + local flutter_path = os.getenv 'FLUTTER_SDK' + return util.path.join(flutter_path, 'cache', 'dart-sdk', 'bin', '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') + return util.path.join(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 = util.path.join(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 + +return { + default_config = { + cmd = { bin_name, analysis_server_snapshot_path(), '--lsp' }, + filetypes = { 'dart' }, + root_dir = util.root_pattern 'pubspec.yaml', + init_options = { + onlyAnalyzeProjectsWithOpenFiles = true, + suggestFromUnimportedLibraries = true, + closingLabels = true, + outline = true, + flutterOutline = true, + }, + settings = { + dart = { + completeFunctionCalls = true, + showTodos = true, + }, + }, + }, + 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")]], + }, + }, +} |
