86 lines
2.1 KiB
Lua
86 lines
2.1 KiB
Lua
local util = require('lspconfig').util
|
|
local config = require('cosmic.config')
|
|
local formatters = {}
|
|
|
|
formatters.stylua = {
|
|
formatCommand = 'stylua -s --quote-style AutoPreferSingle --indent-type Spaces --indent-width 2 -',
|
|
formatStdin = true,
|
|
}
|
|
|
|
formatters.eslint = {
|
|
lintCommand = 'eslint_d -f unix --stdin --stdin-filename ${INPUT}',
|
|
lintStdin = true,
|
|
lintFormats = { '%f:%l:%c: %m' },
|
|
lintIgnoreExitCode = true,
|
|
formatCommand = 'eslint_d --stdin --fix-to-stdout --stdin-filename=${INPUT}',
|
|
formatStdin = true,
|
|
}
|
|
|
|
formatters.prettier = {
|
|
-- formatCommand = 'prettier --stdin-filepath ${INPUT}',
|
|
formatCommand = 'prettierd "${INPUT}"',
|
|
formatStdin = true,
|
|
}
|
|
|
|
local filetype_defaults = {
|
|
css = {},
|
|
html = {},
|
|
lua = {},
|
|
javascript = {},
|
|
javascriptreact = {},
|
|
json = {},
|
|
markdown = {},
|
|
scss = {},
|
|
typescript = {},
|
|
typescriptreact = {},
|
|
yaml = {},
|
|
}
|
|
|
|
formatters.defaults = {
|
|
eslint = {
|
|
'javascript',
|
|
'javascriptreact',
|
|
'json',
|
|
'typescriptreact',
|
|
'typescript',
|
|
},
|
|
prettier = {
|
|
'css',
|
|
'html',
|
|
'javascript',
|
|
'javascriptreact',
|
|
'json',
|
|
'typescriptreact',
|
|
'typescript',
|
|
'markdown',
|
|
'scss',
|
|
'yaml',
|
|
},
|
|
stylua = { 'lua' },
|
|
}
|
|
|
|
local languages = {}
|
|
for formatter, filetypes in pairs(formatters.defaults) do
|
|
if not vim.tbl_contains(config.lsp.servers.efm.disable_formatters, formatter) then
|
|
for _, filetype in pairs(filetypes) do
|
|
languages[filetype] = languages[filetype] or {}
|
|
table.insert(languages[filetype], formatters[formatter])
|
|
end
|
|
end
|
|
end
|
|
|
|
-- print(vim.inspect(languages))
|
|
-- print(vim.inspect(languages['javascript']['prettier']))
|
|
|
|
return {
|
|
init_options = { documentFormatting = true, codeAction = true },
|
|
root_dir = function(fname)
|
|
return util.root_pattern('.git')(fname)
|
|
or util.root_pattern('tsconfig.base.json')(fname)
|
|
or util.root_pattern('package.json')(fname)
|
|
or util.root_pattern('.eslintrc.js')(fname)
|
|
or util.root_pattern('tsconfig.json')(fname)
|
|
end,
|
|
filetypes = vim.tbl_keys(filetype_defaults),
|
|
settings = { languages = languages },
|
|
}
|