aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjdhao <jdhao@hotmail.com>2021-08-07 02:32:12 +0800
committerjdhao <jdhao@hotmail.com>2021-08-07 02:32:12 +0800
commitd434627738c59473530d807cb645df6deb4c8e80 (patch)
treec6866fdfa0906ef5b8bf5243af0f6865e76e603c
parent0830dfcf90dc708330730808f2fd67f5b7f46ef3 (diff)
Fix: the loading condition for fugitive is wrong
We should load fugitive in the following two situations: + When we open nvim in a Git repository + When we are inside nvim and change the working directory to a Git reposity
-rw-r--r--autoload/utils.vim14
-rw-r--r--core/autocommands.vim5
-rw-r--r--lua/plugins.lua10
3 files changed, 20 insertions, 9 deletions
diff --git a/autoload/utils.vim b/autoload/utils.vim
index 9d84c9b..8ed401e 100644
--- a/autoload/utils.vim
+++ b/autoload/utils.vim
@@ -145,3 +145,17 @@ function! utils#Get_titlestr() abort
return l:title_str
endfunction
+
+" Check if we are inside a Git repo.
+function! utils#Inside_git_repo() abort
+ let res = system('git rev-parse --is-inside-work-tree')
+ if match(res, 'true') == -1
+ return v:false
+ else
+ " Manually trigger a speical user autocmd InGitRepo (to use it for
+ " lazyloading of fugitive by packer.nvim).
+ " See also https://github.com/wbthomason/packer.nvim/discussions/534.
+ doautocmd User InGitRepo
+ return v:true
+ endif
+endfunction
diff --git a/core/autocommands.vim b/core/autocommands.vim
index 1cc207a..2563ce7 100644
--- a/core/autocommands.vim
+++ b/core/autocommands.vim
@@ -89,4 +89,9 @@ function! s:quit_current_win() abort
quit
endif
endfunction
+
+augroup git_repo_check
+ autocmd!
+ autocmd VimEnter,DirChanged * call utils#Inside_git_repo()
+augroup END
"}
diff --git a/lua/plugins.lua b/lua/plugins.lua
index ccc01af..7daf987 100644
--- a/lua/plugins.lua
+++ b/lua/plugins.lua
@@ -178,15 +178,7 @@ require('packer').startup(
-- use 'airblade/vim-gitgutter'
-- Git command inside vim
- use {'tpope/vim-fugitive', cond =
- function()
- local res = vim.fn.system('git rev-parse --is-inside-work-tree')
- if string.find(res, 'true') then
- return true
- else
- return false
- end
- end}
+ use {'tpope/vim-fugitive', event = 'User InGitRepo'}
-- Better git log display
use {'rbong/vim-flog', require = 'tpope/vim-fugitive', cmd = {'Flog'}}