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 = false, outline = false, 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