dblume commited on 2023-12-12 10:58:49
Showing 1 changed files, with 19 additions and 1 deletions.
| ... | ... |
@@ -193,12 +193,27 @@ function! GitBlame() |
| 193 | 193 |
endif |
| 194 | 194 |
else |
| 195 | 195 |
let l:fname = expand('%')
|
| 196 |
+ let l:hash = '' |
|
| 197 |
+ " Show fnames will have ':' in them. |
|
| 198 |
+ if stridx(l:fname, ':') != -1 |
|
| 199 |
+ let l:fname_parts = split(l:fname, ':') |
|
| 200 |
+ let l:fname = l:fname_parts[-1] |
|
| 201 |
+ let l:hash = split(l:fname_parts[0], ' ')[-1] |
|
| 202 |
+ endif |
|
| 203 |
+ if strlen(l:hash) |
|
| 204 |
+ let l:bufname = 'git blame ' . l:hash . ' -- ' . l:fname |
|
| 205 |
+ if !ShowBufInNewTab(l:bufname) |
|
| 206 |
+ exec 'tabnew | r! git blame ' . l:hash . ' -- ' . shellescape(l:fname) |
|
| 207 |
+ exec 'silent :file ' . fnameescape(l:bufname) |
|
| 208 |
+ endif |
|
| 209 |
+ else |
|
| 196 | 210 |
let l:bufname = 'git blame -- ' . l:fname |
| 197 | 211 |
if !ShowBufInNewTab(l:bufname) |
| 198 | 212 |
exec 'tabnew | r! git blame -- ' . shellescape(l:fname) |
| 199 | 213 |
exec 'silent :file ' . fnameescape(l:bufname) |
| 200 | 214 |
endif |
| 201 | 215 |
endif |
| 216 |
+ endif |
|
| 202 | 217 |
0d_ |
| 203 | 218 |
call winrestview(l:currentView) |
| 204 | 219 |
setl buftype=nofile |
| ... | ... |
@@ -221,15 +236,18 @@ function! GitShow(commit_or_file) |
| 221 | 236 |
" We lie here (' -- ') to have a filename the other git commands can use.
|
| 222 | 237 |
exec 'silent :file ' . fnameescape(l:bufname) |
| 223 | 238 |
endif |
| 239 |
+ 0d_ |
|
| 224 | 240 |
else |
| 241 |
+ let l:currentView = winsaveview() |
|
| 225 | 242 |
let l:bufname = 'git show ' . l:hash . ':' . l:fname |
| 226 | 243 |
if !ShowBufInNewTab(l:bufname) |
| 227 | 244 |
exec 'tabnew | r! git show ' . l:hash . ':' . shellescape(l:fname) |
| 228 | 245 |
exec 'silent :file ' . fnameescape(l:bufname) |
| 229 | 246 |
endif |
| 247 |
+ 0d_ |
|
| 248 |
+ call winrestview(l:currentView) |
|
| 230 | 249 |
endif |
| 231 | 250 |
setl buftype=nofile |
| 232 |
- 0d_ |
|
| 233 | 251 |
else |
| 234 | 252 |
echo l:hash . ' is not a git hash.' |
| 235 | 253 |
endif |
| 236 | 254 |