From d57b27fb730dfdfe4c1250ac701afa7822ba7c0d Mon Sep 17 00:00:00 2001 From: pika Date: Tue, 29 Oct 2024 12:25:30 +0100 Subject: [PATCH] addet a function, to automatically store screenshots to hugo sites with the ps keybind --- init.lua | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/init.lua b/init.lua index b591f40..bf887d1 100644 --- a/init.lua +++ b/init.lua @@ -7,3 +7,38 @@ require("pika.lazy") -- ╰──────────────────────────────────────────────────────╯ vim.cmd.colorscheme("darkearth") + +-- Keybind for saving clipboard screenshot and inserting a Markdown link +vim.api.nvim_set_keymap("n", "ps", ":lua SaveScreenshotAndInsertLink()", { noremap = true, silent = true }) + +function SaveScreenshotAndInsertLink() + -- Prompt for Hugo base directory if needed + + -- Define the Hugo base directory and screenshot subfolder path + local base_dir + local current_file_dir = vim.fn.expand("%:p:h") + + -- Detect base dir by looking for the Hugo structure, or prompt if not found + if current_file_dir:match("/content/") then + base_dir = current_file_dir:match("(.*)/content/") + else + -- Prompt for Hugo base directory if automatic detection fails + base_dir = vim.fn.input("Enter base directory of your Hugo site: ", "", "file") + end + + local img_folder = base_dir .. "/static/images/screenshots/" + vim.fn.mkdir(img_folder, "p") -- Ensure the directory exists + + -- Define the image name and full path + local img_name = os.date("%Y-%m-%d_%H-%M-%S") .. ".png" + local full_path = img_folder .. img_name + + -- Save clipboard image as binary PNG file using wl-paste + os.execute("wl-paste --type image/png > " .. full_path) + + -- Insert markdown image link at cursor position + local img_markdown = "![](/images/screenshots/" .. img_name .. ")\n" + vim.api.nvim_put({ img_markdown }, "c", true, true) + + print("Screenshot saved and link added: " .. full_path) +end