From bb4b156457317c86df6e7b192c27486083ab14c0 Mon Sep 17 00:00:00 2001 From: TJ DeVries Date: Sat, 15 May 2021 09:52:26 -0400 Subject: [PATCH 1/2] feat: Add format instead of only prefix for labels --- lua/flutter-tools/config.lua | 2 +- lua/flutter-tools/labels.lua | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lua/flutter-tools/config.lua b/lua/flutter-tools/config.lua index 4336f349..187646c9 100644 --- a/lua/flutter-tools/config.lua +++ b/lua/flutter-tools/config.lua @@ -37,7 +37,7 @@ local defaults = { }, closing_tags = { highlight = "Comment", - prefix = "// ", + format = "// %s", enabled = true, }, lsp = { diff --git a/lua/flutter-tools/labels.lua b/lua/flutter-tools/labels.lua index 56764e48..2ec293a4 100644 --- a/lua/flutter-tools/labels.lua +++ b/lua/flutter-tools/labels.lua @@ -7,13 +7,24 @@ local namespace = api.nvim_create_namespace("flutter_tools_closing_labels") local function render_labels(labels, opts) api.nvim_buf_clear_namespace(0, namespace, 0, -1) opts = opts or {} - local highlight = opts and opts.highlight or "Comment" - local prefix = opts and opts.prefix or "// " + local highlight = opts.highlight or "Comment" + + local prefix = opts.prefix + local format = opts.format + if prefix and format then + error( + "[flutter-tools.labels] Cannot have both prefix and format specified" .. vim.inspect(opts) + ) + end + + if not format then + format = prefix .. "%s" + end for _, item in ipairs(labels) do local line = item.range["end"].line api.nvim_buf_set_virtual_text(0, namespace, tonumber(line), { - { prefix .. item.label, highlight }, + { string.format(format, item.label), highlight }, }, {}) end end From 2253c4e9136de037da26a2406c4a5dd42b0cd1cb Mon Sep 17 00:00:00 2001 From: TJ DeVries Date: Sat, 15 May 2021 10:02:23 -0400 Subject: [PATCH 2/2] fixup: better backwards compat --- lua/flutter-tools/labels.lua | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lua/flutter-tools/labels.lua b/lua/flutter-tools/labels.lua index 2ec293a4..45034490 100644 --- a/lua/flutter-tools/labels.lua +++ b/lua/flutter-tools/labels.lua @@ -9,16 +9,25 @@ local function render_labels(labels, opts) opts = opts or {} local highlight = opts.highlight or "Comment" + -- Have ot use `rawget` to override what the default format is that we provide in config. + local user_format = rawget(opts, "format") + local prefix = opts.prefix - local format = opts.format - if prefix and format then + if prefix and user_format then error( "[flutter-tools.labels] Cannot have both prefix and format specified" .. vim.inspect(opts) ) end - if not format then + -- A bit complicated, but basically just keeps backwards compat of passing "prefix" + -- while still allowing users to pass "format" instead. + local format + if user_format then + format = user_format + elseif prefix then format = prefix .. "%s" + else + format = opts.format end for _, item in ipairs(labels) do