@@ -426,7 +426,19 @@ func! s:apply_icons() abort
426
426
if 0 == len (s: cb_map )
427
427
return
428
428
endif
429
- highlight clear Conceal
429
+ if has (' nvim' )
430
+ if ! exists (' s:ns_id' )
431
+ let s: ns_id = nvim_create_namespace (' dirvish.icons' )
432
+ endif
433
+ elseif v: version >= 901 && has (' textprop' )
434
+ if ! exists (' s:prop_type' )
435
+ let s: prop_type = ' dirvish.icons'
436
+ call prop_type_add (s: prop_type , {})
437
+ endif
438
+ else
439
+ highlight clear Conceal
440
+ endif
441
+
430
442
let i = 0
431
443
for f in getline (1 , ' $' )
432
444
let i += 1
@@ -438,10 +450,16 @@ func! s:apply_icons() abort
438
450
endif
439
451
endfor
440
452
if icon != ' '
441
- let isdir = (f [-1 :] == s: sep )
442
- let f = substitute (s: f (f ), escape (s: sep ,' \' ).' $' , ' ' , ' g' ) " Full path, trim slash.
443
- let tail_esc = escape (fnamemodify (f ,' :t' ).(isdir?(s: sep ):' ' ), ' [,*.^$~\' )
444
- exe ' syntax match DirvishColumnHead =\%' .i .' l^.\{-}\ze' .tail_esc.' $= conceal cchar=' .icon
453
+ if has (' nvim-0.8' )
454
+ call nvim_buf_set_extmark (0 , s: ns_id , i - 1 , 0 , #{virt_text: [[icon , ' DirvishColumnHead' ]], virt_text_pos: ' inline' })
455
+ elseif v: version >= 901 && has (' textprop' )
456
+ call prop_add (i , 1 , #{type : s: prop_type , text: icon })
457
+ else
458
+ let isdir = (f [-1 :] == s: sep )
459
+ let f = substitute (s: f (f ), escape (s: sep ,' \' ).' $' , ' ' , ' g' ) " Full path, trim slash.
460
+ let tail_esc = escape (fnamemodify (f ,' :t' ).(isdir?(s: sep ):' ' ), ' [,*.^$~\' )
461
+ exe ' syntax match DirvishColumnHead =\%' .i .' l^.\{-}\ze' .tail_esc.' $= conceal cchar=' .icon
462
+ endif
445
463
endif
446
464
endfor
447
465
endf
0 commit comments