aboutsummaryrefslogtreecommitdiffstats
path: root/lua/conform/formatters/prettier.lua
blob: 5b00d7b807f67814bfa167faad59bb1ab68161e2 (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
require("conform").setup({
  formatters = {
    prettier = {
      args = function(ctx)
        if vim.endswith(ctx.filename, ".ejs") then
          return { "--stdin-filepath", "$FILENAME", "--parser", "html" }
        end
        return { "--stdin-filepath", "$FILENAME" }
      end,
    },
  },
})

local util = require("conform.util")
---@type conform.FileFormatterConfig
return {
  meta = {
    url = "https://github.com/prettier/prettier",
    description = [[Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.]],
  },
  command = util.from_node_modules("prettier"),
  args = { "--stdin-filepath", "$FILENAME" },
  range_args = function(ctx)
    local start_offset, end_offset = util.get_offsets_from_range(ctx.buf, ctx.range)
    return { "$FILENAME", "--range-start=" .. start_offset, "--range-end=" .. end_offset }
  end,
  cwd = util.root_file({
    -- https://prettier.io/docs/en/configuration.html
    ".prettierrc",
    ".prettierrc.json",
    ".prettierrc.yml",
    ".prettierrc.yaml",
    ".prettierrc.json5",
    ".prettierrc.js",
    ".prettierrc.cjs",
    ".prettierrc.toml",
    "prettier.config.js",
    "prettier.config.cjs",
    "package.json",
  }),
}