summaryrefslogtreecommitdiff
path: root/.vim/pack/vendor/start/vim-devicons/plugin
diff options
context:
space:
mode:
authorSam Chudnick <sam@chudnick.com>2023-06-11 07:54:59 -0400
committerSam Chudnick <sam@chudnick.com>2023-06-11 07:54:59 -0400
commit3adcf542289a0883924ae9b9be8b898c36702c95 (patch)
treef02166ef4c95161ffa994eb1a3e5729c93c2c66b /.vim/pack/vendor/start/vim-devicons/plugin
parentdfcc303e7cc284a45f55bae81ed888dc256432b8 (diff)
Add some Vim plugins
Diffstat (limited to '.vim/pack/vendor/start/vim-devicons/plugin')
-rw-r--r--.vim/pack/vendor/start/vim-devicons/plugin/webdevicons.vim703
1 files changed, 703 insertions, 0 deletions
diff --git a/.vim/pack/vendor/start/vim-devicons/plugin/webdevicons.vim b/.vim/pack/vendor/start/vim-devicons/plugin/webdevicons.vim
new file mode 100644
index 0000000..596ec68
--- /dev/null
+++ b/.vim/pack/vendor/start/vim-devicons/plugin/webdevicons.vim
@@ -0,0 +1,703 @@
1" Version: 0.11.0
2" Webpage: https://github.com/ryanoasis/vim-devicons
3" Maintainer: Ryan McIntyre <ryanoasis@gmail.com>
4" License: see LICENSE
5
6let s:version = '0.11.0'
7let s:plugin_home = expand('<sfile>:p:h:h')
8
9" set scriptencoding after 'encoding' and when using multibyte chars
10scriptencoding utf-8
11
12" standard fix/safety: line continuation (avoiding side effects) {{{1
13"========================================================================
14let s:save_cpo = &cpo
15set cpo&vim
16
17" standard loading / not loading {{{1
18"========================================================================
19
20if exists('g:loaded_webdevicons')
21 finish
22endif
23
24let g:loaded_webdevicons = 1
25
26" config enable / disable settings {{{1
27"========================================================================
28
29""
30" Set the variable to the default value, only if variable is not defined.
31"
32" @param {string} var Variable name with its scope.
33" @param {*} default Default value for variable.
34""
35function! s:set(var, default) abort
36 if !exists(a:var)
37 if type(a:default)
38 execute 'let' a:var '=' string(a:default)
39 else
40 execute 'let' a:var '=' a:default
41 endif
42 endif
43endfunction
44
45call s:set('g:webdevicons_enable', 1)
46call s:set('g:webdevicons_enable_nerdtree', 1)
47call s:set('g:webdevicons_enable_unite ', 1)
48call s:set('g:webdevicons_enable_denite', 1)
49call s:set('g:webdevicons_enable_vimfiler', 1)
50call s:set('g:webdevicons_enable_ctrlp', 1)
51call s:set('g:webdevicons_enable_airline_tabline', 1)
52call s:set('g:webdevicons_enable_airline_statusline', 1)
53call s:set('g:webdevicons_enable_airline_statusline_fileformat_symbols', 1)
54call s:set('g:webdevicons_enable_flagship_statusline', 1)
55call s:set('g:webdevicons_enable_flagship_statusline_fileformat_symbols', 1)
56call s:set('g:webdevicons_enable_startify', 1)
57call s:set('g:webdevicons_conceal_nerdtree_brackets', 1)
58call s:set('g:DevIconsAppendArtifactFix', has('gui_running') ? 1 : 0)
59call s:set('g:DevIconsArtifactFixChar', ' ')
60
61" config options {{{1
62"========================================================================
63
64call s:set('g:WebDevIconsUnicodeDecorateFileNodes', 1)
65call s:set('g:WebDevIconsUnicodeDecorateFolderNodes', 1)
66call s:set('g:DevIconsEnableFoldersOpenClose', 0)
67call s:set('g:DevIconsEnableFolderPatternMatching', 1)
68call s:set('g:DevIconsEnableFolderExtensionPatternMatching', 0)
69call s:set('g:DevIconsEnableDistro', 1)
70call s:set('g:WebDevIconsUnicodeDecorateFolderNodesExactMatches', 1)
71call s:set('g:WebDevIconsUnicodeGlyphDoubleWidth', 1)
72call s:set('g:WebDevIconsNerdTreeBeforeGlyphPadding', ' ')
73call s:set('g:WebDevIconsNerdTreeAfterGlyphPadding', ' ')
74call s:set('g:WebDevIconsNerdTreeGitPluginForceVAlign', 1)
75call s:set('g:NERDTreeUpdateOnCursorHold', 1) " Obsolete: For backward compatibility
76call s:set('g:NERDTreeGitStatusUpdateOnCursorHold', 1)
77call s:set('g:WebDevIconsTabAirLineBeforeGlyphPadding', ' ')
78call s:set('g:WebDevIconsTabAirLineAfterGlyphPadding', '')
79
80" config defaults {{{1
81"========================================================================
82
83call s:set('g:WebDevIconsUnicodeDecorateFileNodesDefaultSymbol', '')
84call s:set('g:WebDevIconsUnicodeByteOrderMarkerDefaultSymbol', '')
85call s:set('g:WebDevIconsUnicodeDecorateFolderNodesDefaultSymbol', g:DevIconsEnableFoldersOpenClose ? '' : '')
86call s:set('g:WebDevIconsUnicodeDecorateFolderNodesSymlinkSymbol', '')
87call s:set('g:DevIconsDefaultFolderOpenSymbol', '')
88
89" functions {{{1
90"========================================================================
91
92" local functions {{{2
93"========================================================================
94
95" scope: local
96function s:getDistro()
97 if exists('s:distro')
98 return s:distro
99 endif
100
101 if has('bsd')
102 let s:distro = ''
103 return s:distro
104 endif
105
106 if g:DevIconsEnableDistro && executable('lsb_release')
107 let s:lsb = system('lsb_release -i')
108 if s:lsb =~# 'Arch'
109 let s:distro = ''
110 elseif s:lsb =~# 'Gentoo'
111 let s:distro = ''
112 elseif s:lsb =~# 'Ubuntu'
113 let s:distro = ''
114 elseif s:lsb =~# 'Cent'
115 let s:distro = ''
116 elseif s:lsb =~# 'Debian'
117 let s:distro = ''
118 elseif s:lsb =~# 'Dock'
119 let s:distro = ''
120 else
121 let s:distro = ''
122 endif
123 return s:distro
124 endif
125
126 let s:distro = ''
127 return s:distro
128endfunction
129
130" scope: local
131function s:isDarwin()
132 if exists('s:is_darwin')
133 return s:is_darwin
134 endif
135
136 if exists('g:WebDevIconsOS')
137 let s:is_darwin = g:WebDevIconsOS ==? 'Darwin'
138 return s:is_darwin
139 endif
140
141 if has('macunix')
142 let s:is_darwin = 1
143 return s:is_darwin
144 endif
145
146 if ! has('unix')
147 let s:is_darwin = 0
148 return s:is_darwin
149 endif
150
151 if system('uname -s') ==# "Darwin\n"
152 let s:is_darwin = 1
153 else
154 let s:is_darwin = 0
155 endif
156
157 return s:is_darwin
158endfunction
159
160" scope: local
161function! s:strip(input)
162 return substitute(a:input, '^\s*\(.\{-}\)\s*$', '\1', '')
163endfunction
164
165" scope: local
166function! s:setDictionaries()
167
168 let s:file_node_extensions = {
169 \ 'styl' : '',
170 \ 'sass' : '',
171 \ 'scss' : '',
172 \ 'htm' : '',
173 \ 'html' : '',
174 \ 'slim' : '',
175 \ 'haml' : '',
176 \ 'ejs' : '',
177 \ 'css' : '',
178 \ 'less' : '',
179 \ 'md' : '',
180 \ 'mdx' : '',
181 \ 'markdown' : '',
182 \ 'rmd' : '',
183 \ 'json' : '',
184 \ 'webmanifest' : '',
185 \ 'js' : '',
186 \ 'mjs' : '',
187 \ 'jsx' : '',
188 \ 'rb' : '',
189 \ 'gemspec' : '',
190 \ 'rake' : '',
191 \ 'php' : '',
192 \ 'py' : '',
193 \ 'pyc' : '',
194 \ 'pyo' : '',
195 \ 'pyd' : '',
196 \ 'coffee' : '',
197 \ 'mustache' : '',
198 \ 'hbs' : '',
199 \ 'conf' : '',
200 \ 'ini' : '',
201 \ 'yml' : '',
202 \ 'yaml' : '',
203 \ 'toml' : '',
204 \ 'bat' : '',
205 \ 'mk' : '',
206 \ 'jpg' : '',
207 \ 'jpeg' : '',
208 \ 'bmp' : '',
209 \ 'png' : '',
210 \ 'webp' : '',
211 \ 'gif' : '',
212 \ 'ico' : '',
213 \ 'twig' : '',
214 \ 'cpp' : '',
215 \ 'c++' : '',
216 \ 'cxx' : '',
217 \ 'cc' : '',
218 \ 'cp' : '',
219 \ 'c' : '',
220 \ 'cs' : '',
221 \ 'h' : '',
222 \ 'hh' : '',
223 \ 'hpp' : '',
224 \ 'hxx' : '',
225 \ 'hs' : '',
226 \ 'lhs' : '',
227 \ 'nix' : '',
228 \ 'lua' : '',
229 \ 'java' : '',
230 \ 'sh' : '',
231 \ 'fish' : '',
232 \ 'bash' : '',
233 \ 'zsh' : '',
234 \ 'ksh' : '',
235 \ 'csh' : '',
236 \ 'awk' : '',
237 \ 'ps1' : '',
238 \ 'ml' : 'λ',
239 \ 'mli' : 'λ',
240 \ 'diff' : '',
241 \ 'db' : '',
242 \ 'sql' : '',
243 \ 'dump' : '',
244 \ 'clj' : '',
245 \ 'cljc' : '',
246 \ 'cljs' : '',
247 \ 'edn' : '',
248 \ 'scala' : '',
249 \ 'go' : '',
250 \ 'dart' : '',
251 \ 'xul' : '',
252 \ 'sln' : '',
253 \ 'suo' : '',
254 \ 'pl' : '',
255 \ 'pm' : '',
256 \ 't' : '',
257 \ 'rss' : '',
258 \ 'f#' : '',
259 \ 'fsscript' : '',
260 \ 'fsx' : '',
261 \ 'fs' : '',
262 \ 'fsi' : '',
263 \ 'rs' : '',
264 \ 'rlib' : '',
265 \ 'd' : '',
266 \ 'erl' : '',
267 \ 'hrl' : '',
268 \ 'ex' : '',
269 \ 'exs' : '',
270 \ 'eex' : '',
271 \ 'leex' : '',
272 \ 'heex' : '',
273 \ 'vim' : '',
274 \ 'ai' : '',
275 \ 'psd' : '',
276 \ 'psb' : '',
277 \ 'ts' : '',
278 \ 'tsx' : '',
279 \ 'jl' : '',
280 \ 'pp' : '',
281 \ 'vue' : '﵂',
282 \ 'elm' : '',
283 \ 'swift' : '',
284 \ 'xcplayground' : '',
285 \ 'tex' : 'ﭨ',
286 \ 'r' : 'ﳒ',
287 \ 'rproj' : '鉶',
288 \ 'sol' : 'ﲹ',
289 \ 'pem' : ''
290 \}
291
292 let s:file_node_exact_matches = {
293 \ 'exact-match-case-sensitive-1.txt' : '1',
294 \ 'exact-match-case-sensitive-2' : '2',
295 \ 'gruntfile.coffee' : '',
296 \ 'gruntfile.js' : '',
297 \ 'gruntfile.ls' : '',
298 \ 'gulpfile.coffee' : '',
299 \ 'gulpfile.js' : '',
300 \ 'gulpfile.ls' : '',
301 \ 'mix.lock' : '',
302 \ 'dropbox' : '',
303 \ '.ds_store' : '',
304 \ '.gitconfig' : '',
305 \ '.gitignore' : '',
306 \ '.gitattributes' : '',
307 \ '.gitlab-ci.yml' : '',
308 \ '.bashrc' : '',
309 \ '.zshrc' : '',
310 \ '.zshenv' : '',
311 \ '.zprofile' : '',
312 \ '.vimrc' : '',
313 \ '.gvimrc' : '',
314 \ '_vimrc' : '',
315 \ '_gvimrc' : '',
316 \ '.bashprofile' : '',
317 \ 'favicon.ico' : '',
318 \ 'license' : '',
319 \ 'node_modules' : '',
320 \ 'react.jsx' : '',
321 \ 'procfile' : '',
322 \ 'dockerfile' : '',
323 \ 'docker-compose.yml' : '',
324 \ 'rakefile' : '',
325 \ 'config.ru' : '',
326 \ 'gemfile' : '',
327 \ 'makefile' : '',
328 \ 'cmakelists.txt' : '',
329 \ 'robots.txt' : 'ﮧ'
330 \}
331
332 let s:file_node_pattern_matches = {
333 \ '.*jquery.*\.js$' : '',
334 \ '.*angular.*\.js$' : '',
335 \ '.*backbone.*\.js$' : '',
336 \ '.*require.*\.js$' : '',
337 \ '.*materialize.*\.js$' : '',
338 \ '.*materialize.*\.css$' : '',
339 \ '.*mootools.*\.js$' : '',
340 \ '.*vimrc.*' : '',
341 \ 'Vagrantfile$' : ''
342 \}
343
344 if !exists('g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols')
345 let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols = {}
346 endif
347
348 if !exists('g:WebDevIconsUnicodeDecorateFileNodesExactSymbols')
349 " do not remove: exact-match-case-sensitive-*
350 let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols = {}
351 endif
352
353 if !exists('g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols')
354 let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols = {}
355 endif
356
357 " iterate to fix allow user overriding of specific individual keys in vimrc (only gvimrc was working previously)
358 for [key, val] in items(s:file_node_extensions)
359 if !has_key(g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols, key)
360 let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols[key] = val
361 endif
362 endfor
363
364 " iterate to fix allow user overriding of specific individual keys in vimrc (only gvimrc was working previously)
365 for [key, val] in items(s:file_node_exact_matches)
366 if !has_key(g:WebDevIconsUnicodeDecorateFileNodesExactSymbols, key)
367 let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols[key] = val
368 endif
369 endfor
370
371 " iterate to fix allow user overriding of specific individual keys in vimrc (only gvimrc was working previously)
372 for [key, val] in items(s:file_node_pattern_matches)
373 if !has_key(g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols, key)
374 let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols[key] = val
375 endif
376 endfor
377
378endfunction
379
380" scope: local
381function! s:setSyntax()
382 if g:webdevicons_enable_nerdtree == 1 && g:webdevicons_conceal_nerdtree_brackets == 1
383 augroup webdevicons_conceal_nerdtree_brackets
384 au!
385 autocmd FileType nerdtree syntax match hideBracketsInNerdTree "\]" contained conceal containedin=NERDTreeFlags
386 autocmd FileType nerdtree syntax match hideBracketsInNerdTree "\[" contained conceal containedin=NERDTreeFlags
387 autocmd FileType nerdtree syntax match hideBracketsInNerdTree "\]" contained conceal containedin=NERDTreeLinkFile
388 autocmd FileType nerdtree syntax match hideBracketsInNerdTree "\]" contained conceal containedin=NERDTreeLinkDir
389 autocmd FileType nerdtree syntax match hideBracketsInNerdTree "\[" contained conceal containedin=NERDTreeLinkFile
390 autocmd FileType nerdtree syntax match hideBracketsInNerdTree "\[" contained conceal containedin=NERDTreeLinkDir
391 autocmd FileType nerdtree setlocal conceallevel=3
392 autocmd FileType nerdtree setlocal concealcursor=nvic
393 augroup END
394 endif
395endfunction
396
397" scope: local
398" stole solution/idea from nerdtree-git-plugin :)
399function! s:setCursorHold()
400 if g:webdevicons_enable_nerdtree
401 augroup webdevicons_cursor_hold
402 autocmd CursorHold * silent! call s:CursorHoldUpdate()
403 augroup END
404 endif
405endfunction
406
407" scope: local
408" stole solution/idea from nerdtree-git-plugin :)
409function! s:CursorHoldUpdate()
410 if g:NERDTreeUpdateOnCursorHold != 1 || g:NERDTreeGitStatusUpdateOnCursorHold != 1
411 return
412 endif
413
414 if !exists('g:NERDTree') || !g:NERDTree.IsOpen()
415 return
416 endif
417
418 " Do not update when a special buffer is selected
419 if !empty(&l:buftype)
420 return
421 endif
422
423 " winnr need to make focus go to opened file
424 " CursorToTreeWin needed to avoid error on opening file
425 let l:winnr = winnr()
426 let l:altwinnr = winnr('#')
427
428 call g:NERDTree.CursorToTreeWin()
429 call b:NERDTree.root.refreshFlags()
430 call NERDTreeRender()
431
432 exec l:altwinnr . 'wincmd w'
433 exec l:winnr . 'wincmd w'
434endfunction
435
436" scope: local
437function! s:hardRefreshNerdTree()
438 if g:webdevicons_enable_nerdtree == 1 && g:webdevicons_conceal_nerdtree_brackets == 1 && g:NERDTree.IsOpen()
439 NERDTreeClose
440 NERDTree
441 endif
442endfunction
443
444" scope: local
445function! s:softRefreshNerdTree()
446 if g:webdevicons_enable_nerdtree == 1 && exists('g:NERDTree') && g:NERDTree.IsOpen()
447 NERDTreeToggle
448 NERDTreeToggle
449 endif
450endfunction
451
452" local initialization {{{2
453"========================================================================
454
455" scope: local
456function! s:initialize()
457 call s:setDictionaries()
458 call s:setSyntax()
459 call s:setCursorHold()
460
461 if exists('g:loaded_flagship') | call devicons#plugins#flagship#init() | endif
462 if exists('g:loaded_unite') && g:webdevicons_enable_unite | call devicons#plugins#unite#init() | endif
463 if exists('g:loaded_denite') && g:webdevicons_enable_denite | call devicons#plugins#denite#init() | endif
464 if exists('g:loaded_vimfiler') && g:webdevicons_enable_vimfiler | call devicons#plugins#vimfiler#init() | endif
465 if exists('g:loaded_ctrlp') && g:webdevicons_enable_ctrlp | call devicons#plugins#ctrlp#init() | endif
466 if exists('g:loaded_startify') && g:webdevicons_enable_startify | call devicons#plugins#startify#init() | endif
467endfunction
468
469
470" public functions {{{2
471"========================================================================
472
473" scope: public
474function! webdevicons#version()
475 return s:version
476endfunction
477
478" scope: public
479function! webdevicons#pluginHome()
480 return s:plugin_home
481endfunction
482
483" scope: public
484" allow the first version of refresh to now call softRefresh
485function! webdevicons#refresh()
486 call webdevicons#softRefresh()
487endfunction
488
489" scope: public
490function! webdevicons#hardRefresh()
491 call s:setSyntax()
492 call s:hardRefreshNerdTree()
493endfunction
494
495" scope: public
496function! webdevicons#softRefresh()
497 call s:setSyntax()
498 call s:softRefreshNerdTree()
499endfunction
500
501" a:1 (bufferName), a:2 (isDirectory)
502" scope: public
503function! WebDevIconsGetFileTypeSymbol(...) abort
504 if a:0 == 0
505 let fileNodeExtension = !empty(expand('%:e')) ? expand('%:e') : &filetype
506 let fileNode = expand('%:t')
507 let isDirectory = 0
508 else
509 let fileNodeExtension = fnamemodify(a:1, ':e')
510 let fileNode = fnamemodify(a:1, ':t')
511 if a:0 > 1
512 let isDirectory = a:2
513 else
514 let isDirectory = 0
515 endif
516 endif
517
518 if isDirectory == 0 || g:DevIconsEnableFolderPatternMatching
519
520 let symbol = g:WebDevIconsUnicodeDecorateFileNodesDefaultSymbol
521 let fileNodeExtension = tolower(fileNodeExtension)
522 let fileNode = tolower(fileNode)
523
524 for [pattern, glyph] in items(g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols)
525 if match(fileNode, pattern) != -1
526 let symbol = glyph
527 break
528 endif
529 endfor
530
531 if symbol == g:WebDevIconsUnicodeDecorateFileNodesDefaultSymbol
532 if has_key(g:WebDevIconsUnicodeDecorateFileNodesExactSymbols, fileNode)
533 let symbol = g:WebDevIconsUnicodeDecorateFileNodesExactSymbols[fileNode]
534 elseif ((isDirectory == 1 && g:DevIconsEnableFolderExtensionPatternMatching) || isDirectory == 0) && has_key(g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols, fileNodeExtension)
535 let symbol = g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols[fileNodeExtension]
536 elseif isDirectory == 1
537 let symbol = g:WebDevIconsUnicodeDecorateFolderNodesDefaultSymbol
538 endif
539 endif
540
541 else
542 let symbol = g:WebDevIconsUnicodeDecorateFolderNodesDefaultSymbol
543 endif
544
545 let artifactFix = s:DevIconsGetArtifactFix()
546
547 return symbol . artifactFix
548
549endfunction
550
551" scope: local
552" Temporary (hopefully) fix for glyph issues in gvim (proper fix is with the
553" actual font patcher)
554function! s:DevIconsGetArtifactFix()
555 if g:DevIconsAppendArtifactFix == 1
556 let artifactFix = g:DevIconsArtifactFixChar
557 else
558 let artifactFix = ''
559 endif
560
561 return artifactFix
562endfunction
563
564" scope: public
565function! WebDevIconsGetFileFormatSymbol(...)
566 let fileformat = ''
567 let bomb = ''
568
569 if (&bomb && g:WebDevIconsUnicodeByteOrderMarkerDefaultSymbol !=? '')
570 let bomb = g:WebDevIconsUnicodeByteOrderMarkerDefaultSymbol . ' '
571 endif
572
573 if &fileformat ==? 'dos'
574 let fileformat = ''
575 elseif &fileformat ==? 'unix'
576 let fileformat = s:isDarwin() ? '' : s:getDistro()
577 elseif &fileformat ==? 'mac'
578 let fileformat = ''
579 endif
580
581 let artifactFix = s:DevIconsGetArtifactFix()
582
583 return bomb . fileformat . artifactFix
584endfunction
585
586" for airline plugin {{{3
587"========================================================================
588
589" scope: public
590function! AirlineWebDevIcons(...)
591 let w:airline_section_x = get(w:, 'airline_section_x',
592 \ get(g:, 'airline_section_x', ''))
593 let w:airline_section_x .= ' %{WebDevIconsGetFileTypeSymbol()} '
594 let hasFileFormatEncodingPart = airline#parts#ffenc() !=? ''
595 if g:webdevicons_enable_airline_statusline_fileformat_symbols && hasFileFormatEncodingPart
596 let w:airline_section_y = ' %{&fenc . " " . WebDevIconsGetFileFormatSymbol()} '
597 endif
598endfunction
599
600if g:webdevicons_enable == 1 && exists('g:loaded_airline') && g:loaded_airline == 1 && g:webdevicons_enable_airline_statusline
601 call airline#add_statusline_func('AirlineWebDevIcons')
602endif
603
604if g:webdevicons_enable == 1 && g:webdevicons_enable_airline_tabline
605 " Store original formatter.
606 let g:_webdevicons_airline_orig_formatter = get(g:, 'airline#extensions#tabline#formatter', 'default')
607 let g:airline#extensions#tabline#formatter = 'webdevicons'
608endif
609
610" for nerdtree plugin {{{3
611"========================================================================
612
613" scope: public
614function! NERDTreeWebDevIconsRefreshListener(event)
615 let path = a:event.subject
616 let postPadding = g:WebDevIconsNerdTreeAfterGlyphPadding
617 let prePadding = g:WebDevIconsNerdTreeBeforeGlyphPadding
618 let hasGitFlags = (len(path.flagSet._flagsForScope('git')) > 0)
619 let hasGitNerdTreePlugin = (exists('g:loaded_nerdtree_git_status') == 1)
620 let artifactFix = s:DevIconsGetArtifactFix()
621
622 " align vertically at the same level: non git-flag nodes with git-flag nodes
623 if g:WebDevIconsNerdTreeGitPluginForceVAlign && !hasGitFlags && hasGitNerdTreePlugin
624 let prePadding .= ' '
625 endif
626
627 if !path.isDirectory
628 " Hey we got a regular file, lets get it's proper icon
629 let flag = prePadding . WebDevIconsGetFileTypeSymbol(path.str()) . postPadding
630
631 elseif path.isDirectory && g:WebDevIconsUnicodeDecorateFolderNodes == 1
632 " Ok we got a directory, some more tests and checks
633 let directoryOpened = 0
634
635 if g:DevIconsEnableFoldersOpenClose && len(path.flagSet._flagsForScope('webdevicons')) > 0
636 " did the user set different icons for open and close?
637
638 " isOpen is not available on the path listener directly
639 " but we added one via overriding particular keymappings for NERDTree
640 if has_key(path, 'isOpen') && path.isOpen == 1
641 let directoryOpened = 1
642 endif
643 endif
644
645 if g:WebDevIconsUnicodeDecorateFolderNodesExactMatches == 1
646 " Did the user enable exact matching of folder type/names
647 " think node_modules
648 if g:DevIconsEnableFoldersOpenClose && directoryOpened
649 " the folder is open
650 let flag = prePadding . g:DevIconsDefaultFolderOpenSymbol . artifactFix . postPadding
651 else
652 " the folder is not open
653 if path.isSymLink
654 " We have a symlink
655 let flag = prePadding . g:WebDevIconsUnicodeDecorateFolderNodesSymlinkSymbol . artifactFix . postPadding
656 else
657 " We have a regular folder
658 let flag = prePadding . WebDevIconsGetFileTypeSymbol(path.str(), path.isDirectory) . postPadding
659 endif
660 endif
661
662 else
663 " the user did not enable exact matching
664 if g:DevIconsEnableFoldersOpenClose && directoryOpened
665 " the folder is open
666 let flag = prePadding . g:DevIconsDefaultFolderOpenSymbol . artifactFix . postPadding
667 else
668 " the folder is not open
669 if path.isSymLink
670 " We have a symlink
671 let flag = prePadding . g:WebDevIconsUnicodeDecorateFolderNodesSymlinkSymbol . artifactFix . postPadding
672 else
673 " We have a regular folder
674 let flag = prePadding . g:WebDevIconsUnicodeDecorateFolderNodesDefaultSymbol . artifactFix . postPadding
675 endif
676 endif
677
678 endif
679
680 else
681 let flag = prePadding . ' ' . artifactFix . postPadding
682 endif
683
684 call path.flagSet.clearFlags('webdevicons')
685
686 if flag !=? ''
687 call path.flagSet.addFlag('webdevicons', flag)
688 endif
689
690endfunction
691
692" call setup after processing all the functions (to avoid errors) {{{1
693"========================================================================
694" had some issues with VimEnter, for now using:
695call s:initialize()
696
697" standard fix/safety: line continuation (avoiding side effects) {{{1
698"========================================================================
699let &cpo = s:save_cpo
700unlet s:save_cpo
701
702" modeline syntax:
703" vim: fdm=marker tabstop=2 softtabstop=2 shiftwidth=2 expandtab: