From 0b3d25969e2da2f5de90cc02ccd6446aa68dd895 Mon Sep 17 00:00:00 2001 From: Steven Arcangeli Date: Sat, 13 Jul 2024 14:28:18 -0700 Subject: feat: format parameter to only run the first available formatter --- lua/conform/formatters/injected.lua | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'lua/conform/formatters/injected.lua') diff --git a/lua/conform/formatters/injected.lua b/lua/conform/formatters/injected.lua index 4dbf1eb..6cfd387 100644 --- a/lua/conform/formatters/injected.lua +++ b/lua/conform/formatters/injected.lua @@ -284,13 +284,21 @@ return { ---@type string[] local formatter_names if type(ft_formatters) == "function" then - formatter_names = ft_formatters(ctx.buf) - else - local formatters = require("conform").resolve_formatters(ft_formatters, ctx.buf, false) - formatter_names = vim.tbl_map(function(f) - return f.name - end, formatters) + ft_formatters = ft_formatters(ctx.buf) end + local stop_after_first = ft_formatters.stop_after_first + if stop_after_first == nil then + stop_after_first = conform.default_format_opts.stop_after_first + end + if stop_after_first == nil then + stop_after_first = false + end + + local formatters = + conform.resolve_formatters(ft_formatters, ctx.buf, false, stop_after_first) + formatter_names = vim.tbl_map(function(f) + return f.name + end, formatters) local idx = num_format log.debug("Injected format %s:%d:%d: %s", lang, start_lnum, end_lnum, formatter_names) log.trace("Injected format lines %s", input_lines) -- cgit v1.2.3-70-g09d2 From 54ea60d1591486e7e56183addf1f45b03244386d Mon Sep 17 00:00:00 2001 From: Steven Arcangeli Date: Mon, 15 Jul 2024 09:32:56 -0700 Subject: cleanup!: drop support for nvim 0.8 --- README.md | 4 ++-- doc/conform.txt | 2 +- lua/conform/formatters/dcm_format.lua | 2 +- lua/conform/formatters/injected.lua | 6 ------ lua/conform/init.lua | 4 ++++ tests/injected_spec.lua | 5 ----- 6 files changed, 8 insertions(+), 15 deletions(-) (limited to 'lua/conform/formatters/injected.lua') diff --git a/README.md b/README.md index 3c5e826..e7860de 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Lightweight yet powerful formatter plugin for Neovim ## Requirements -- Neovim 0.8+ +- Neovim 0.9+ (for older versions, use a [nvim-0.x branch](https://github.com/stevearc/conform.nvim/branches)) ## Features @@ -216,7 +216,7 @@ You can view this list in vim with `:help conform-formatters` - [darker](https://github.com/akaihola/darker) - Run black only on changed lines. - [dart_format](https://dart.dev/tools/dart-format) - Replace the whitespace in your program with formatting that follows Dart guidelines. - [dcm_fix](https://dcm.dev/docs/cli/formatting/fix/) - Fixes issues produced by dcm analyze, dcm check-unused-code or dcm check-dependencies commands. -- [dcm_format](https://dcm.dev/docs/cli/formatting/format/) - Formats *.dart files. +- [dcm_format](https://dcm.dev/docs/cli/formatting/format/) - Formats .dart files. - [deno_fmt](https://deno.land/manual/tools/formatter) - Use [Deno](https://deno.land/) to format TypeScript, JavaScript/JSON and markdown. - [dfmt](https://github.com/dlang-community/dfmt) - Formatter for D source code. - [djlint](https://github.com/Riverside-Healthcare/djLint) - ✨ HTML Template Linter and Formatter. Django - Jinja - Nunjucks - Handlebars - GoLang. diff --git a/doc/conform.txt b/doc/conform.txt index d514c62..5af52f8 100644 --- a/doc/conform.txt +++ b/doc/conform.txt @@ -301,7 +301,7 @@ FORMATTERS *conform-formatter follows Dart guidelines. `dcm_fix` - Fixes issues produced by dcm analyze, dcm check-unused-code or dcm check-dependencies commands. -`dcm_format` - Formats *.dart files. +`dcm_format` - Formats .dart files. `deno_fmt` - Use [Deno](https://deno.land/) to format TypeScript, JavaScript/JSON and markdown. `dfmt` - Formatter for D source code. diff --git a/lua/conform/formatters/dcm_format.lua b/lua/conform/formatters/dcm_format.lua index f2af0ac..04adf67 100644 --- a/lua/conform/formatters/dcm_format.lua +++ b/lua/conform/formatters/dcm_format.lua @@ -2,7 +2,7 @@ return { meta = { url = "https://dcm.dev/docs/cli/formatting/format/", - description = "Formats *.dart files.", + description = "Formats .dart files.", }, command = "dcm", args = { "format", "$FILENAME" }, diff --git a/lua/conform/formatters/injected.lua b/lua/conform/formatters/injected.lua index 6cfd387..bd3313b 100644 --- a/lua/conform/formatters/injected.lua +++ b/lua/conform/formatters/injected.lua @@ -136,12 +136,6 @@ return { -- (defaults to the value from formatters_by_ft) lang_to_formatters = {}, }, - condition = function(self, ctx) - local ok, parser = pcall(vim.treesitter.get_parser, ctx.buf) - -- Require Neovim 0.9 because the treesitter API has changed significantly - ---@diagnostic disable-next-line: invisible - return ok and parser._injection_query and vim.fn.has("nvim-0.9") == 1 - end, format = function(self, ctx, lines, callback) local conform = require("conform") local errors = require("conform.errors") diff --git a/lua/conform/init.lua b/lua/conform/init.lua index 5d515c4..c174dea 100644 --- a/lua/conform/init.lua +++ b/lua/conform/init.lua @@ -52,6 +52,10 @@ end ---@param opts? conform.setupOpts M.setup = function(opts) + if vim.fn.has("nvim-0.9") == 0 then + notify("conform.nvim requires Neovim 0.9+", vim.log.levels.ERROR) + return + end opts = opts or {} M.formatters = vim.tbl_extend("force", M.formatters, opts.formatters or {}) diff --git a/tests/injected_spec.lua b/tests/injected_spec.lua index f6c7175..94d96b1 100644 --- a/tests/injected_spec.lua +++ b/tests/injected_spec.lua @@ -4,11 +4,6 @@ local injected = require("conform.formatters.injected") local runner = require("conform.runner") local test_util = require("tests.test_util") --- injected formatter only supported on neovim 0.9+ -if vim.fn.has("nvim-0.9") == 0 then - return -end - ---@param dir string ---@return string[] local function list_test_files(dir) -- cgit v1.2.3-70-g09d2