ts-fmt-lint.lua 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. -- Example configuations here: https://github.com/mattn/efm-langserver
  2. -- 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.
  3. local M = {}
  4. M.setup = function()
  5. local tsserver_args = {}
  6. if O.lang.tsserver.linter == "eslint" or O.lang.tsserver.linter == "eslint_d" then
  7. local eslint = {
  8. lintCommand = O.lang.tsserver.linter .. " -f visualstudio --stdin --stdin-filename ${INPUT}",
  9. lintStdin = true,
  10. lintFormats = {
  11. "%f(%l,%c): %tarning %m",
  12. "%f(%l,%c): %rror %m",
  13. },
  14. lintSource = O.lang.tsserver.linter,
  15. lintIgnoreExitCode = true,
  16. formatCommand = O.lang.tsserver.linter .. " --fix-to-stdout --stdin --stdin-filename=${INPUT}",
  17. formatStdin = true,
  18. }
  19. table.insert(tsserver_args, eslint)
  20. end
  21. require("lspconfig").efm.setup {
  22. -- init_options = {initializationOptions},
  23. cmd = { DATA_PATH .. "/lspinstall/efm/efm-langserver" },
  24. init_options = { documentFormatting = true, codeAction = false },
  25. root_dir = require("lspconfig").util.root_pattern(".git/", "package.json"),
  26. filetypes = {
  27. "vue",
  28. "javascript",
  29. "javascriptreact",
  30. "typescript",
  31. "typescriptreact",
  32. "javascript.jsx",
  33. "typescript.tsx",
  34. },
  35. settings = {
  36. rootMarkers = { ".git/", "package.json" },
  37. languages = {
  38. vue = tsserver_args,
  39. javascript = tsserver_args,
  40. javascriptreact = tsserver_args,
  41. ["javascript.jsx"] = tsserver_args,
  42. typescript = tsserver_args,
  43. ["typescript.tsx"] = tsserver_args,
  44. typescriptreact = tsserver_args,
  45. },
  46. },
  47. }
  48. end
  49. return M