c.lua 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. local M = {}
  2. M.config = function()
  3. -- TODO: implement config for language
  4. return "No config available!"
  5. end
  6. M.format = function()
  7. O.formatters.filetype["c"] = {
  8. function()
  9. return {
  10. exe = O.lang.clang.formatter.exe,
  11. args = O.lang.clang.formatter.args,
  12. stdin = not (O.lang.clang.formatter.stdin ~= nil),
  13. }
  14. end,
  15. }
  16. O.formatters.filetype["cpp"] = O.formatters.filetype["c"]
  17. require("formatter.config").set_defaults {
  18. logging = false,
  19. filetype = O.formatters.filetype,
  20. }
  21. end
  22. M.lint = function()
  23. -- TODO: implement linters (if applicable)
  24. return "No linters configured!"
  25. end
  26. M.lsp = function()
  27. if require("lv-utils").check_lsp_client_active "clangd" then
  28. return
  29. end
  30. local clangd_flags = { "--background-index" }
  31. if O.lang.clang.cross_file_rename then
  32. table.insert(clangd_flags, "--cross-file-rename")
  33. end
  34. table.insert(clangd_flags, "--header-insertion=" .. O.lang.clang.header_insertion)
  35. require("lspconfig").clangd.setup {
  36. cmd = { DATA_PATH .. "/lspinstall/cpp/clangd/bin/clangd", unpack(clangd_flags) },
  37. on_attach = require("lsp").common_on_attach,
  38. handlers = {
  39. ["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
  40. virtual_text = O.lang.clang.diagnostics.virtual_text,
  41. signs = O.lang.clang.diagnostics.signs,
  42. underline = O.lang.clang.diagnostics.underline,
  43. update_in_insert = true,
  44. }),
  45. },
  46. }
  47. end
  48. M.dap = function()
  49. -- TODO: implement dap
  50. return "No DAP configured!"
  51. end
  52. return M