Merge pull request #90 from yorik1984/main

Add highlighting groups and udpate border chars
This commit is contained in:
Dheepak Krishnamurthy
2023-05-20 17:33:07 -04:00
committed by GitHub
3 changed files with 98 additions and 19 deletions

View File

@@ -11,10 +11,38 @@ See [akinsho/nvim-toggleterm](https://github.com/akinsho/nvim-toggleterm.lua#cus
Install using [`vim-plug`](https://github.com/junegunn/vim-plug): Install using [`vim-plug`](https://github.com/junegunn/vim-plug):
```vim ```vim
" nvim v0.5.0 " nvim v0.7.2
Plug 'kdheepak/lazygit.nvim' Plug 'kdheepak/lazygit.nvim'
``` ```
Install using [`packer.nvim`](https://github.com/wbthomason/packer.nvim):
```lua
-- nvim v0.7.2
use({
"kdheepak/lazygit.nvim",
-- optional for floating window border decoration
requires = {
"nvim-lua/plenary.nvim",
},
})
```
Install using [`lazy.nvim`](https://github.com/folke/lazy.nvim):
```lua
-- nvim v0.8.0
require("lazy").setup({
{
"kdheepak/lazygit.nvim",
-- optional for floating window border decoration
dependencies = {
"nvim-lua/plenary.nvim",
},
},
})
```
Feel free to use any plugin manager. Feel free to use any plugin manager.
Just remember that if you are not using the latest neovim release, you will need to use [the `nvim-v0.4.3` branch](https://github.com/kdheepak/lazygit.vim/tree/nvim-v0.4.3). Just remember that if you are not using the latest neovim release, you will need to use [the `nvim-v0.4.3` branch](https://github.com/kdheepak/lazygit.vim/tree/nvim-v0.4.3).
Integration with `nvr` works better on the `main` branch. Integration with `nvr` works better on the `main` branch.
@@ -32,7 +60,7 @@ The following are configuration options and their defaults.
```vim ```vim
let g:lazygit_floating_window_winblend = 0 " transparency of floating window let g:lazygit_floating_window_winblend = 0 " transparency of floating window
let g:lazygit_floating_window_scaling_factor = 0.9 " scaling factor for floating window let g:lazygit_floating_window_scaling_factor = 0.9 " scaling factor for floating window
let g:lazygit_floating_window_corner_chars = ['╭', '╮', '', '╯'] " customize lazygit popup window corner characters let g:lazygit_floating_window_border_chars = ['╭','─', '╮', '', '╯','─', '╰', '│'] " customize lazygit popup window border characters
let g:lazygit_floating_window_use_plenary = 0 " use plenary.nvim to manage floating window if available let g:lazygit_floating_window_use_plenary = 0 " use plenary.nvim to manage floating window if available
let g:lazygit_use_neovim_remote = 1 " fallback to 0 if neovim-remote is not installed let g:lazygit_use_neovim_remote = 1 " fallback to 0 if neovim-remote is not installed
@@ -40,6 +68,17 @@ let g:lazygit_use_custom_config_file_path = 0 " config file path is evaluated if
let g:lazygit_config_file_path = '' " custom config file path let g:lazygit_config_file_path = '' " custom config file path
``` ```
```lua
vim.g.lazygit_floating_window_winblend = 0 -- transparency of floating window
vim.g.lazygit_floating_window_scaling_factor = 0.9 -- scaling factor for floating window
vim.g.lazygit_floating_window_border_chars = ['','', '', '', '','', '', ''] -- customize lazygit popup window border characters
vim.g.lazygit_floating_window_use_plenary = 0 -- use plenary.nvim to manage floating window if available
vim.g.lazygit_use_neovim_remote = 1 -- fallback to 0 if neovim-remote is not installed
vim.g.lazygit_use_custom_config_file_path = 0 -- config file path is evaluated if this value is 1
vim.g.lazygit_config_file_path = '' -- custom config file path
```
Call `:LazyGit` to start a floating window with `lazygit` in the current working directory. Call `:LazyGit` to start a floating window with `lazygit` in the current working directory.
And set up a mapping to call `:LazyGit`: And set up a mapping to call `:LazyGit`:
@@ -156,18 +195,40 @@ Instead, you can open it with telescope.
**How to use** **How to use**
Install the plugin using: Install using [`packer.nvim`](https://github.com/wbthomason/packer.nvim):
``` ```lua
-- nvim v0.7.2
use({ use({
"nvim-telescope/telescope.nvim", "kdheepak/lazygit.nvim",
requires = { { "nvim-lua/plenary.nvim" }, { "kdheepak/lazygit.nvim" } }, requires = {
"nvim-telescope/telescope.nvim",
"nvim-lua/plenary.nvim",
},
config = function() config = function()
require("telescope").load_extension("lazygit") require("telescope").load_extension("lazygit")
end, end,
}) })
``` ```
Install using [`lazy.nvim`](https://github.com/folke/lazy.nvim):
```lua
-- nvim v0.8.0
require("lazy").setup({
{
"kdheepak/lazygit.nvim",
dependencies = {
"nvim-telescope/telescope.nvim",
"nvim-lua/plenary.nvim"
},
config = function()
require("telescope").load_extension("lazygit")
end,
},
})
```
Lazy loading `lazygit.nvim` for telescope functionality is not supported. Open an issue if you wish to have this feature. Lazy loading `lazygit.nvim` for telescope functionality is not supported. Open an issue if you wish to have this feature.
If you are not using Packer, to load the telescope extension, you have to add this line to your configuration: If you are not using Packer, to load the telescope extension, you have to add this line to your configuration:
@@ -190,3 +251,10 @@ Once you have loaded the extension, you can invoke the plugin using:
```lua ```lua
lua require("telescope").extensions.lazygit.lazygit() lua require("telescope").extensions.lazygit.lazygit()
``` ```
### Highlighting groups
| Highlight Group | Default Group | Description |
| ------------------| --------------| -----------------------------------------|
| **LazyGitFloat** | **_Normal_** | Float terminal foreground and background |
| **LazyGitBorder** | **_Normal_** | Float terminal border |

View File

@@ -1,6 +1,5 @@
local api = vim.api local api = vim.api
--- open floating window with nice borders --- open floating window with nice borders
local function open_floating_window() local function open_floating_window()
local floating_window_scaling_factor = vim.g.lazygit_floating_window_scaling_factor local floating_window_scaling_factor = vim.g.lazygit_floating_window_scaling_factor
@@ -34,20 +33,20 @@ local function open_floating_window()
local opts = { style = 'minimal', relative = 'editor', row = row, col = col, width = width, height = height } local opts = { style = 'minimal', relative = 'editor', row = row, col = col, width = width, height = height }
local topleft, topright, botleft, botright local topleft, top, topright, right, botright, bot, botleft, left
local corner_chars = vim.g.lazygit_floating_window_corner_chars local window_chars = vim.g.lazygit_floating_window_border_chars
if type(corner_chars) == 'table' and #corner_chars == 4 then if type(window_chars) == 'table' and #window_chars == 8 then
topleft, topright, botleft, botright = unpack(corner_chars) topleft, top, topright, right, botright, bot, botleft, left = unpack(window_chars)
else else
topleft, topright, botleft, botright = '', '', '', '' topleft, top, topright, right, botright, bot, botleft, left = '','', '', '', '','', '', ''
end end
local border_lines = { topleft .. string.rep('', width) .. topright } local border_lines = { topleft .. string.rep(top, width) .. topright }
local middle_line = '' .. string.rep(' ', width) .. '' local middle_line = left .. string.rep(' ', width) .. right
for i = 1, height do for _ = 1, height do
table.insert(border_lines, middle_line) table.insert(border_lines, middle_line)
end end
table.insert(border_lines, botleft .. string.rep('', width) .. botright) table.insert(border_lines, botleft .. string.rep(bot, width) .. botright)
-- create a unlisted scratch buffer for the border -- create a unlisted scratch buffer for the border
local border_buffer = api.nvim_create_buf(false, true) local border_buffer = api.nvim_create_buf(false, true)
@@ -56,7 +55,8 @@ local function open_floating_window()
api.nvim_buf_set_lines(border_buffer, 0, -1, true, border_lines) api.nvim_buf_set_lines(border_buffer, 0, -1, true, border_lines)
-- create border window -- create border window
local border_window = api.nvim_open_win(border_buffer, true, border_opts) local border_window = api.nvim_open_win(border_buffer, true, border_opts)
vim.cmd('set winhl=NormalFloat:Normal') vim.api.nvim_set_hl(0, "LazyGitBorder", { link = "Normal", default = true })
vim.cmd('set winhl=NormalFloat:LazyGitBorder')
-- create a unlisted scratch buffer -- create a unlisted scratch buffer
if LAZYGIT_BUFFER == nil or vim.fn.bufwinnr(LAZYGIT_BUFFER) == -1 then if LAZYGIT_BUFFER == nil or vim.fn.bufwinnr(LAZYGIT_BUFFER) == -1 then
@@ -71,6 +71,8 @@ local function open_floating_window()
vim.cmd('setlocal bufhidden=hide') vim.cmd('setlocal bufhidden=hide')
vim.cmd('setlocal nocursorcolumn') vim.cmd('setlocal nocursorcolumn')
vim.api.nvim_set_hl(0, "LazyGitFloat", { link = "Normal", default = true })
vim.cmd('setlocal winhl=NormalFloat:LazyGitFloat')
vim.cmd('set winblend=' .. vim.g.lazygit_floating_window_winblend) vim.cmd('set winblend=' .. vim.g.lazygit_floating_window_winblend)
-- use autocommand to ensure that the border_buffer closes at the same time as the main buffer -- use autocommand to ensure that the border_buffer closes at the same time as the main buffer

View File

@@ -19,8 +19,17 @@ if !exists('g:lazygit_use_neovim_remote')
let g:lazygit_use_neovim_remote = executable('nvr') ? 1 : 0 let g:lazygit_use_neovim_remote = executable('nvr') ? 1 : 0
endif endif
if !exists('g:lazygit_floating_window_corner_chars') if exists('g:lazygit_floating_window_corner_chars')
let g:lazygit_floating_window_corner_chars = ['╭', '╮', '╰', '╯'] echohl WarningMsg
echomsg "`g:lazygit_floating_window_corner_chars` is deprecated. Please use `g:lazygit_floating_window_border_chars` instead."
echohl None
if !exists('g:lazygit_floating_window_border_chars')
let g:lazygit_floating_window_border_chars = g:lazygit_floating_window_corner_chars
endif
endif
if !exists('g:lazygit_floating_window_border_chars')
let g:lazygit_floating_window_border_chars = ['╭','─', '╮', '│', '╯','─', '╰', '│']
endif endif
" if lazygit_use_custom_config_file_path is set to 1 the " if lazygit_use_custom_config_file_path is set to 1 the