Skip to content

Commit 5a4f5e6

Browse files
HerringtonDarkholmetiagofumo
authored andcommitted
optimize performance (#10)
* optimize performance
1 parent 0a61a24 commit 5a4f5e6

File tree

1 file changed

+26
-27
lines changed

1 file changed

+26
-27
lines changed

after/syntax/nerdtree.vim

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

402402

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

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-
412407
if exists('g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols["'.key.'"]')
413408
let icon = g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols[key]
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
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'
417412
endif
418413

419414
if !exists('g:NERDTreeDisableFileExtensionHighlight') && val != ''
420415
call s:X(icon_identifier, val, '', '')
421416
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'
422421
call s:X(label_identifier, val, '', '')
423422
endif
424423
endif
@@ -437,32 +436,32 @@ for [key, val] in items(s:file_node_exact_matches)
437436
endfor
438437

439438
for [key, val] in items(g:NERDTreeExactMatchHighlightColor)
440-
let label_identifier = 'nerdtreeExactMatchLabel_'.key
441439
let icon_identifier = 'nerdtreeExactMatchIcon_'.key
442-
let folder_identifier = 'nerdtreeExactMatchFolder_'.key
443440
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'
449441
if exists('g:WebDevIconsUnicodeDecorateFileNodesExactSymbols["'.key.'"]')
450442
let icon = g:WebDevIconsUnicodeDecorateFileNodesExactSymbols[key]
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
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'
454446
exec 'silent syn match '.folder_icon_identifier.' "\c['.icon.']\ze.*'.key.'\/" containedin=NERDTreeDir'
455-
exec 'hi def link '.folder_icon_identifier.' '.folder_identifier
447+
exec 'hi def link '.folder_icon_identifier.' NERDTreeDir'
456448
endif
457449

458450
if !exists('g:NERDTreeDisableExactMatchHighlight') && val != ''
459451
call s:X(icon_identifier, val, '', '')
460452
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'
461457
call s:X(label_identifier, val, '', '')
462458
endif
463459
if exists('g:NERDTreeHighlightFolders')
464460
call s:X(folder_icon_identifier, val, '', '')
465461
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'
466465
call s:X(folder_identifier, val, '', '')
467466
endif
468467
endif
@@ -483,25 +482,25 @@ endfor
483482

484483
for [key, val] in items(g:NERDTreePatternMatchHighlightColor)
485484
let suffix = substitute(key, '\W', '', 'g')
486-
let label_identifier = 'nerdtreePatternMatchLabel_'.suffix
487485
let icon_identifier = 'nerdtreePatternMatchIcon_'.suffix
488486
let sub_regexp = substitute(key, '\v\\@<!\.', s:characters, 'g')
489487
let exec_sub_regexp = substitute(sub_regexp, '\$$', '\\*$', '')
490488

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-
496489
if exists("g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['".key."']")
497490
let icon = g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols[key]
498-
exec 'syn match '.icon_identifier.' "\v\c\zs['.icon.']\ze.*'.sub_regexp.'" containedin=NERDTreeFile'
499-
exec 'hi def link '.icon_identifier.' '.label_identifier
491+
exec 'syn keyword '.icon_identifier.' '.icon.' containedin=NERDTreeFile'
492+
exec 'hi def link '.icon_identifier.' NERDTreeFile'
500493
endif
501494

502495
if !exists('g:NERDTreeDisablePatternMatchHighlight') && val != ''
503496
call s:X(icon_identifier, val, '', '')
504497
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+
505504
call s:X(label_identifier, val, '', '')
506505
endif
507506
endif

0 commit comments

Comments
 (0)