From 9705f5795b40171b875f770abdbe0ee059f489b4 Mon Sep 17 00:00:00 2001 From: lambtho12 Date: Thu, 27 Jan 2022 10:54:30 +0100 Subject: [PATCH] Add UUID prefix to new notes --- README.md | 5 +++++ doc/telekasten.txt | 18 ++++++++++++++++++ lua/telekasten.lua | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) diff --git a/README.md b/README.md index c628c1e..3a13ec9 100644 --- a/README.md +++ b/README.md @@ -238,6 +238,11 @@ require('telekasten').setup({ -- markdown file extension extension = ".md", + -- prefix file with uuid + prefix_title_by_uuid = false, + -- file uuid type ("rand" or input for os.date()") + uuid_type = "%Y%m%d%H%M", + -- following a link to a non-existing note will create it follow_creates_nonexisting = true, dailies_create_nonexisting = true, diff --git a/doc/telekasten.txt b/doc/telekasten.txt index 3f34ff4..93bb6f4 100644 --- a/doc/telekasten.txt +++ b/doc/telekasten.txt @@ -67,6 +67,11 @@ telekasten.setup({opts}) -- markdown file extension extension = ".md", + -- prefix file with uuid + prefix_title_by_uuid = true, + -- file uuid type ("rand" or input for os.date such as "%Y%m%d%H%M") + uuid_type = "%Y%m%d%H%M", + templates = '/path/to/directory', -- path to templates extension = '.file extension', -- file extension of note files @@ -182,6 +187,19 @@ telekasten.setup({opts}) Default: '.md' + *telekasten.settings.prefix_title_by_uuid* + prefix_title_by_uuid: ~ + Adds an Universal Unique Identifier before the file name. + + Default: 'false' + + *telekasten.settings.uuid_type* + uuid_type: ~ + Type of UUID. Could be 'rand' for a random 6 character string, or a + time format to input in os.date() such as %Y%m%d%H%M. + + Default: '%Y%m%d%H%M' + *telekasten.settings.image_subdir* image_subdir: ~ Path to the directory where pasted images should go to. Accepts diff --git a/lua/telekasten.lua b/lua/telekasten.lua index fbfc50b..315f228 100644 --- a/lua/telekasten.lua +++ b/lua/telekasten.lua @@ -52,6 +52,11 @@ M.Cfg = { -- markdown file extension extension = ".md", + -- prefix file with uuid + prefix_title_by_uuid = false, + -- file uuid type ("rand" or input for os.date()") + uuid_type = "%Y%m%d%H%M", + -- following a link to a non-existing note will create it follow_creates_nonexisting = true, dailies_create_nonexisting = true, @@ -143,6 +148,32 @@ local function file_exists(fname) end end +local function random_variable(length) + math.randomseed(os.clock() ^ 5) + local res = "" + for _ = 1, length do + res = res .. string.char(math.random(97, 122)) + end + return res +end + +local function append_uuid(opts, title) + opts.prefix_title_by_uuid = opts.prefix_title_by_uuid + or M.Cfg.prefix_title_by_uuid + opts.uuid_type = opts.uuid_type or M.Cfg.uuid_type + + if opts.prefix_title_by_uuid then + local uuid = "" + if opts.uuid_type ~= "rand" then + uuid = os.date(opts.uuid_type) + else + uuid = random_variable(6) + end + title = uuid .. "-" .. title + end + return title +end + local function print_error(s) vim.cmd("echohl ErrorMsg") vim.cmd("echomsg " .. '"' .. s .. '"') @@ -1793,6 +1824,8 @@ local function on_create_with_template(opts, title) return end + title = append_uuid(opts, title) + opts = opts or {} opts.insert_after_inserting = opts.insert_after_inserting or M.Cfg.insert_after_inserting @@ -1874,6 +1907,8 @@ local function on_create(opts, title) return end + title = append_uuid(opts, title) + local pinfo = Pinfo:new({ title = title, opts }) local fname = pinfo.filepath