annotate vim/autoload/ludo.vim @ 424:d8086f81b9c8

Pathogen config files.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 27 Mar 2018 21:34:25 -0700
parents
children 67f14a8c2304
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 " Loads `pathogenrc` files in each bundle directory and, if found,
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 " builds an exclude list based on the glob patterns found in them.
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 "
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 function! ludo#setup_pathogen(bundle_dirs) abort
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 for bundle_dir in a:bundle_dirs
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 let l:rcfile = bundle_dir.'/pathogenrc'
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 if !filereadable(l:rcfile)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 continue
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 let l:included = []
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 let l:excluded = []
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 let l:rclines = readfile(l:rcfile)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 for line in l:rclines
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 if line[0] == '#'
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 continue
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 if line[0] == '-'
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 let l:excls = glob(bundle_dir.'/'.line[1:], 1, 1)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 for excl in l:excls
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 let l:idx = index(l:included, excl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 if l:idx >= 0
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 call remove(l:included, l:idx)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 call add(l:excluded, excl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 else
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 let l:incls = glob(bundle_dir.'/'.line, 1, 1)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 for incl in l:incls
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 let l:idx = index(l:excluded, incl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 if l:idx >= 0
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 call remove(l:excluded, l:idx)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 call add(l:included, incl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 for excl in l:excluded
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 if isdirectory(excl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 let l:excl_name = fnamemodify(excl, ':t')
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 call add(g:pathogen_disabled, l:excl_name)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 endfunction
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49