@@ -758,34 +758,44 @@ function! s:RenameFolder()
758758 echo
759759endfunction
760760
761- function ! s: RollbackFile ()
762- let file = s: GetCurrentFile ()
763- if empty (file )
761+ function ! s: RollbackFile () range
762+ let files = []
763+ for lnum in range (a: firstline , a: lastline )
764+ let file = s: GetFileByLine (lnum)
765+ if ! empty (file )
766+ call add (files , file )
767+ endif
768+ endfor
769+ if empty (files )
764770 return
765771 endif
766772
767- echo ' Rollback changes of ' .file .' ? (y/n) '
773+ echo ' Rollback changes of [' .join (files , ' , ' ).' ]? (y/n) '
774+ let saved_pos = getpos (' .' )
768775 if nr2char (getchar ()) == ' y'
769- if s: IsFileUntracked (file )
770- let cmd = ' rm "' .file .' "'
771- else
772- let cmd = ' git restore -- "' .file .' "'
773- endif
774- call project#RunShellCmd (cmd)
775- if v: shell_error
776- return
777- endif
778- call s: ShowStatus (1 )
779- call s: CloseBuffer (s: diff_buffer )
776+ for file in files
777+ if s: IsFileUntracked (file )
778+ let cmd = ' rm -r "' .file .' "'
779+ else
780+ let cmd = ' git restore -- "' .file .' "'
781+ endif
782+ call project#RunShellCmd (cmd)
783+ if v: shell_error
784+ return
785+ endif
786+ call s: ShowStatus (1 )
787+ call s: CloseBuffer (s: diff_buffer )
788+ endfor
780789 endif
790+ call setpos (' .' , saved_pos)
781791
782792 redraw
783793 echo
784794endfunction
785795
786796function ! s: IsFileUntracked (file )
787797 let cmd = ' git ls-files --error-unmatch "' .a: file .' "'
788- call project#RunShellCmd (cmd)
798+ call project#RunShellCmd (cmd, 0 )
789799 return v: shell_error
790800endfunction
791801
@@ -1258,6 +1268,7 @@ function! s:SetupChangelistBuffer()
12581268 call s: AddMapping (mappings.delete_changelist, ' <SID>DeleteFolder()' )
12591269 call s: AddMapping (mappings.rename_changelist, ' <SID>RenameFolder()' )
12601270 call s: AddMapping (mappings.rollback_file, ' <SID>RollbackFile()' )
1271+ call s: AddVisualMapping (mappings.rollback_file, ' <SID>RollbackFile()' )
12611272 call s: AddMapping (mappings.commit, ' <SID>Commit()' )
12621273 call s: AddVisualMapping (mappings.commit, ' <SID>Commit()' )
12631274 call s: AddMapping (mappings.pull, ' <SID>TryPull()' )
0 commit comments