diff options
Diffstat (limited to 'lua/lang/css.lua')
-rw-r--r-- | lua/lang/css.lua | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/lua/lang/css.lua b/lua/lang/css.lua new file mode 100644 index 00000000..9a596057 --- /dev/null +++ b/lua/lang/css.lua @@ -0,0 +1,69 @@ +local M = {} + +M.config = function() + -- TODO: implement config for language + return "No config available!" +end + +M.format = function() + vim.cmd "let proj = FindRootDirectory()" + local root_dir = vim.api.nvim_get_var "proj" + + -- use the global prettier if you didn't find the local one + local prettier_instance = root_dir .. "/node_modules/.bin/prettier" + if vim.fn.executable(prettier_instance) ~= 1 then + prettier_instance = O.lang.tsserver.formatter.exe + end + + local ft = vim.bo.filetype + O.formatters.filetype[ft] = { + function() + local args = { "--stdin-filepath", vim.fn.fnameescape(vim.api.nvim_buf_get_name(0)) } + -- TODO: O.lang.[ft].formatter.args + local extend_args = O.lang.css.formatter.args + + for i = 1, #extend_args do + table.insert(args, extend_args[i]) + end + + return { + exe = prettier_instance, + args = args, + stdin = true, + } + end, + } + require("formatter.config").set_defaults { + logging = false, + filetype = O.formatters.filetype, + } +end + +M.lint = function() + -- TODO: implement linters (if applicable) + return "No linters configured!" +end + +M.lsp = function() + if not require("lv-utils").check_lsp_client_active "cssls" then + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities.textDocument.completion.completionItem.snippetSupport = true + -- npm install -g vscode-css-languageserver-bin + require("lspconfig").cssls.setup { + cmd = { + "node", + DATA_PATH .. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js", + "--stdio", + }, + on_attach = require("lsp").common_on_attach, + capabilities = capabilities, + } + end +end + +M.dap = function() + -- TODO: implement dap + return "No DAP configured!" +end + +return M |