summaryrefslogtreecommitdiff
path: root/ar/.config/NvChad/lua/custom/configs/null-ls.lua
blob: d703736882c5b7f9a670af505a1c73dc90f5e646 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
local null_ls = require "null-ls"
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})

local b = null_ls.builtins

local sources = {
  -- cpp
  b.formatting.clang_format,

  -- Lua
  b.formatting.stylua,

  -- python
  b.code_actions.refactoring,
  b.diagnostics.mypy,
  b.diagnostics.ruff,
  b.diagnostics.vulture,
  b.formatting.black,
  -- b.formatting.pyflyby,
  -- b.formatting.reorder_python_imports,

  -- webdev stuff
  b.formatting.deno_fmt, -- choosed deno for ts/js files cuz its very fast!
  b.formatting.prettier.with { filetypes = { "html", "markdown", "css" } }, -- so prettier works only on these filetypes
}

null_ls.setup {
  debug = true,
  sources = sources,
  on_attach = function(client, bufnr)
    if client.supports_method "textDocument/formatting" then
      vim.api.nvim_clear_autocmds {
        group = augroup,
        buffer = bufnr,
      }
      vim.api.nvim_create_autocmd("BufWritePre", {
        group = augroup,
        buffer = bufnr,
        callback = function()
          vim.lsp.buf.format { bufnr = bufnr }
        end,
      })
    end
  end,
}