Skip to content

Commit 0ea7d9d

Browse files
committed
Revert "optimize performance (#10)"
Keyword match doesn't allow different colors for the same icon This reverts commit 5a4f5e6.
1 parent 5a4f5e6 commit 0ea7d9d

File tree

1 file changed

+27
-26
lines changed

1 file changed

+27
-26
lines changed

after/syntax/nerdtree.vim

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -401,23 +401,24 @@ endfor
401401

402402

403403
for [key, val] in items(g:NERDTreeExtensionHighlightColor)
404+
let label_identifier = 'nerdtreeFileExtensionLabel_'.key
404405
let icon_identifier = 'nerdtreeFileExtensionIcon_'.key
405406
let regexp = '\v'.s:characters.'+\.'.substitute(key, '\W', '\\\0', 'g')
406407

408+
exec 'silent syn match '.label_identifier.' "'.regexp.'$" containedin=NERDTreeFile'
409+
exec 'silent syn match '.label_identifier.' "'.regexp.'\*$" containedin=NERDTreeExecFile'
410+
exec 'hi def link '.label_identifier.' NERDTreeFile'
411+
407412
if exists('g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols["'.key.'"]')
408413
let icon = g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols[key]
409-
exec 'silent syn keyword '.icon_identifier.' '.icon.' containedin=NERDTreeFile'
410-
exec 'silent syn keyword '.icon_identifier.' '.icon.' containedin=NERDTreeExecFile'
411-
exec 'hi def link '.icon_identifier.' NERDTreeFile'
414+
exec 'silent syn match '.icon_identifier.' "\zs['.icon.']\ze.\+\.'.key.'$" containedin=NERDTreeFile'
415+
exec 'silent syn match '.icon_identifier.' "\zs['.icon.']\ze.\+\.'.key.'\*$" containedin=NERDTreeExecFile'
416+
exec 'hi def link '.icon_identifier.' '.label_identifier
412417
endif
413418

414419
if !exists('g:NERDTreeDisableFileExtensionHighlight') && val != ''
415420
call s:X(icon_identifier, val, '', '')
416421
if exists('g:NERDTreeFileExtensionHighlightFullName')
417-
let label_identifier = 'nerdtreeFileExtensionLabel_'.key
418-
exec 'silent syn match '.label_identifier.' "'.regexp.'$" containedin=NERDTreeFile'
419-
exec 'silent syn match '.label_identifier.' "'.regexp.'\*$" containedin=NERDTreeExecFile'
420-
exec 'hi def link '.label_identifier.' NERDTreeFile'
421422
call s:X(label_identifier, val, '', '')
422423
endif
423424
endif
@@ -436,32 +437,32 @@ for [key, val] in items(s:file_node_exact_matches)
436437
endfor
437438

438439
for [key, val] in items(g:NERDTreeExactMatchHighlightColor)
440+
let label_identifier = 'nerdtreeExactMatchLabel_'.key
439441
let icon_identifier = 'nerdtreeExactMatchIcon_'.key
442+
let folder_identifier = 'nerdtreeExactMatchFolder_'.key
440443
let folder_icon_identifier = 'nerdtreeExactMatchFolderIcon_'.key
444+
exec 'silent syn match '.label_identifier.' "\c'.key.'$" containedin=NERDTreeFile'
445+
exec 'silent syn match '.label_identifier.' "\c'.key.'\*$" containedin=NERDTreeExecFile'
446+
exec 'hi def link '.label_identifier.' NERDTreeFile'
447+
exec 'silent syn match '.folder_identifier.' "\v\c<'.key.'\ze\/" containedin=NERDTreeDir'
448+
exec 'hi def link '.folder_identifier.' NERDTreeDir'
441449
if exists('g:WebDevIconsUnicodeDecorateFileNodesExactSymbols["'.key.'"]')
442450
let icon = g:WebDevIconsUnicodeDecorateFileNodesExactSymbols[key]
443-
exec 'silent syn keyword '.icon_identifier.' '.icon.' containedin=NERDTreeFile'
444-
exec 'silent syn keyword '.icon_identifier.' '.icon.' containedin=NERDTreeExecFile'
445-
exec 'hi def link '.icon_identifier.' NERDTreeFile'
451+
exec 'silent syn match '.icon_identifier.' "\c['.icon.']\ze.*'.key.'$" containedin=NERDTreeFile'
452+
exec 'silent syn match '.icon_identifier.' "\c['.icon.']\ze.*'.key.'\*$" containedin=NERDTreeExecFile'
453+
exec 'hi def link '.icon_identifier.' '.label_identifier
446454
exec 'silent syn match '.folder_icon_identifier.' "\c['.icon.']\ze.*'.key.'\/" containedin=NERDTreeDir'
447-
exec 'hi def link '.folder_icon_identifier.' NERDTreeDir'
455+
exec 'hi def link '.folder_icon_identifier.' '.folder_identifier
448456
endif
449457

450458
if !exists('g:NERDTreeDisableExactMatchHighlight') && val != ''
451459
call s:X(icon_identifier, val, '', '')
452460
if exists('g:NERDTreeExactMatchHighlightFullName')
453-
let label_identifier = 'nerdtreeExactMatchLabel_'.key
454-
exec 'silent syn match '.label_identifier.' "\c'.key.'$" containedin=NERDTreeFile'
455-
exec 'silent syn match '.label_identifier.' "\c'.key.'\*$" containedin=NERDTreeExecFile'
456-
exec 'hi def link '.label_identifier.' NERDTreeFile'
457461
call s:X(label_identifier, val, '', '')
458462
endif
459463
if exists('g:NERDTreeHighlightFolders')
460464
call s:X(folder_icon_identifier, val, '', '')
461465
if exists('g:NERDTreeHighlightFoldersFullName')
462-
let folder_identifier = 'nerdtreeExactMatchFolder_'.key
463-
exec 'silent syn match '.folder_identifier.' "\v\c<'.key.'\ze\/" containedin=NERDTreeDir'
464-
exec 'hi def link '.folder_identifier.' NERDTreeDir'
465466
call s:X(folder_identifier, val, '', '')
466467
endif
467468
endif
@@ -482,25 +483,25 @@ endfor
482483

483484
for [key, val] in items(g:NERDTreePatternMatchHighlightColor)
484485
let suffix = substitute(key, '\W', '', 'g')
486+
let label_identifier = 'nerdtreePatternMatchLabel_'.suffix
485487
let icon_identifier = 'nerdtreePatternMatchIcon_'.suffix
486488
let sub_regexp = substitute(key, '\v\\@<!\.', s:characters, 'g')
487489
let exec_sub_regexp = substitute(sub_regexp, '\$$', '\\*$', '')
488490

491+
exec 'syn match '.label_identifier.' "\v\c'.sub_regexp.'" containedin=NERDTreeFile'
492+
exec 'syn match '.label_identifier.' "\v\c'.exec_sub_regexp.'" containedin=NERDTreeFile'
493+
" TODO: handle executable file
494+
exec 'hi def link '.label_identifier.' NERDTreeFile'
495+
489496
if exists("g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['".key."']")
490497
let icon = g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols[key]
491-
exec 'syn keyword '.icon_identifier.' '.icon.' containedin=NERDTreeFile'
492-
exec 'hi def link '.icon_identifier.' NERDTreeFile'
498+
exec 'syn match '.icon_identifier.' "\v\c\zs['.icon.']\ze.*'.sub_regexp.'" containedin=NERDTreeFile'
499+
exec 'hi def link '.icon_identifier.' '.label_identifier
493500
endif
494501

495502
if !exists('g:NERDTreeDisablePatternMatchHighlight') && val != ''
496503
call s:X(icon_identifier, val, '', '')
497504
if exists('g:NERDTreePatternMatchHighlightFullName')
498-
let label_identifier = 'nerdtreePatternMatchLabel_'.suffix
499-
exec 'syn match '.label_identifier.' "\v\c'.sub_regexp.'" containedin=NERDTreeFile'
500-
exec 'syn match '.label_identifier.' "\v\c'.exec_sub_regexp.'" containedin=NERDTreeFile'
501-
" TODO: handle executable file
502-
exec 'hi def link '.label_identifier.' NERDTreeFile'
503-
504505
call s:X(label_identifier, val, '', '')
505506
endif
506507
endif

0 commit comments

Comments
 (0)