From a12b3bb04e9c468209aea1371fe7360c10b5abb5 Mon Sep 17 00:00:00 2001 From: David Ibia Date: Mon, 21 Jul 2025 16:59:25 +0100 Subject: [PATCH] feat(lua): add helper functions to open project folder based on OS for better navigation --- lua/absolute/helpers/init.lua | 1 + lua/absolute/helpers/open-project-folder.lua | 30 ++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 lua/absolute/helpers/init.lua create mode 100644 lua/absolute/helpers/open-project-folder.lua diff --git a/lua/absolute/helpers/init.lua b/lua/absolute/helpers/init.lua new file mode 100644 index 0000000..a156749 --- /dev/null +++ b/lua/absolute/helpers/init.lua @@ -0,0 +1 @@ +require("absolute.helpers.open-project-folder") diff --git a/lua/absolute/helpers/open-project-folder.lua b/lua/absolute/helpers/open-project-folder.lua new file mode 100644 index 0000000..95fd43b --- /dev/null +++ b/lua/absolute/helpers/open-project-folder.lua @@ -0,0 +1,30 @@ +local current_os = require("absolute.utils.detect-os") +local get_git_root = require("absolute.utils.get-git-root") + +local os_name = current_os.detect() +local supported_os = current_os.supported + +function Open_project_root() + local project_root = get_git_root() + + if os_name == supported_os.MACOS then + vim.fn.jobstart("open " .. project_root, { detach = true }) + return + end + + if os_name == supported_os.UNIX then + vim.fn.jobstart("xdg-open " .. project_root, { detach = true }) + return + end + + if os_name == supported_os.WINDOWS then + vim.fn.jobstart("explorer " .. project_root, { detach = true }) + return + end +end + +local opts = { noremap = true, silent = true } + +opts.desc = "Open project root" + +vim.api.nvim_set_keymap("n", "op", "lua Open_project_root()", opts)