summaryrefslogtreecommitdiff
path: root/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/git.lua
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-06-19 18:34:13 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-06-19 18:34:13 +0900
commit307fceea38b7352a79b0bdb87025a34b76973867 (patch)
tree382eb3e6a11973bc2c6ba33eee14d43ec2a9566b /ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/git.lua
parentb66f68b8c014a3041c936ee9de1b57db5bcb50fb (diff)
updates
Diffstat (limited to 'ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/git.lua')
-rw-r--r--ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/git.lua215
1 files changed, 0 insertions, 215 deletions
diff --git a/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/git.lua b/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/git.lua
deleted file mode 100644
index 1f18b61..0000000
--- a/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/git.lua
+++ /dev/null
@@ -1,215 +0,0 @@
-return {
- {
- "moyiz/git-dev.nvim",
- event = "VeryLazy",
- opts = {},
- config = function()
- require("git-dev").setup()
-
- local function copy_git_repo_url()
- -- Get the Git repository root
- local git_root = vim.fn.system("git rev-parse --show-toplevel"):gsub("\n", "")
- if git_root == "" then
- vim.notify("Not inside a Git repository", vim.log.levels.WARN)
- return nil
- end
-
- -- Get the remote URL
- local remote_url = vim.fn.system("git config --get remote.origin.url"):gsub("\n", "")
- if remote_url == "" then
- vim.notify("No remote URL found", vim.log.levels.WARN)
- return nil
- end
-
- -- Convert SSH URL to HTTPS if needed
- if remote_url:match("^git@") then
- remote_url = remote_url:gsub("git@", "https://"):gsub(":", "/")
- end
-
- -- Remove `.git` from the remote URL
- remote_url = remote_url:gsub("%.git$", "")
-
- -- Get the relative path of the current file
- local file_path = vim.fn.expand("%:~:.")
- if file_path == "" then
- vim.notify("No file currently open", vim.log.levels.WARN)
- return nil
- end
-
- -- Get the relative path to the repository root
- local relative_path =
- vim.fn.system("git ls-files --full-name " .. vim.fn.shellescape(file_path)):gsub("\n", "")
-
- -- Combine the remote URL with the relative file path
- local full_url = remote_url .. "/" .. relative_path
-
- -- Copy to clipboard
- vim.fn.setreg("+", full_url)
- vim.notify("Copied to clipboard: " .. full_url, vim.log.levels.INFO)
-
- return full_url
- end
-
- -- Keybinding to copy the Git repository URL
- vim.keymap.set("n", "<leader>cg", function()
- copy_git_repo_url()
- end, { desc = "Copy git repository URL to clipboard" })
-
- -- Function to open a repository from the clipboard
- vim.keymap.set("n", "<leader>eg", function()
- local url = vim.fn.getreg("+") -- Get URL from clipboard
- if not url or url == "" then
- vim.notify("Clipboard is empty. Copy a valid URL first.", vim.log.levels.WARN)
- return
- end
- if url:match("^https://") then
- require("git-dev").open(url)
- else
- vim.notify("Not a valid URL: " .. url, vim.log.levels.ERROR)
- end
- end, { desc = "Open Git repository from clipboard" })
- end,
- },
- {
- "lewis6991/gitsigns.nvim",
- opts = {
- signs = {
- add = { text = "▎" },
- change = { text = "▎" },
- delete = { text = "" },
- topdelete = { text = "" },
- changedelete = { text = "▎" },
- untracked = { text = "▎" },
- },
- signs_staged = {
- add = { text = "▎" },
- change = { text = "▎" },
- delete = { text = "" },
- topdelete = { text = "" },
- changedelete = { text = "▎" },
- },
- on_attach = function(buffer)
- local gs = package.loaded.gitsigns
-
- local function map(mode, l, r, desc)
- vim.keymap.set(mode, l, r, { buffer = buffer, desc = desc })
- end
-
- -- stylua: ignore start
- map("n", "]h", function()
- if vim.wo.diff then
- vim.cmd.normal({ "]c", bang = true })
- else
- gs.nav_hunk("next")
- end
- end, "Next hunk")
- map("n", "[h", function()
- if vim.wo.diff then
- vim.cmd.normal({ "[c", bang = true })
- else
- gs.nav_hunk("prev")
- end
- end, "Previous hunk")
- map("n", "]H", function() gs.nav_hunk("last") end, "Last hunk")
- map("n", "[H", function() gs.nav_hunk("first") end, "First hunk")
- map({ "n", "v" }, "<leader>gs", ":Gitsigns stage_hunk<CR>", "Stage hunk")
- map({ "n", "v" }, "<leader>gr", ":Gitsigns reset_hunk<CR>", "Reset hunk")
- map("n", "<leader>gS", gs.stage_buffer, "Stage buffer")
- map("n", "<leader>gu", gs.undo_stage_hunk, "Undo stage hunk")
- map("n", "<leader>gR", gs.reset_buffer, "Reset buffer")
- map("n", "<leader>gpv", gs.preview_hunk_inline, "Preview hunk inline")
- map("n", "<leader>gb", function() gs.blame_line({ full = true }) end, "Blame line")
- map("n", "<leader>gB", function() gs.blame() end, "Blame buffer")
- map("n", "<leader>gd", gs.diffthis, "Diff this")
- map("n", "<leader>gD", function() gs.diffthis("~") end, "Diff this ~")
- -- map("n", "<leader>gD", function() gs.diffthis("@") end, "Diff this @")
- map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", "GitSigns select hunk")
- map("n", "<leader>gtb", gs.toggle_current_line_blame, "Toggle line blame")
- map("n", "<leader>gtd", gs.toggle_deleted, "Toggle delete")
- end,
- },
- init = function()
- local wk = require("which-key")
- wk.add({
- mode = { "n", "v", "x" },
- { "<leader>g", group = "Git" },
- { "<leader>gt", group = "Toggle" },
- })
- end,
- },
- {
- "kdheepak/lazygit.nvim",
- cmd = {
- "LazyGit",
- "LazyGitConfig",
- "LazyGitCurrentFile",
- "LazyGitFilter",
- "LazyGitFilterCurrentFile",
- },
- -- optional for floating window border decoration
- dependencies = {
- "nvim-lua/plenary.nvim",
- },
- -- setting the keybinding for LazyGit with 'keys' is recommended in
- -- order to load the plugin when the command is run for the first time
- keys = {
- { "<leader>gg", "<cmd>LazyGit<cr>", desc = "Lazygit" },
- },
- },
- {
- "mbbill/undotree",
- config = function()
- vim.keymap.set("n", "<leader>gu", vim.cmd.UndotreeToggle, { desc = "Undo tree" })
- end,
- },
- {
- "tpope/vim-fugitive",
- config = function()
- local TheSiahxyz_Fugitive = vim.api.nvim_create_augroup("TheSiahxyz_Fugitive", {})
- local autocmd = vim.api.nvim_create_autocmd
- autocmd("BufWinEnter", {
- group = TheSiahxyz_Fugitive,
- pattern = "*",
- callback = function()
- if vim.bo.ft ~= "fugitive" then
- return
- end
-
- local bufnr = vim.api.nvim_get_current_buf()
- vim.keymap.set("n", "<leader>P", function()
- vim.cmd.Git("push")
- end, { buffer = bufnr, remap = false, desc = "Git push" })
- vim.keymap.set("n", "<leader>p", function()
- vim.cmd.Git({ "pull", "--rebase" })
- end, { buffer = bufnr, remap = false, desc = "Git pull" })
- vim.keymap.set(
- "n",
- "<leader>o",
- ":Git push -u origin ",
- { buffer = bufnr, remap = false, desc = "Git push origin" }
- )
- vim.keymap.set(
- "n",
- "<leader>h",
- ":Git push home ",
- { buffer = bufnr, remap = false, desc = "Git push home" }
- )
- end,
- })
- autocmd("FileType", {
- group = TheSiahxyz_Fugitive,
- pattern = "fugitive",
- callback = function(event)
- vim.bo[event.buf].buflisted = false
- vim.keymap.set("n", "q", "<cmd>close<cr>", { buffer = event.buf, silent = true })
- end,
- })
- end,
- keys = {
- { mode = "n", "<leader>g<leader>", ":Git ", desc = "Git" },
- { mode = "n", "<leader>gf", vim.cmd.Git, desc = "Git fugitive" },
- { mode = "n", "gm", "<cmd>diffget //2<cr>", desc = "Git diff on my side" },
- { mode = "n", "go", "<cmd>diffget //3<cr>", desc = "Git diff on their side" },
- },
- },
-}