diff --git a/lazy-lock.json b/lazy-lock.json index a71294fa..d708be6a 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,94 +1,26 @@ { - "LuaSnip": { - "branch": "master", - "commit": "458560534a73f7f8d7a11a146c801db00b081df0" - }, - "blink.cmp": { - "branch": "main", - "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" - }, - "conform.nvim": { - "branch": "master", - "commit": "235dd79731c1dc51ec04abb4045cbc54727a172a" - }, - "fidget.nvim": { - "branch": "main", - "commit": "3f5475949679953af6d78654db29b944fa826e6a" - }, - "gitsigns.nvim": { - "branch": "main", - "commit": "20ad4419564d6e22b189f6738116b38871082332" - }, - "guess-indent.nvim": { - "branch": "main", - "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" - }, - "lazy.nvim": { - "branch": "main", - "commit": "1ea3c4085785f460fb0e46d2fe1ee895f5f9e7c1" - }, - "lazydev.nvim": { - "branch": "main", - "commit": "e28ce52fc7ff79fcb76f0e79ee6fb6182fca90b9" - }, - "mason-lspconfig.nvim": { - "branch": "main", - "commit": "2304ff65ecc8cb2afc2484de3e2ed9a407edf0b9" - }, - "mason-tool-installer.nvim": { - "branch": "main", - "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" - }, - "mason.nvim": { - "branch": "main", - "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" - }, - "mini.nvim": { - "branch": "main", - "commit": "14145d3769eacdb48aa1cfd21f1e244896a85f68" - }, - "nvim-lspconfig": { - "branch": "master", - "commit": "e5c61b02f33b5c6538be25b2696b33b4cc91e667" - }, - "nvim-treesitter": { - "branch": "master", - "commit": "42fc28ba918343ebfd5565147a42a26580579482" - }, - "nvim-web-devicons": { - "branch": "master", - "commit": "b8221e42cf7287c4dcde81f232f58d7b947c210d" - }, - "plenary.nvim": { - "branch": "master", - "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" - }, - "telescope-fzf-native.nvim": { - "branch": "main", - "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" - }, - "telescope-ui-select.nvim": { - "branch": "master", - "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" - }, - "telescope.nvim": { - "branch": "master", - "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" - }, - "todo-comments.nvim": { - "branch": "main", - "commit": "19d461ddd543e938eb22505fb03fa878800270b6" - }, - "toggleterm.nvim": { - "branch": "main", - "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" - }, - "tokyonight.nvim": { - "branch": "main", - "commit": "e63c42a42b11cd6225f009dd949b9ee0fccc15ef" - }, - "which-key.nvim": { - "branch": "main", - "commit": "b4177e3eaf15fe5eb8357ebac2286d488be1ed00" - } + "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, + "blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" }, + "conform.nvim": { "branch": "master", "commit": "235dd79731c1dc51ec04abb4045cbc54727a172a" }, + "fidget.nvim": { "branch": "main", "commit": "3f5475949679953af6d78654db29b944fa826e6a" }, + "gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" }, + "guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" }, + "lazy.nvim": { "branch": "main", "commit": "1ea3c4085785f460fb0e46d2fe1ee895f5f9e7c1" }, + "lazydev.nvim": { "branch": "main", "commit": "e28ce52fc7ff79fcb76f0e79ee6fb6182fca90b9" }, + "lazygit.nvim": { "branch": "main", "commit": "2305deed25bc61b866d5d39189e9105a45cf1cfb" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "2304ff65ecc8cb2afc2484de3e2ed9a407edf0b9" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, + "mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, + "mini.nvim": { "branch": "main", "commit": "cf32454e91b3d963a12fef0314811fb035b62d49" }, + "nvim-lspconfig": { "branch": "master", "commit": "e5c61b02f33b5c6538be25b2696b33b4cc91e667" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-web-devicons": { "branch": "master", "commit": "b8221e42cf7287c4dcde81f232f58d7b947c210d" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, + "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, + "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, + "todo-comments.nvim": { "branch": "main", "commit": "19d461ddd543e938eb22505fb03fa878800270b6" }, + "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, + "tokyonight.nvim": { "branch": "main", "commit": "e63c42a42b11cd6225f009dd949b9ee0fccc15ef" }, + "which-key.nvim": { "branch": "main", "commit": "b4177e3eaf15fe5eb8357ebac2286d488be1ed00" } } diff --git a/lua/custom/plugins/README.md b/lua/custom/plugins/README.md index 51887fd3..211e4597 100644 --- a/lua/custom/plugins/README.md +++ b/lua/custom/plugins/README.md @@ -1,15 +1,35 @@ -# Custom ToggleTerm Setup +# Custom Plugins Setup + +## ToggleTerm Quick notes on the terminal experience provided by `lua/custom/plugins/toggleterm.lua`. -## Highlights +### Highlights - Floating terminals sized responsively to the current UI (`` or `tf`). - Dedicated splits: `th` (horizontal) and `tv` (vertical). -- Terminal picker `tt`, plus a pre-configured floating `lazygit` on `tg`. +- Terminal picker `tt` to switch between multiple terminals. - Send code to the primary terminal with `ts` (line or visual selection). - Terminal windows inherit familiar navigation (``, `jk`, ``) automatically. -## Tips +### Tips - Use counts (`2ToggleTerm`, `3ToggleTerm`) when you want to retarget a specific layout. - `TermExec cmd="npm run test"` reuses the floating terminal without stealing focus. - Update sizing or borders in `float_opts` if your display or font spacing demands it. + +## LazyGit + +Enhanced git interface using `lua/custom/plugins/lazygit.lua`. + +### Highlights +- Fast, native lazygit integration with no keyboard shortcut conflicts +- Opens in a proper floating window (95% of screen size) +- Fully functional with all lazygit features and keybindings +- Use `gg` to open lazygit in current repo +- Use `gf` to open lazygit focused on current file history + +### Why Not ToggleTerm? +LazyGit.nvim is used instead of toggleterm for lazygit because: +- Better performance (uses native terminal, not Neovim's terminal emulator) +- No keyboard shortcut conflicts (q, Esc, etc. work as expected) +- Designed specifically for lazygit integration +- Supports editing commit messages in Neovim diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua index 4874b87c..e0888915 100644 --- a/lua/custom/plugins/init.lua +++ b/lua/custom/plugins/init.lua @@ -5,5 +5,6 @@ local plugins = {} vim.list_extend(plugins, require('custom.plugins.toggleterm')) +vim.list_extend(plugins, require('custom.plugins.lazygit')) return plugins diff --git a/lua/custom/plugins/lazygit.lua b/lua/custom/plugins/lazygit.lua new file mode 100644 index 00000000..9ec9d4cb --- /dev/null +++ b/lua/custom/plugins/lazygit.lua @@ -0,0 +1,26 @@ +-- LazyGit integration using dedicated plugin for better performance and keybind handling +return { + { + 'kdheepak/lazygit.nvim', + cmd = { + 'LazyGit', + 'LazyGitConfig', + 'LazyGitCurrentFile', + 'LazyGitFilter', + 'LazyGitFilterCurrentFile', + }, + dependencies = { + 'nvim-lua/plenary.nvim', + }, + keys = { + { 'gg', 'LazyGit', desc = 'LazyGit' }, + { 'gf', 'LazyGitCurrentFile', desc = 'LazyGit Current File' }, + }, + config = function() + vim.g.lazygit_floating_window_winblend = 0 -- transparency of floating window + vim.g.lazygit_floating_window_scaling_factor = 0.95 -- scaling factor for floating window + vim.g.lazygit_floating_window_border_chars = { '╭', '─', '╮', '│', '╯', '─', '╰', '│' } -- customize border + vim.g.lazygit_use_neovim_remote = 1 -- Use neovim remote for editing commit messages + end, + }, +} diff --git a/lua/custom/plugins/toggleterm.lua b/lua/custom/plugins/toggleterm.lua index 044d8c4c..223f1c0f 100644 --- a/lua/custom/plugins/toggleterm.lua +++ b/lua/custom/plugins/toggleterm.lua @@ -57,7 +57,6 @@ return { local TERM_FLOAT = 1 local TERM_HORIZONTAL = 2 local TERM_VERTICAL = 3 - local TERM_LAZYGIT = 10 local function toggle_float() toggleterm.toggle(TERM_FLOAT, nil, nil, 'float') @@ -71,22 +70,6 @@ return { toggleterm.toggle(TERM_VERTICAL, nil, nil, 'vertical') end - local lazygit = nil - if vim.fn.executable('lazygit') == 1 then - local Terminal = require('toggleterm.terminal').Terminal - lazygit = Terminal:new { - cmd = 'lazygit', - count = TERM_LAZYGIT, - direction = 'float', - hidden = true, - float_opts = { - border = 'curved', - }, - } - else - vim.notify('lazygit not found in PATH. Install it to use tg', vim.log.levels.WARN) - end - local map = vim.keymap.set map({ 'n', 'i', 't' }, '', toggle_float, { desc = 'Toggle floating terminal' }) @@ -94,13 +77,6 @@ return { map('n', 'th', toggle_horizontal, { desc = '[T]erminal horizontal' }) map('n', 'tv', toggle_vertical, { desc = '[T]erminal vertical' }) map('n', 'tt', 'TermSelect', { desc = '[T]erminal picker' }) - map('n', 'tg', function() - if lazygit then - lazygit:toggle() - else - vim.notify('lazygit is not available', vim.log.levels.WARN) - end - end, { desc = '[T]erminal lazygit' }) map('n', 'ts', function() vim.cmd.ToggleTermSendCurrentLine(TERM_FLOAT) end, { desc = '[T]erminal [s]end line' })