From dfa70cd540964217f115d823f139e6a3112cd712 Mon Sep 17 00:00:00 2001 From: Kadir YANIK Date: Wed, 9 Feb 2022 23:48:11 +0300 Subject: [PATCH] Added symlink support --- autoload/gitblame.vim | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/autoload/gitblame.vim b/autoload/gitblame.vim index cefdfd6..8314823 100644 --- a/autoload/gitblame.vim +++ b/autoload/gitblame.vim @@ -41,8 +41,8 @@ function! s:system(str, ...) return output endfunction -function! gitblame#commit_summary(file, line) - let git_blame = split(s:system('cd "$(dirname "'.a:file.'")"; git --no-pager blame "$(basename "'.a:file.'")" -L "$(basename "'.a:line.'")",+1 --porcelain'), "\n") +function! gitblame#commit_summary(file_dir, file_name, line) + let git_blame = split(s:system('cd "'.a:file_dir.'"; git --no-pager blame "'.a:file_name.'" -L "$(basename "'.a:line.'")",+1 --porcelain'), "\n") let l:shell_error = s:has_vimproc() ? vimproc#get_last_status() : v:shell_error if l:shell_error && ( git_blame[0] =~# '^fatal: Not a git repository' || git_blame[0] =~# '^fatal: cannot stat path' ) return {'error': 'Not a git repository'} @@ -75,8 +75,10 @@ endfunction function! gitblame#echo() let l:blank = ' ' let l:file = expand('%') + let l:file_dir = s:system('dirname "'.l:file.'" | xargs -i echo -n "{}"') + let l:file_name = s:system('readlink -n "'.l:file.'" || basename "'.l:file.'" | xargs -i echo -n "{}"') let l:line = line('.') - let l:gb = gitblame#commit_summary(l:file, l:line) + let l:gb = gitblame#commit_summary(l:file_dir, l:file_name, l:line) if has_key(l:gb, 'error') let l:echoMsg = '['.l:gb['error'].']' else