css.lua 1.8 KB

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