Skip to content

Commit 1057e6c

Browse files
authored
fix(config): Respect user delimiter.ft configuration completely (#64)
Previously, vim.tbl_deep_extend was merging user delimiter.ft settings with defaults, which could cause issues when users want to disable default filetype mappings. Now user delimiter.ft settings take complete precedence over defaults.
1 parent bfd95ed commit 1057e6c

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

lua/csvview/config.lua

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,29 @@ M._highlights = {
287287
{ name = "CsvViewCol8", link = "csvCol8" },
288288
}
289289

290+
--- Merge two configuration tables.
291+
---@param internal CsvView.InternalOptions
292+
---@param user CsvView.Options
293+
---@return CsvView.InternalOptions
294+
local function merge_config(internal, user)
295+
local config = vim.tbl_deep_extend("force", internal, user)
296+
297+
-- Do not merge delimiter.ft, prioritize user settings
298+
-- This considers cases like disabling the default ft mappings for csv and tsv.
299+
if user.parser and type(user.parser.delimiter) == "table" then
300+
if type(user.parser.delimiter.ft) == "table" then
301+
config.parser.delimiter.ft = vim.deepcopy(user.parser.delimiter.ft)
302+
end
303+
end
304+
305+
return config
306+
end
307+
290308
--- get config
291309
---@param opts? CsvView.Options
292310
---@return CsvView.InternalOptions
293311
function M.get(opts)
294-
return vim.tbl_deep_extend("force", M.options, opts or {})
312+
return merge_config(M.options, opts or {})
295313
end
296314

297315
--- setup
@@ -322,7 +340,7 @@ function M.setup(opts)
322340
end
323341
end
324342

325-
M.options = vim.tbl_deep_extend("force", M.defaults, opts or {})
343+
M.options = merge_config(M.defaults, opts or {})
326344
end
327345

328346
return M

0 commit comments

Comments
 (0)