aboutsummaryrefslogtreecommitdiffstats
path: root/lua/conform/init.lua
AgeCommit message (Collapse)Author
2024-04-23fix: refactor deprecated methods in neovim 0.10Steven Arcangeli
2024-03-15feat: add formatter config option to change name of temporary file (#332)Steven Arcangeli
2024-03-01lint: remove unused importSteven Arcangeli
2024-03-01cleanup: remove backwards compatability shimSteven Arcangeli
2024-01-15feat: Add dry_run option and report if buffer was/would be changed by ↵Bronson Jordan
formatters (#273) * feat: add dry_run option and pass return values for if buffer would be modified * fix: implement dry_run for blocking calls to lsp formatter * refactor: change `changed` variable to `did_edit` * docs: Update README * fix: address PR comments * fix: small cleanups --------- Co-authored-by: Steven Arcangeli <stevearc@stevearc.com>
2024-01-08feat(formatexpr): don't require LSP range formatting if operating on whole ↵Nuno David
file (#272) solves: https://github.com/stevearc/conform.nvim/issues/271
2024-01-06fix: copy input parameters for will_fallback_lspSteven Arcangeli
2024-01-06fix: pass explicit bufnr to avoid race conditions (#260)Steven Arcangeli
2023-12-26fix(injected): handle inline injections (#251)Steven Arcangeli
2023-12-07fix(formatexpr): does not fallback to the built-in formatexpr (#238)Jongwook Choi
This makes the behavior of formatexpr more consistent with `vim.lsp.formatexpr`; do not run vim's builtin formatter. Problem: When conform's formatexpr is used and (range or buffer) but conform can't do formatting and there is no LSP formatter with the formatting capabilities, it will fall back to the (wrong) built-in formatting, which might result in simply concatenating all the words. This is a breaking change, reverting the behavior introduced in #55.
2023-12-06refactor!: formatter config functions take self as first argument (#233)Steven Arcangeli
This is a breaking API change, but there is a shim in place that will keep existing functions working, just with a warning notification. Most people should not encounter this at all. For anyone overriding a formatter config value with a function that takes `(ctx)` as the parameter, it will need to be updated to take `(self, ctx)`.
2023-11-06fix: nonzero exit code on :wq (#176)Steven Arcangeli
2023-11-04feat: allow formatters_by_ft to be a function (#174)Steven Arcangeli
2023-10-26fix(formatexpr): use default formatexpr if no formatters or LSP clients (#55)Steven Arcangeli
2023-10-15feat!: merge configs in conform.formatters with defaults (#140)Steven Arcangeli
This breaking change should make it significantly easier to modify formatters. While I expect 99% of configs to be backwards-compatible, this can still potentially cause problems. If you: * define a formatter in the `formatters` option * that has the same name as a built-in formatter * and omits a property from the original formatter (e.g. leaves out `range_args` or `cwd`) Then you may encounter breaking behavior from this commit, because now your config definition will be merged with the built-in definition, and so will inherit those omitted properties. This config merging behavior can be opted-out of by adding `inherit = false` to your formatter config.
2023-10-10fix: prevent format-after-save autocmd from running on invalid buffersSteven Arcangeli
2023-10-10fix: prevent format-on-save autocmd from running on invalid buffers (#128)Chris Bell
2023-10-08feat: errors do not stop formatting earlySteven Arcangeli
2023-10-05feat: expose configuration options for injected formatter (#118)Steven Arcangeli
2023-10-02fix: format on save autocmds ignore nonstandard buffersSteven Arcangeli
2023-10-02fix: injected formatter doesn't have interruption errorsSteven Arcangeli
2023-10-02fix: error handling for injected formatterSteven Arcangeli
2023-09-29fix: alternations follow notification rulesSteven Arcangeli
2023-09-29feat: format injected languages (#83)Steven Arcangeli
2023-09-29fix: format_after_save autocmd blocks nvim exit until completeSteven Arcangeli
This fixes one the main issue with a BufWritePost format autocmd: that if the user does `:wq` vim will exit before the formatting changes are applied. Now we will block in VimLeavePre until the formatter completes (or a timeout is reached).
2023-09-29fix: only show "no formatters" warning if formatters passed in explicitly (#85)Steven Arcangeli
2023-09-21refactor: rename ruff -> ruff_fixSteven Arcangeli
2023-09-19fix: range formatting for LSP formatters (#63)Steven Arcangeli
2023-09-18doc: remove irrelevant note about '*' filetypeSteven Arcangeli
2023-09-17feat: make lsp_fallback behavior more intuitive (#59)Steven Arcangeli
When lsp_fallback = true AND the only formatters for the buffer are from the "*" or "_" filetype, format with LSP instead of the "*"/"_" formatters.
2023-09-15feat: '_' filetype to define fallback formattersSteven Arcangeli
2023-09-15feat: provide a formatexpr (#55)Steven Arcangeli
2023-09-15feat: allow running commands in a shell (#49)Steven Arcangeli
2023-09-15feat: format_on_save functions can return a callback as the second valueSteven Arcangeli
2023-09-14doc: add some recipes to the documentationSteven Arcangeli
2023-09-13doc: document the format options that are passed through to LSP formattingSteven Arcangeli
2023-09-10feat: format_on_save and format_after_save can be functionsSteven Arcangeli
2023-09-08feat: format() can always fall back to LSP formattingSteven Arcangeli
2023-09-08feat: syntax for using first available formatterSteven Arcangeli
Alternations are now supported. You can specify a sub-list in place of a formatter name and conform will use the first formatter in that list that is available. For example, this will use either prettierd or prettier (whichever is available), and then always trim whitespace afterwards: conform.format(formatters = { { "prettierd", "prettier" }, "trim_whitespace" }) This syntax is available both in the formatters_by_ft config option and in the `formatters` argument of the `format` method.
2023-09-07refactor!: remove run_all_formatters config optionSteven Arcangeli
run_all_formatters is now the default. To only run the first formatter (the previous behavior), see the next commit
2023-09-07refactor: make get_formatter_info a public methodSteven Arcangeli
2023-08-31fix: callback should always be calledSteven Arcangeli
2023-08-31feat: format() takes an optional callback (#21)Steven Arcangeli
* refactor: replicate lsp.buf.format call * feat: format() takes an optional callback * fix: improper logging * fix: callback returns error if buffer is no longer valid * fix: provide more detailed error message to callback * fix: properly detect task interruption * cleanup: remove unnecessary error code translation * fix: lsp formatting for Neovim 0.9 * doc: add example of async formatting on save * fix: async LSP formatter discards changes if buffer was modified * fix: error code comparison * fix: use the same LSP client filtering logic everywhere * fix: add buffer validity guard checks * fix: add buffer validity guard to LSP formatter * refactor: change the default log level to WARN
2023-08-30feat: apply changes as text edits using LSP utils (#18)Steven Arcangeli
* feat: apply changes as text edits using LSP utils This means we can leverage all of the work that was done in the LSP client to preserve marks, cursor position, etc * log: add trace logging to debug performance * feat: use the same diff -> TextEdit technique for bad LSP servers Some LSP servers simply return a single TextEdit that replaces the whole buffer. This is bad for extmarks, cursor, and if the buffer is open in multiple windows the non-active window will jump to the top. We can detect that situation and apply the same vim.diff logic to convert it into more granular TextEdits.
2023-08-29feat: notify when formatter errors, and add notify_on_error config option (#16)Steven Arcangeli
2023-08-29feat: formatter config function is passed the buffer number (#9)Steven Arcangeli
2023-08-29feat: add support for environment variables (#8)Steven Arcangeli
2023-08-28feat: ConformInfo command for debugging formatter statusSteven Arcangeli
2023-08-28feat: range formattingSteven Arcangeli
Should work the same as vim.lsp.buf.format(). Additionally, range formatting is supported for *any* formatter. If the formatter doesn't have native support for ranges, conform will do its best to only apply the diffs that affect that range.
2023-08-28fix: stable ordering when specifying multiple formattersSteven Arcangeli