motiejus/dotfiles

Unnamed repository; edit this file 'description' to name the repository.
git clone https://git.jakstys.lt/motiejus/dotfiles.git
Log | Tree | Refs | README | LICENSE

commit 10121f34f29afb28c3e1d3ac3df34026fe992f21 (tree)
parent f2956a923d40fde2d7b4212c04c70f0ab16dc7ff
Author: Tim Pope <code@tpope.net>
Date:   Sat, 13 Mar 2021 23:27:28 -0500

Remove Git dir checks on FileType events

In order for these checks to work, :filetype on must be invoked *after*
Fugitive is loaded.  Otherwise, the FileType event triggers before
FugitiveDetect() is called.

These file types are used almost exclusively inside of Git repositories,
and in the rare case they are not, we're not doing anything particularly
intrusive, so dropping the conditional should have little practical
impact.  An exception is fugitive#MapJumps(), which is designed to be
used exclusively with historical buffers, the status buffer, and
captured :Git output, so let's lock it down to those particular
workflows.

Diffstat:
Mautoload/fugitive.vim | 14+++++++++++++-
Mplugin/fugitive.vim | 21+++++++--------------
2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim @@ -2273,7 +2273,10 @@ function! s:TempReadPost(file) abort if has_key(s:temp_files, s:cpath(a:file)) let dict = s:temp_files[s:cpath(a:file)] setlocal nobuflisted - if has_key(dict, 'filetype') && dict.filetype !=# &l:filetype + if get(dict, 'filetype', '') ==# 'git' + call fugitive#MapJumps() + endif + if has_key(dict, 'filetype') let &l:filetype = dict.filetype endif setlocal foldmarker=<<<<<<<,>>>>>>> @@ -6117,6 +6120,9 @@ endfunction function! s:StatusCfile(...) abort let tree = s:Tree() + if empty(tree) + return [''] + endif let lead = s:cpath(tree, getcwd()) ? './' : tree . '/' let info = s:StageInfo() let line = getline('.') @@ -6146,6 +6152,9 @@ endfunction function! s:MessageCfile(...) abort let tree = s:Tree() + if empty(tree) + return '' + endif let lead = s:cpath(tree, getcwd()) ? './' : tree . '/' if getline('.') =~# '^.\=\trenamed:.* -> ' return lead . matchstr(getline('.'),' -> \zs.*') @@ -6172,6 +6181,9 @@ function! fugitive#MessageCfile() abort endfunction function! s:cfile() abort + if empty(FugitiveGitDir()) + return [] + endif try let myhash = s:DirRev(@%)[1] if len(myhash) diff --git a/plugin/fugitive.vim b/plugin/fugitive.vim @@ -363,27 +363,20 @@ augroup fugitive autocmd FileType netrw call FugitiveDetect(fnamemodify(get(b:, 'netrw_curdir', expand('<amatch>')), ':p')) autocmd FileType git - \ if len(FugitiveGitDir()) | - \ call fugitive#MapJumps() | - \ call fugitive#MapCfile() | - \ endif + \ call fugitive#MapCfile() autocmd FileType gitcommit - \ if len(FugitiveGitDir()) | - \ call fugitive#MapCfile('fugitive#MessageCfile()') | - \ endif + \ call fugitive#MapCfile('fugitive#MessageCfile()') autocmd FileType git,gitcommit - \ if len(FugitiveGitDir()) && &foldtext ==# 'foldtext()' | + \ if &foldtext ==# 'foldtext()' | \ setlocal foldtext=fugitive#Foldtext() | \ endif autocmd FileType fugitive - \ if len(FugitiveGitDir()) | - \ call fugitive#MapCfile('fugitive#StatusCfile()') | - \ endif + \ call fugitive#MapCfile('fugitive#StatusCfile()') autocmd FileType gitrebase \ let &l:include = '^\%(pick\|squash\|edit\|reword\|fixup\|drop\|[pserfd]\)\>' | - \ if len(FugitiveGitDir()) | - \ let &l:includeexpr = 'v:fname =~# ''^\x\{4,\}$'' ? FugitiveFind(v:fname) : ' . - \ (len(&l:includeexpr) ? &l:includeexpr : 'v:fname') | + \ if &l:includeexpr !~# 'Fugitive' | + \ let &l:includeexpr = 'v:fname =~# ''^\x\{4,\}$'' && len(FugitiveGitDir()) ? FugitiveFind(v:fname) : ' . + \ (len(&l:includeexpr) ? &l:includeexpr : 'v:fname') | \ endif | \ let b:undo_ftplugin = get(b:, 'undo_ftplugin', 'exe') . '|setl inex= inc='