summaryrefslogtreecommitdiff
path: root/start/lspconfig-0.1.3/lua/lspconfig/server_configurations/dartls.lua
diff options
context:
space:
mode:
Diffstat (limited to 'start/lspconfig-0.1.3/lua/lspconfig/server_configurations/dartls.lua')
-rw-r--r--start/lspconfig-0.1.3/lua/lspconfig/server_configurations/dartls.lua60
1 files changed, 60 insertions, 0 deletions
diff --git a/start/lspconfig-0.1.3/lua/lspconfig/server_configurations/dartls.lua b/start/lspconfig-0.1.3/lua/lspconfig/server_configurations/dartls.lua
new file mode 100644
index 0000000..eecb0b7
--- /dev/null
+++ b/start/lspconfig-0.1.3/lua/lspconfig/server_configurations/dartls.lua
@@ -0,0 +1,60 @@
+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 = {
+ 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")]],
+ },
+ },
+}