From 98607a8a8c206e4ab2d4d47fb60f2d439a9d37d4 Mon Sep 17 00:00:00 2001 From: historia Date: Wed, 14 Aug 2024 16:11:38 -0400 Subject: fix: renaming commands respect original extension --- lua/simple-denote.lua | 2 +- lua/simple-denote/api.lua | 5 ++--- lua/simple-denote/internal.lua | 13 ++++++------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/lua/simple-denote.lua b/lua/simple-denote.lua index 5709e3a..f7e24f2 100644 --- a/lua/simple-denote.lua +++ b/lua/simple-denote.lua @@ -10,7 +10,7 @@ function M.load_cmd(options) elseif opts.fargs[1] == "title" then api.title(options) elseif opts.fargs[1] == "keywords" then - api.keywords(options) + api.keywords() elseif opts.fargs[1] == "signature" then api.signature() elseif opts.fargs[1] == "extension" then diff --git a/lua/simple-denote/api.lua b/lua/simple-denote/api.lua index a03c9f2..ded8022 100644 --- a/lua/simple-denote/api.lua +++ b/lua/simple-denote/api.lua @@ -36,10 +36,9 @@ function M.title(options, filename, title) internal.title(options, filename, title) end ----@param options table ---@param filename string|nil ---@param keywords string|nil -function M.keywords(options, filename, keywords) +function M.keywords(filename, keywords) if not filename then filename = vim.fn.expand("%") end @@ -49,7 +48,7 @@ function M.keywords(options, filename, keywords) end) end if not keywords then return end - internal.keyword(options, filename, keywords) + internal.keyword(filename, keywords) end ---@param filename string|nil diff --git a/lua/simple-denote/internal.lua b/lua/simple-denote/internal.lua index 8821689..33593c6 100644 --- a/lua/simple-denote/internal.lua +++ b/lua/simple-denote/internal.lua @@ -73,7 +73,7 @@ end ---@param title string --- Retitles the filename and changes the first heading of the note function M.title(options, filename, title) - local prefix = filename:match("^(.-%d%d%d%d%d%d%d%dT%d%d%d%d%d%d).*") + local prefix, ext = filename:match("^(.-%d%d%d%d%d%d%d%dT%d%d%d%d%d%d).*(%..+)") if not prefix then error("This doesn't look like a Denote filename") end @@ -86,24 +86,23 @@ function M.title(options, filename, title) M.set_heading(options, title) end title = M.format_denote_string(title, "-") - local new_filename = prefix .. sig .. title .. keywords .. "." .. options.ext + local new_filename = prefix .. sig .. title .. keywords .. ext M.replace_file(filename, new_filename) end ----@param options table ---@param filename string ---@param keywords string ---Replaces the __keywords in filename -function M.keyword(options, filename, keywords) - local prefix = filename:match("^(.*)__.*$") +function M.keyword(filename, keywords) + local prefix, ext = filename:match("^(.*)__.*(%..+)$") if not prefix then - prefix = filename:match("^(.*)%..-$") + prefix, ext = filename:match("^(.*)(%..+)$") end if not prefix:match("%d%d%d%d%d%d%d%dT%d%d%d%d%d%d") then error("This doesn't look like a Denote filename") end keywords = M.format_denote_string(keywords, "_") - local new_filename = prefix .. keywords .. "." .. options.ext + local new_filename = prefix .. keywords .. ext M.replace_file(filename, new_filename) end -- cgit v1.2.3