refact: print_error and prompt_title

This commit is contained in:
Thomas Lambert
2023-04-29 00:09:53 +02:00
parent fb7c5312a7
commit 43408481a2
3 changed files with 40 additions and 37 deletions

View File

@@ -205,12 +205,6 @@ local function generate_note_filename(uuid, title)
end end
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 function check_dir_and_ask(dir, purpose)
local ret = false local ret = false
if dir ~= nil and Path:new(dir):exists() == false then if dir ~= nil and Path:new(dir):exists() == false then
@@ -231,7 +225,7 @@ local function check_dir_and_ask(dir, purpose)
ret = true ret = true
else else
-- unreachable: plenary.Path:mkdir() will error out -- unreachable: plenary.Path:mkdir() will error out
print_error("Could not create directory " .. dir) tkutils.print_error("Could not create directory " .. dir)
ret = false ret = false
end end
end end
@@ -245,7 +239,7 @@ end
local function global_dir_check() local function global_dir_check()
local ret local ret
if M.Cfg.home == nil then 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 ret = false
else else
ret = check_dir_and_ask(M.Cfg.home, "home") ret = check_dir_and_ask(M.Cfg.home, "home")
@@ -1661,7 +1655,7 @@ end
local function RenameNote() local function RenameNote()
local oldfile = Pinfo:new({ filepath = vim.fn.expand("%:p"), M.Cfg }) 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 "" local newpath = newname:match("(.*/)") or ""
newpath = M.Cfg.home .. "/" .. newpath newpath = M.Cfg.home .. "/" .. newpath
@@ -1677,7 +1671,7 @@ local function RenameNote()
local fname = M.Cfg.home .. "/" .. newname .. M.Cfg.extension local fname = M.Cfg.home .. "/" .. newname .. M.Cfg.extension
local fexists = fileutils.file_exists(fname) local fexists = fileutils.file_exists(fname)
if fexists then if fexists then
print_error("File alreay exists. Renaming abandonned") tkutils.print_error("File alreay exists. Renaming abandonned")
return return
end end
@@ -2056,7 +2050,7 @@ local function CreateNoteSelectTemplate(opts)
return return
end 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) on_create_with_template(opts, title)
end) end)
end end
@@ -2129,7 +2123,7 @@ local function CreateNote(opts)
return CreateNoteSelectTemplate(opts) return CreateNoteSelectTemplate(opts)
end end
tkutils.prompt_title(M.Cfg.extension, nil, function(title) fileutils.prompt_title(M.Cfg.extension, nil, function(title)
on_create(opts, title) on_create(opts, title)
end) end)
end end

View File

@@ -1,5 +1,6 @@
local M = {} local M = {}
-- Checks if file exists
function M.file_exists(fname) function M.file_exists(fname)
if fname == nil then if fname == nil then
return false return false
@@ -14,4 +15,28 @@ function M.file_exists(fname)
end end
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 return M

View File

@@ -1,12 +1,19 @@
local M = {} 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) function M.escape(s)
-- return s:gsub("[^%w]", "%%%1") -- Escape everything ? -- return s:gsub("[^%w]", "%%%1") -- Escape everything ?
return s:gsub("[%%%]%^%-$().[*+?]", "%%%1") return s:gsub("[%%%]%^%-$().[*+?]", "%%%1")
end end
--- Returns string with listed chars removed (= safer gsub) -- Returns string with listed chars removed (= safer gsub)
function M.strip(s, chars_to_remove) function M.strip(s, chars_to_remove)
return s:gsub("[" .. M.escape(chars_to_remove) .. "]", "") return s:gsub("[" .. M.escape(chars_to_remove) .. "]", "")
end end
@@ -17,27 +24,4 @@ local function strip_extension(str, ext)
return str:gsub("(" .. ext:gsub("%.", "%%.") .. ")$", "") return str:gsub("(" .. ext:gsub("%.", "%%.") .. ")$", "")
end 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 return M