css.lua 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. local M = {}
  2. M.config = function()
  3. O.lang.css = {
  4. virtual_text = true,
  5. formatter = {
  6. exe = "prettier",
  7. args = {},
  8. },
  9. lsp = {
  10. path = DATA_PATH .. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js",
  11. },
  12. }
  13. end
  14. M.format = function()
  15. vim.cmd "let proj = FindRootDirectory()"
  16. local root_dir = vim.api.nvim_get_var "proj"
  17. -- use the global prettier if you didn't find the local one
  18. local prettier_instance = root_dir .. "/node_modules/.bin/prettier"
  19. if vim.fn.executable(prettier_instance) ~= 1 then
  20. prettier_instance = O.lang.tsserver.formatter.exe
  21. end
  22. local ft = vim.bo.filetype
  23. O.formatters.filetype[ft] = {
  24. function()
  25. local args = { "--stdin-filepath", vim.fn.fnameescape(vim.api.nvim_buf_get_name(0)) }
  26. -- TODO: O.lang.[ft].formatter.args
  27. local extend_args = O.lang.css.formatter.args
  28. for i = 1, #extend_args do
  29. table.insert(args, extend_args[i])
  30. end
  31. return {
  32. exe = prettier_instance,
  33. args = args,
  34. stdin = true,
  35. }
  36. end,
  37. }
  38. require("formatter.config").set_defaults {
  39. logging = false,
  40. filetype = O.formatters.filetype,
  41. }
  42. end
  43. M.lint = function()
  44. -- TODO: implement linters (if applicable)
  45. return "No linters configured!"
  46. end
  47. M.lsp = function()
  48. if not require("lv-utils").check_lsp_client_active "cssls" then
  49. local capabilities = vim.lsp.protocol.make_client_capabilities()
  50. capabilities.textDocument.completion.completionItem.snippetSupport = true
  51. -- npm install -g vscode-css-languageserver-bin
  52. require("lspconfig").cssls.setup {
  53. cmd = {
  54. "node",
  55. O.lang.css.lsp.path,
  56. "--stdio",
  57. },
  58. on_attach = require("lsp").common_on_attach,
  59. capabilities = capabilities,
  60. }
  61. end
  62. end
  63. M.dap = function()
  64. -- TODO: implement dap
  65. return "No DAP configured!"
  66. end
  67. return M