mirror of
https://github.com/LunarVim/LunarVim.git
synced 2024-09-21 11:05:08 +02:00
66 lines
2.2 KiB
Lua
66 lines
2.2 KiB
Lua
-- Example configuations here: https://github.com/mattn/efm-langserver
|
|
-- You can look for project scope Prettier and Eslint with e.g. vim.fn.glob("node_modules/.bin/prettier") etc. If it is not found revert to global Prettier where needed.
|
|
local M = {}
|
|
|
|
M.setup = function()
|
|
local tsserver_args = {}
|
|
|
|
local prettier = {
|
|
formatCommand = "prettier --stdin-filepath ${INPUT}",
|
|
formatStdin = true
|
|
}
|
|
|
|
if vim.fn.glob("node_modules/.bin/prettier") then
|
|
prettier = {
|
|
formatCommand = "./node_modules/.bin/prettier --stdin-filepath ${INPUT}",
|
|
formatStdin = true
|
|
}
|
|
end
|
|
|
|
-- TODO global eslint?
|
|
|
|
local eslint = {
|
|
lintCommand = "./node_modules/.bin/eslint -f unix --stdin --stdin-filename ${INPUT}",
|
|
lintIgnoreExitCode = true,
|
|
lintStdin = true,
|
|
lintFormats = {"%f:%l:%c: %m"},
|
|
-- formatCommand = "./node_modules/.bin/eslint -f unix --fix --stdin-filename ${INPUT}", -- TODO check if eslint is the formatter then add this
|
|
formatStdin = true
|
|
}
|
|
|
|
if O.lang.tsserver.formatter == 'prettier' then
|
|
table.insert(tsserver_args, prettier)
|
|
end
|
|
|
|
if O.lang.tsserver.linter == 'eslint' then
|
|
table.insert(tsserver_args, eslint)
|
|
end
|
|
|
|
require"lspconfig".efm.setup {
|
|
-- init_options = {initializationOptions},
|
|
cmd = {DATA_PATH .. "/lspinstall/efm/efm-langserver"},
|
|
init_options = {documentFormatting = true, codeAction = false},
|
|
filetypes = {
|
|
"javascriptreact", "javascript", "typescript", "typescriptreact",
|
|
"html", "css", "yaml", "vue"
|
|
},
|
|
settings = {
|
|
rootMarkers = {".git/", "package.json"},
|
|
languages = {
|
|
javascript = tsserver_args,
|
|
javascriptreact = tsserver_args,
|
|
typescript = tsserver_args,
|
|
typescriptreact = tsserver_args,
|
|
html = {prettier},
|
|
css = {prettier},
|
|
json = {prettier},
|
|
yaml = {prettier}
|
|
-- javascriptreact = {prettier, eslint},
|
|
-- javascript = {prettier, eslint},
|
|
-- markdown = {markdownPandocFormat, markdownlint},
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
return M
|