Skip to content

Commit afbcd5f

Browse files
committed
Fix shelf file with its directory
1 parent a5e1f7b commit afbcd5f

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

autoload/project/git.vim

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ let s:default_folder_name = 'Default'
1919
let s:untracked_folder_name = 'Untracked'
2020
let s:staged_folder_name = 'Staged'
2121
let s:unmerged_folder_name = 'Unmerged'
22+
2223
let s:shelf_folder_prefix = '📚'
24+
let s:shelf_path_spliter = '#'
25+
let s:shelf_path_file_spliter = '@'
26+
2327
let s:changed_files = []
2428
let s:untracked_files = []
2529
let s:staged_files = []
@@ -823,20 +827,20 @@ function! s:ShelfFile() range
823827
endif
824828

825829
for file in files
826-
" TODO: fix file under a directory abc/def/name.txt
827830
let segments = split(file, '/\|\\')
828831
let diff_cmd = s:GetDiffCmd(file)
829832
if len(segments) == 1
830833
let cmd = diff_cmd.' > '.folder.'/'.file.'.diff'
831834
else
832-
let directory = segments[:-2]
835+
let dir = segments[:-2]
833836
let filename = segments[-1]
834-
let diff_file = join(directory, '_').'@'.filename
837+
let diff_file = join(dir, s:shelf_path_spliter)
838+
\.s:shelf_path_file_spliter.filename
835839
let cmd = diff_cmd.' > '.folder.'/'.diff_file.'.diff'
836840
endif
837841
call project#RunShellCmd(cmd)
838842
if v:shell_error
839-
return
843+
break
840844
endif
841845
endfor
842846

@@ -1307,10 +1311,15 @@ function! s:GetShelfFileDisplay(file, prefix = ' ')
13071311
" sign_mark is used by s:HighlightFiles
13081312
let sign_mark = ''
13091313
let splitter = '|'
1310-
13111314
let icon = project#GetIcon(a:file)
1312-
1313-
return a:prefix.sign_mark.icon.splitter.a:file.splitter.' '
1315+
let segments = split(a:file, s:shelf_path_file_spliter)
1316+
if len(segments) == 1
1317+
return a:prefix.sign_mark.icon.splitter.a:file.splitter.' '
1318+
else
1319+
let dir = substitute(segments[0], s:shelf_path_spliter, '/', '')
1320+
let filename = segments[1]
1321+
return a:prefix.sign_mark.icon.splitter.filename.splitter.' '.dir
1322+
endif
13141323
endfunction
13151324

13161325
function! s:UpdateChangelist(run_git = 0)

0 commit comments

Comments
 (0)