clean up and add some ducumentation

This commit is contained in:
thefux
2022-03-06 15:05:18 +01:00
4 changed files with 77 additions and 49 deletions

View File

@@ -94,3 +94,28 @@ If you have `neovim-remote` and don't want `lazygit.nvim` to use it, you can dis
```vim ```vim
let g:lazygit_use_neovim_remote = 0 let g:lazygit_use_neovim_remote = 0
``` ```
###Telescope Plugin
the telescope Plugin is used to track all git repository visited in one nvim session.
__why a telescope Plugin__ ?
Assuming you have one or more submodule(s) in your project and you want to commit changes in both the submodule(s)
and the main repo. Though switching between submodules and main repo is not strait forward. My solution was at first,
1. open a file inside the submodule
2. open lazygit
3. do commit
4. then open a file in the main repo
5. open lazygit
6. do commit
that was really and ennoying for me
so I though about traking all the repo I visited an I can choose from the list which one I'd like to commit in.
``` lua
require('telescope').load_extension('lazygit_telescope')
```
``` lua
autocmd BufEnter * :lua require('lazygit.utils').project_root_dir()
```

View File

@@ -9,25 +9,17 @@ LAZYGIT_BUFFER = nil
LAZYGIT_LOADED = false LAZYGIT_LOADED = false
vim.g.lazygit_opened = 0 vim.g.lazygit_opened = 0
local function clean_up_after_exit()
-- Close the window where the LAZYGIT_BUFFER is
vim.cmd('silent! :q')
LAZYGIT_BUFFER = nil
LAZYGIT_LOADED = false
vim.g.lazygit_opened = 0
-- make sure to update current open buffer after closing the window
--
vim.cmd('silent! :checktime')
end
--- on_exit callback function to delete the open buffer when lazygit exits in a neovim terminal --- on_exit callback function to delete the open buffer when lazygit exits in a neovim terminal
local function on_exit(job_id, code, event) local function on_exit(job_id, code, event)
if code ~= 0 then if code ~= 0 then
return return
end end
clean_up_after_exit() vim.cmd('silent! :q')
LAZYGIT_BUFFER = nil
LAZYGIT_LOADED = false
vim.g.lazygit_opened = 0
vim.cmd('silent! :checktime')
end end
--- Call lazygit --- Call lazygit

View File

@@ -29,7 +29,7 @@ local function get_root()
local cwd = vim.loop.cwd() local cwd = vim.loop.cwd()
local status, job = pcall(require, 'plenary.job') local status, job = pcall(require, 'plenary.job')
if not status then if not status then
local gitdir = fn.system('git rev-parse --show-toplevel') return fn.system('git rev-parse --show-toplevel')
end end
local gitroot_job = job:new({ local gitroot_job = job:new({
@@ -39,12 +39,12 @@ local function get_root()
cwd=cwd cwd=cwd
}) })
local _, code = gitroot_job:sync() local path, code = gitroot_job:sync()
if (code ~= 0) then if (code ~= 0) then
return nil return nil
end end
return fn.getcwd(0, 0) return table.concat(path, "")
end end
--- Get project_root_dir for git repository --- Get project_root_dir for git repository
@@ -56,9 +56,13 @@ local function project_root_dir()
end end
local root = get_root() local root = get_root()
if root == nil then
return nil
end
local cmd = string.format('cd "%s" && git rev-parse --show-toplevel', fn.fnamemodify(fn.resolve(fn.expand('%:p')), ':h'), root)
-- try symlinked file location instead -- try symlinked file location instead
local gitdir = fn.system( local gitdir = fn.system(cmd)
'cd "' .. fn.fnamemodify(fn.resolve(fn.expand('%:p')), ':h') .. '" && git rev-parse --show-toplevel')
local isgitdir = fn.matchstr(gitdir, '^fatal:.*') == '' local isgitdir = fn.matchstr(gitdir, '^fatal:.*') == ''
if isgitdir then if isgitdir then

View File

@@ -8,13 +8,14 @@ local lazygit_utils = require("lazygit.utils")
local function open_lazygit(prompt_buf) local function open_lazygit(prompt_buf)
local entry = action_state.get_selected_entry() local entry = action_state.get_selected_entry()
local cmd = [[lua require"lazygit".lazygit(nil)]]
cmd = cmd:format(entry.value:gsub("%s", ""))
vim.fn.execute('cd ' .. entry.value) vim.fn.execute('cd ' .. entry.value)
local cmd = [[lua require"lazygit".lazygit(nil)]]
vim.api.nvim_command(cmd) vim.api.nvim_command(cmd)
vim.cmd('stopinsert') vim.cmd('stopinsert')
vim.cmd([[execute "normal i"]]) vim.cmd([[execute "normal i"]])
vim.fn.feedkeys('j')
vim.api.nvim_buf_set_keymap(0, 't', '<Esc>', '<Esc>', {noremap = true, silent = true}) vim.api.nvim_buf_set_keymap(0, 't', '<Esc>', '<Esc>', {noremap = true, silent = true})
end end
@@ -32,16 +33,22 @@ local lazygit_repos = function(opts)
local repos = {} local repos = {}
for _, v in pairs(lazygit_utils.lazygit_visited_git_repos) do for _, v in pairs(lazygit_utils.lazygit_visited_git_repos) do
if v == nil then
goto skip
end
local index = #repos + 1 local index = #repos + 1
-- retrieve git repo name
local entry = local entry =
{ {
idx = index, idx = index,
value = v:gsub("%s", ""), value = v:gsub("%s", ""),
-- retrieve git repo name
repo_name= v:gsub("%s", ""):match("^.+/(.+)$"), repo_name= v:gsub("%s", ""):match("^.+/(.+)$"),
} }
table.insert(repos, index, entry) table.insert(repos, index, entry)
::skip::
end end
pickers.new(opts or {}, { pickers.new(opts or {}, {