Public Access
dart lsp
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
-- This function returns project local dart, or fallsback to global
|
||||||
|
function M.executable(path)
|
||||||
|
local directory = vim.fn.isdirectory(path) == 1 and path or vim.fs.dirname(path)
|
||||||
|
local root = vim.fs.root(directory, { "pubspec.yaml" })
|
||||||
|
|
||||||
|
if root then
|
||||||
|
local fvm_dart = root .. "/.fvm/flutter_sdk/bin/dart"
|
||||||
|
if vim.fn.executable(fvm_dart) == 1 then
|
||||||
|
return fvm_dart
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return "dart"
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@@ -5,8 +5,11 @@ vim.pack.add({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
local dart = require("romanzy.custom.dart")
|
||||||
|
|
||||||
require("conform").setup({
|
require("conform").setup({
|
||||||
formatters_by_ft = {
|
formatters_by_ft = {
|
||||||
|
dart = { "dart_format" },
|
||||||
javascript = { "prettier" },
|
javascript = { "prettier" },
|
||||||
javascriptreact = { "prettier" },
|
javascriptreact = { "prettier" },
|
||||||
typescript = { "prettier" },
|
typescript = { "prettier" },
|
||||||
@@ -16,6 +19,13 @@ require("conform").setup({
|
|||||||
cpp = { filter = function() return false end },
|
cpp = { filter = function() return false end },
|
||||||
h = { filter = function() return false end }
|
h = { filter = function() return false end }
|
||||||
},
|
},
|
||||||
|
formatters = {
|
||||||
|
dart_format = {
|
||||||
|
command = function(_, ctx)
|
||||||
|
return dart.executable(ctx.filename)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
format_on_save = {
|
format_on_save = {
|
||||||
lsp_format = "fallback",
|
lsp_format = "fallback",
|
||||||
timeout_ms = 2000,
|
timeout_ms = 2000,
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ end
|
|||||||
configure_diagnostics()
|
configure_diagnostics()
|
||||||
|
|
||||||
local capabilities = require("mini.completion").get_lsp_capabilities()
|
local capabilities = require("mini.completion").get_lsp_capabilities()
|
||||||
|
local dart = require("romanzy.custom.dart")
|
||||||
local managed_servers = {
|
local managed_servers = {
|
||||||
"bashls",
|
"bashls",
|
||||||
"clangd",
|
"clangd",
|
||||||
@@ -87,6 +88,18 @@ local servers = {
|
|||||||
tailwindcss = {},
|
tailwindcss = {},
|
||||||
eslint = {},
|
eslint = {},
|
||||||
tinymist = {},
|
tinymist = {},
|
||||||
|
dartls = {
|
||||||
|
cmd = function(dispatchers, config)
|
||||||
|
return vim.lsp.rpc.start({
|
||||||
|
dart.executable(config.root_dir),
|
||||||
|
"language-server",
|
||||||
|
"--protocol=lsp",
|
||||||
|
}, dispatchers, {
|
||||||
|
cwd = config.root_dir,
|
||||||
|
detached = config.detached,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for server_name, config in pairs(servers) do
|
for server_name, config in pairs(servers) do
|
||||||
@@ -101,6 +114,8 @@ mason_lspconfig.setup({
|
|||||||
automatic_enable = managed_servers,
|
automatic_enable = managed_servers,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
vim.lsp.enable("dartls")
|
||||||
|
|
||||||
local mason_registry = require("mason-registry")
|
local mason_registry = require("mason-registry")
|
||||||
mason_registry.refresh(vim.schedule_wrap(function()
|
mason_registry.refresh(vim.schedule_wrap(function()
|
||||||
for _, tool_name in ipairs(managed_tools) do
|
for _, tool_name in ipairs(managed_tools) do
|
||||||
|
|||||||
Reference in New Issue
Block a user