dblume commited on 2023-06-07 09:49:30
Showing 1 changed files, with 10 additions and 4 deletions.
Show does "git show HASH" to display commit message ShowFile does "git show HASH:fname" to display old version of file
... | ... |
@@ -164,25 +164,31 @@ function! GitBlame() |
164 | 164 |
endfunction |
165 | 165 |
command Blame :call GitBlame() |
166 | 166 |
|
167 |
-function! GitShow() |
|
167 |
+function! GitShow(commit_or_file) |
|
168 | 168 |
let l:fname = expand('%') |
169 | 169 |
let l:hash = expand('<cword>') |
170 | 170 |
if l:hash =~ '^[0-9a-f]\{7,40}$' |
171 | 171 |
if stridx(l:fname, ' -- ') != -1 |
172 | 172 |
let l:fname = split(l:fname, ' -- ')[-1] |
173 | 173 |
endif |
174 |
+ if a:commit_or_file != "file" |
|
174 | 175 |
" Have Show show all the affected files, so don't actually use "--" |
175 | 176 |
" exec 'tabnew | r! git show ' . l:hash . ' -- ' . shellescape(l:fname) |
176 | 177 |
exec 'tabnew | r! git show ' . l:hash |
177 |
- setl buftype=nofile |
|
178 |
- 0d_ |
|
179 | 178 |
" We lie here (' -- ') to have a filename the other git commands can use. |
180 | 179 |
exec 'silent :file git show ' . l:hash . ' -- ' . l:fname |
180 |
+ else |
|
181 |
+ exec 'tabnew | r! git show ' . l:hash . ':' . shellescape(l:fname) |
|
182 |
+ exec 'silent :file git show ' . l:hash . ':' . l:fname |
|
183 |
+ endif |
|
184 |
+ setl buftype=nofile |
|
185 |
+ 0d_ |
|
181 | 186 |
else |
182 | 187 |
echo l:hash . ' is not a git hash.' |
183 | 188 |
endif |
184 | 189 |
endfunction |
185 |
-command Show :call GitShow() |
|
190 |
+command Show :call GitShow("commit") |
|
191 |
+command ShowFile :call GitShow("file") |
|
186 | 192 |
|
187 | 193 |
function! GitDiff() |
188 | 194 |
let l:fname = expand('%:.') |
189 | 195 |