diff --git a/lua/telekasten.lua b/lua/telekasten.lua index d00e7f0..c085a10 100644 --- a/lua/telekasten.lua +++ b/lua/telekasten.lua @@ -205,12 +205,6 @@ local function generate_note_filename(uuid, title) end end -local function print_error(s) - vim.cmd("echohl ErrorMsg") - vim.cmd("echomsg " .. '"' .. s .. '"') - vim.cmd("echohl None") -end - local function check_dir_and_ask(dir, purpose) local ret = false if dir ~= nil and Path:new(dir):exists() == false then @@ -231,7 +225,7 @@ local function check_dir_and_ask(dir, purpose) ret = true else -- unreachable: plenary.Path:mkdir() will error out - print_error("Could not create directory " .. dir) + tkutils.print_error("Could not create directory " .. dir) ret = false end end @@ -245,7 +239,7 @@ end local function global_dir_check() local ret if M.Cfg.home == nil then - print_error("Telekasten.nvim: home is not configured!") + tkutils.print_error("Telekasten.nvim: home is not configured!") ret = false else ret = check_dir_and_ask(M.Cfg.home, "home") @@ -1661,7 +1655,7 @@ end local function RenameNote() local oldfile = Pinfo:new({ filepath = vim.fn.expand("%:p"), M.Cfg }) - tkutils.prompt_title(M.Cfg.extension, oldfile.title, function(newname) + fileutils.prompt_title(M.Cfg.extension, oldfile.title, function(newname) local newpath = newname:match("(.*/)") or "" newpath = M.Cfg.home .. "/" .. newpath @@ -1677,7 +1671,7 @@ local function RenameNote() local fname = M.Cfg.home .. "/" .. newname .. M.Cfg.extension local fexists = fileutils.file_exists(fname) if fexists then - print_error("File alreay exists. Renaming abandonned") + tkutils.print_error("File alreay exists. Renaming abandonned") return end @@ -2056,7 +2050,7 @@ local function CreateNoteSelectTemplate(opts) return end - tkutils.prompt_title(M.Cfg.extension, nil, function(title) + fileutils.prompt_title(M.Cfg.extension, nil, function(title) on_create_with_template(opts, title) end) end @@ -2129,7 +2123,7 @@ local function CreateNote(opts) return CreateNoteSelectTemplate(opts) end - tkutils.prompt_title(M.Cfg.extension, nil, function(title) + fileutils.prompt_title(M.Cfg.extension, nil, function(title) on_create(opts, title) end) end diff --git a/lua/telekasten/utils/files.lua b/lua/telekasten/utils/files.lua index 8ec6d0b..3c0f22c 100644 --- a/lua/telekasten/utils/files.lua +++ b/lua/telekasten/utils/files.lua @@ -1,5 +1,6 @@ local M = {} +-- Checks if file exists function M.file_exists(fname) if fname == nil then return false @@ -14,4 +15,28 @@ function M.file_exists(fname) end end +-- Prompts the user for a note title +function M.prompt_title(ext, defaultFile, callback) + local canceledStr = "__INPUT_CANCELLED__" + + vim.ui.input({ + prompt = "Title: ", + cancelreturn = canceledStr, + completion = "file", + default = defaultFile, + }, function(title) + if not title then + title = "" + end + if title == canceledStr then + vim.cmd("echohl WarningMsg") + vim.cmd("echomsg 'Note creation cancelled!'") + vim.cmd("echohl None") + else + title = strip_extension(title, ext) + callback(title) + end + end) +end + return M diff --git a/lua/telekasten/utils/init.lua b/lua/telekasten/utils/init.lua index 7676fa5..41e0e43 100644 --- a/lua/telekasten/utils/init.lua +++ b/lua/telekasten/utils/init.lua @@ -1,12 +1,19 @@ local M = {} ---- Escapes Lua pattern characters for use in gsub +-- Prints a basic error message +local function print_error(s) + vim.cmd("echohl ErrorMsg") + vim.cmd("echomsg " .. '"' .. s .. '"') + vim.cmd("echohl None") +end + +-- Escapes Lua pattern characters for use in gsub function M.escape(s) -- return s:gsub("[^%w]", "%%%1") -- Escape everything ? return s:gsub("[%%%]%^%-$().[*+?]", "%%%1") end ---- Returns string with listed chars removed (= safer gsub) +-- Returns string with listed chars removed (= safer gsub) function M.strip(s, chars_to_remove) return s:gsub("[" .. M.escape(chars_to_remove) .. "]", "") end @@ -17,27 +24,4 @@ local function strip_extension(str, ext) return str:gsub("(" .. ext:gsub("%.", "%%.") .. ")$", "") end -function M.prompt_title(ext, defaultFile, callback) - local canceledStr = "__INPUT_CANCELLED__" - - vim.ui.input({ - prompt = "Title: ", - cancelreturn = canceledStr, - completion = "file", - default = defaultFile, - }, function(title) - if not title then - title = "" - end - if title == canceledStr then - vim.cmd("echohl WarningMsg") - vim.cmd("echomsg 'Note creation cancelled!'") - vim.cmd("echohl None") - else - title = strip_extension(title, ext) - callback(title) - end - end) -end - return M