refactor: make it work on neovim version below 0.12

This commit is contained in:
Oleksandr Smirnov 2025-10-29 15:40:05 +02:00
parent 3ad6f73b57
commit 847d1b7190
No known key found for this signature in database
3 changed files with 33 additions and 5 deletions

View file

@ -50,4 +50,23 @@ function utils.indent(line, indent)
return string.rep(char, indent)
end
---@generic T
---@param tbl T[]
---@return T[]
function utils.list_unique(tbl)
if vim.fn.has "nvim-0.12" == 1 then
return vim.list.unique(tbl)
end
for i = #tbl, 1, -1 do
for j = 1, i - 1 do
if tbl[i] == tbl[j] then
table.remove(tbl, i)
break
end
end
end
return tbl
end
return utils

View file

@ -1,3 +1,5 @@
local u = require "gopher._utils"
---@param option string
local function option_to_tag(option)
return option:match "^(.-)="
@ -32,12 +34,9 @@ function struct_tags.parse_args(args)
end
end
-- todo: it's incompatible with vim lower 0.12
tags = vim.list.unique(tags)
options = vim.list.unique(options)
return {
tags = table.concat(tags, ","),
options = table.concat(options, ","),
tags = table.concat(u.list_unique(tags), ","),
options = table.concat(u.list_unique(options), ","),
}
end

View file

@ -46,4 +46,14 @@ utils["should add .indent() 2 tabs"] = function()
t.eq("\t\t", u.indent(line, indent))
end
utils["should .list_unique on list with duplicates"] = function()
local u = require "gopher._utils"
t.eq({ "json", "xml" }, u.list_unique { "json", "xml", "json" })
end
utils["should .list_unique on list with no duplicates"] = function()
local u = require "gopher._utils"
t.eq({ "json", "xml" }, u.list_unique { "json", "xml" })
end
return T