11let s: Config = vital#fern#import (' Config' )
22let s: AsyncLambda = vital#fern#import (' Async.Lambda' )
33
4- let s: PATTERN = ' ^$~.*[]\'
4+ let s: ESCAPE_PATTERN = ' ^$~.*[]\'
55let s: STATUS_NONE = g: fern #STATUS_NONE
66let s: STATUS_COLLAPSED = g: fern #STATUS_COLLAPSED
77
@@ -15,19 +15,17 @@ function! fern#renderer#default#new() abort
1515 \}
1616endfunction
1717
18- function ! s: render (nodes, marks ) abort
18+ function ! s: render (nodes) abort
1919 let options = {
2020 \ ' leading' : g: fern #renderer#default#leading,
2121 \ ' root_symbol' : g: fern #renderer#default#root_symbol,
2222 \ ' leaf_symbol' : g: fern #renderer#default#leaf_symbol,
2323 \ ' expanded_symbol' : g: fern #renderer#default#expanded_symbol,
2424 \ ' collapsed_symbol' : g: fern #renderer#default#collapsed_symbol,
25- \ ' marked_symbol' : g: fern #renderer#default#marked_symbol,
26- \ ' unmarked_symbol' : g: fern #renderer#default#unmarked_symbol,
2725 \}
2826 let base = len (a: nodes [0 ].__key)
2927 let Profile = fern#profile#start (' fern#renderer#default#s:render' )
30- return s: AsyncLambda .map (copy (a: nodes ), { v , - > s: render_node (v , a: marks , base, options ) })
28+ return s: AsyncLambda .map (copy (a: nodes ), { v , - > s: render_node (v , base, options ) })
3129 \. finally ({ - > Profile () })
3230endfunction
3331
@@ -40,45 +38,46 @@ function! s:lnum(index) abort
4038endfunction
4139
4240function ! s: syntax () abort
43- syntax clear
4441 execute printf (
45- \ ' syntax match FernLeaf /^\s*%s/ ' ,
46- \ escape (g: fern #renderer#default#leaf_symbol , s: PATTERN ),
42+ \ ' syntax match FernRootSymbol /\%%1l%s/ nextgroup=FernRootText ' ,
43+ \ escape (g: fern #renderer#default#root_symbol , s: ESCAPE_PATTERN ),
4744 \)
4845 execute printf (
49- \ ' syntax match FernBranch /^\s*\%%(%s\|%s\).*/' ,
50- \ escape (g: fern #renderer#default#collapsed_symbol, s: PATTERN ),
51- \ escape (g: fern #renderer#default#expanded_symbol, s: PATTERN ),
46+ \ ' syntax match FernLeafSymbol /^\s*%s/ nextgroup=FernLeafText' ,
47+ \ escape (g: fern #renderer#default#leaf_symbol, s: ESCAPE_PATTERN ),
5248 \)
53- syntax match FernRoot / \% 1l.*/
5449 execute printf (
55- \ ' syntax match FernMarked /^%s.*/' ,
56- \ escape (g: fern #renderer#default#marked_symbol, s: PATTERN ),
50+ \ ' syntax match FernBranchSymbol /^\s*\%%(%s\|%s\)/ nextgroup=FernBranchText' ,
51+ \ escape (g: fern #renderer#default#collapsed_symbol, s: ESCAPE_PATTERN ),
52+ \ escape (g: fern #renderer#default#expanded_symbol, s: ESCAPE_PATTERN ),
5753 \)
54+ syntax match FernRootText / .*\z e .*$/ contained nextgroup =FernBadge
55+ syntax match FernLeafText / .*\z e .*$/ contained nextgroup =FernBadge
56+ syntax match FernBranchText / .*\z e .*$/ contained nextgroup =FernBadge
57+ syntax match FernBadge / .*/ contained
5858endfunction
5959
6060function ! s: highlight () abort
61- highlight default link FernRoot Directory
62- highlight default link FernLeaf Directory
63- highlight default link FernBranch Directory
64- highlight default link FernMarked Title
61+ highlight default link FernRootSymbol Directory
62+ highlight default link FernRootText Directory
63+ highlight default link FernLeafSymbol Directory
64+ highlight default link FernLeafText None
65+ highlight default link FernBranchSymbol Directory
66+ highlight default link FernBranchText Directory
6567endfunction
6668
67- function ! s: render_node (node, marks , base, options ) abort
68- let prefix = index (a: marks , a: node .__key) is # -1
69- \ ? a: options .unmarked_symbol
70- \ : a: options .marked_symbol
69+ function ! s: render_node (node, base, options ) abort
7170 let level = len (a: node .__key) - a: base
7271 if level is # 0
73- return prefix . a: options .root_symbol . a: node .label
72+ return a: options .root_symbol . a: node .label . ' ' . a: node .badge
7473 endif
7574 let leading = repeat (a: options .leading, level - 1 )
7675 let symbol = a: node .status is # s: STATUS_NONE
7776 \ ? a: options .leaf_symbol
7877 \ : a: node .status is # s: STATUS_COLLAPSED
7978 \ ? a: options .collapsed_symbol
8079 \ : a: options .expanded_symbol
81- return prefix . leading . symbol . a: node .label
80+ return leading . symbol . a: node .label . ' ' . a: node .badge
8281endfunction
8382
8483call s: Config .config (expand (' <sfile>:p' ), {
@@ -87,6 +86,15 @@ call s:Config.config(expand('<sfile>:p'), {
8786 \ ' leaf_symbol' : ' | ' ,
8887 \ ' collapsed_symbol' : ' |+ ' ,
8988 \ ' expanded_symbol' : ' |- ' ,
90- \ ' marked_symbol' : ' * ' ,
91- \ ' unmarked_symbol' : ' ' ,
9289 \} )
90+
91+ " Obsolete warnings
92+ if exists (' g:fern#renderer#default#marked_symbol' )
93+ call fern#util#obsolete (
94+ \ ' g:fern#renderer#default#marked_symbol' ,
95+ \ ' g:fern#mark_symbol' ,
96+ \)
97+ endif
98+ if exists (' g:fern#renderer#default#unmarked_symbol' )
99+ call fern#util#obsolete (' g:fern#renderer#default#unmarked_symbol' )
100+ endif
0 commit comments