From c80a54e42b52ce297f0f2f71af23c562832025c7 Mon Sep 17 00:00:00 2001 From: TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:35:27 +0900 Subject: init --- .../TheSiahxyz/lua/thesiahxyz/plugins/urlview.lua | 103 +++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/urlview.lua (limited to 'ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/urlview.lua') diff --git a/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/urlview.lua b/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/urlview.lua new file mode 100644 index 0000000..c1a7108 --- /dev/null +++ b/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/urlview.lua @@ -0,0 +1,103 @@ +return { + "axieax/urlview.nvim", + dependencies = "nvim-telescope/telescope.nvim", + init = function() + local wk = require("which-key") + wk.add({ + mode = { "n", "v" }, + { "u", group = "URLs" }, + { "uc", group = "Copy URLs" }, + }) + end, + config = function() + -- Load urlview + require("urlview").setup({}) + + -- Define custom search for thesiah_urls + local thesiah = require("urlview.search") + thesiah["thesiah_urls"] = function() + local urls = {} + local files = { + vim.fn.expand("~/.local/share/thesiah/urls"), + vim.fn.expand("~/.local/share/thesiah/snippets"), + } + + -- Check if the file exists and read each file + for _, filepath in ipairs(files) do + if vim.fn.filereadable(filepath) == 1 then + local file = io.open(filepath, "r") + if file then + for line in file:lines() do + -- Match and capture URLs + for url in line:gmatch("https?://[%w%./%-_%%]+") do + table.insert(urls, url) + end + end + file:close() + else + vim.notify("Unable to open " .. filepath, vim.log.levels.ERROR) + end + else + vim.notify("File not found: " .. filepath, vim.log.levels.WARN) + end + end + + return urls + end + + local search = require("urlview.search") + local search_helpers = require("urlview.search.helpers") + + -- Custom search function for Tmux plugins + search["tmux_plugins"] = function() + local urls = {} + local filepath = vim.fn.expand("~/.config/tmux/tmux.conf") + + -- Check if the tmux.conf file exists + if vim.fn.filereadable(filepath) == 1 then + local file = io.open(filepath, "r") + if file then + for line in file:lines() do + -- Match lines that contain Tmux plugin URLs (TPM syntax) + -- Example: set -g @plugin 'tmux-plugins/tpm' + local url = line:match("@plugin%s+'([^']+)'") + if url then + -- Convert to full GitHub URL if not already a full URL + if not url:match("^https?://") then + url = "https://github.com/" .. url + end + table.insert(urls, url) + end + end + file:close() + else + vim.notify("Unable to open " .. filepath, vim.log.levels.ERROR) + end + else + vim.notify("File not found: " .. filepath, vim.log.levels.WARN) + end + + return urls + end + + -- Add a keymap for the Tmux plugins search context + vim.keymap.set("n", "ub", "UrlView thesiah_urls", { desc = "Bookmarks URLs" }) + vim.keymap.set("n", "ul", "UrlView lazy", { desc = "Lazy plugin URLs" }) + vim.keymap.set("n", "ur", "UrlView", { desc = "Buffer URLs" }) + vim.keymap.set("n", "ut", "UrlView tmux_plugins", { desc = "Tmux plugin URLs" }) + vim.keymap.set( + "n", + "ucb", + "UrlView thesiah_urls action=clipboard", + { desc = "clipboard bookmarks URLs" } + ) + vim.keymap.set("n", "ucl", "UrlView lazy action=clipboard", { desc = "Copy Lazy plugin URLs" }) + vim.keymap.set("n", "ucr", "UrlView action=clipboard", { desc = "Copy buffer URLs" }) + vim.keymap.set( + "n", + "uct", + "UrlView tmux_plugins action=clipboard", + { desc = "clipboard tmux plugin URLs" } + ) + end, +} -- cgit v1.2.3