diff --git a/README.md b/README.md index ff45568..c628c1e 100644 --- a/README.md +++ b/README.md @@ -225,12 +225,13 @@ require('telekasten').setup({ -- and thus the telekasten syntax will not be loaded either auto_set_filetype = true, + -- dir names for special notes (absolute path or subdir name) dailies = home .. '/' .. 'daily', weeklies = home .. '/' .. 'weekly', templates = home .. '/' .. 'templates', - -- image subdir for pasting - -- subdir name + -- image (sub)dir for pasting + -- dir name (absolute path or subdir name) -- or nil if pasted images shouldn't go into a special subdir image_subdir = "img", diff --git a/doc/telekasten.txt b/doc/telekasten.txt index 643cedd..3f34ff4 100644 --- a/doc/telekasten.txt +++ b/doc/telekasten.txt @@ -158,18 +158,21 @@ telekasten.setup({opts}) *telekasten.settings.daily* daily: ~ Path to your daily notes, to separate them from 'normal' notes. + Accepts absolute path or sub-directory name. Default: '~/zettelkasten/daily' *telekasten.settings.weekly* weekly: ~ Path to your weekly notes, to separate them from 'normal' notes. + Accepts absolute path or sub-directory name. Default: '~/zettelkasten/weekly' *telekasten.settings.templates* templates: ~ Path to your note templates. + Accepts absolute path or sub-directory name. Default: '~/zettelkasten/templates' @@ -181,8 +184,9 @@ telekasten.setup({opts}) *telekasten.settings.image_subdir* image_subdir: ~ - Sub-directory where pasted images should go to. Set to `nil` if images - should not go into a sub-directory. + Path to the directory where pasted images should go to. Accepts + absolute path or sub-directory name.Set to `nil` if images should not + go into a sub-directory. Default: `nil` diff --git a/lua/telekasten.lua b/lua/telekasten.lua index c7fc1cd..9c06fe6 100644 --- a/lua/telekasten.lua +++ b/lua/telekasten.lua @@ -39,12 +39,13 @@ M.Cfg = { -- and thus the telekasten syntax will not be loaded either auto_set_filetype = true, + -- dir names for special notes (absolute path or subdir name) dailies = home .. "/" .. "daily", weeklies = home .. "/" .. "weekly", templates = home .. "/" .. "templates", - -- image subdir for pasting - -- subdir name + -- image (sub)dir for pasting + -- dir name (absolute path or subdir name) -- or nil if pasted images shouldn't go into a special subdir image_subdir = nil, @@ -191,12 +192,7 @@ local function global_dir_check() ret = ret and check_dir_and_ask(M.Cfg.dailies, "dailies") ret = ret and check_dir_and_ask(M.Cfg.weeklies, "weeklies") ret = ret and check_dir_and_ask(M.Cfg.templates, "templates") - - local img_dir = M.Cfg.home - if M.Cfg.image_subdir then - img_dir = img_dir .. "/" .. M.Cfg.image_subdir - end - ret = ret and check_dir_and_ask(img_dir, "image_subdir") + ret = ret and check_dir_and_ask(M.Cfg.image_subdir, "images") return ret end @@ -206,6 +202,13 @@ local function escape(s) return string.gsub(s, "[%%%]%^%-$().[*+?]", "%%%1") end +local function make_config_path_absolute(path) + local ret = path + if not (Path:new(path):is_absolute()) and path ~= nil then + ret = M.Cfg.home .. "/" .. path + end + return ret + -- sanitize strings local escape_chars = function(string) return string.gsub(string, "[%(|%)|\\|%[|%]|%-|%{%}|%?|%+|%*|%^|%$|%/]", { @@ -312,14 +315,15 @@ local function imgFromClipboard() -- 00000090 10 66 d7 01 b1 e4 fb 79 7c f2 2c e7 cc 39 e7 3d |.f.....y|.,..9.=| local pngname = "pasted_img_" .. os.date("%Y%m%d%H%M%S") .. ".png" - local pngpath = M.Cfg.home + local pngpath = M.Cfg.home .. "/" .. pngname local relpath = pngname if M.Cfg.image_subdir then - relpath = M.Cfg.image_subdir .. "/" .. pngname - pngpath = M.Cfg.home .. "/" .. M.Cfg.image_subdir + relpath = Path:new(M.Cfg.image_subdir):make_relative(M.Cfg.home) + .. "/" + .. pngname + pngpath = M.Cfg.image_subdir .. "/" .. pngname end - pngpath = pngpath .. "/" .. pngname os.execute("xclip -selection clipboard -t image/png -o > " .. pngpath) if file_exists(pngpath) then @@ -2697,6 +2701,12 @@ local function Setup(cfg) print("-----------------") print(vim.inspect(M.Cfg)) end + + -- Convert all directories in full path + M.Cfg.image_subdir = make_config_path_absolute(M.Cfg.image_subdir) + M.Cfg.dailies = make_config_path_absolute(M.Cfg.dailies) + M.Cfg.weeklies = make_config_path_absolute(M.Cfg.weeklies) + M.Cfg.templates = make_config_path_absolute(M.Cfg.templates) end M.find_notes = FindNotes