annotate vim/autoload/ludo.vim @ 426:67f14a8c2304

Improve Vim configuration.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 28 Mar 2018 20:07:30 -0700
parents d8086f81b9c8
children 71a080d4d83c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
1 let g:ludo_trace = 0
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
2
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
3 " Debug logging.
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
4 function! ludo#trace(msg) abort
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
5 if g:ludo_trace
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
6 echom a:msg
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
7 endif
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
8 endfunction
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
9
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
10 " Warning message.
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
11 function! ludo#warn(msg) abort
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
12 echohl WarningMsg
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
13 echomsg "ludo: Warning: ".a:msg
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
14 echohl None
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
15 endfunction
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
16
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
17 " Error message.
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
18 function! ludo#error(msg) abort
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
19 echohl ErrorMsg
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
20 echomsg "ludo: Error: ".a:msg
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
21 echohl None
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
22 endfunction
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
23
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 " Loads `pathogenrc` files in each bundle directory and, if found,
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 " builds an exclude list based on the glob patterns found in them.
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 "
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 function! ludo#setup_pathogen(bundle_dirs) abort
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 for bundle_dir in a:bundle_dirs
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
30 let l:rcfile = bundle_dir.'.pathogenrc'
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 if !filereadable(l:rcfile)
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
32 call ludo#trace("No bundle configuration file: ".l:rcfile)
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 continue
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 let l:included = []
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 let l:excluded = []
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
38 call ludo#trace("Reading bundle configuration file: ".l:rcfile)
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 let l:rclines = readfile(l:rcfile)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 for line in l:rclines
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 if line[0] == '#'
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 continue
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 if line[0] == '-'
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 let l:excls = glob(bundle_dir.'/'.line[1:], 1, 1)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 for excl in l:excls
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 let l:idx = index(l:included, excl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 if l:idx >= 0
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 call remove(l:included, l:idx)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 call add(l:excluded, excl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 else
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 let l:incls = glob(bundle_dir.'/'.line, 1, 1)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56 for incl in l:incls
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57 let l:idx = index(l:excluded, incl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 if l:idx >= 0
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59 call remove(l:excluded, l:idx)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61 call add(l:included, incl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
65
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
66 for excl in l:excluded
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
67 if isdirectory(excl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
68 let l:excl_name = fnamemodify(excl, ':t')
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
69 call add(g:pathogen_disabled, l:excl_name)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
70 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
71 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
72 endfor
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
73 call ludo#trace("Exclude list: ".join(g:pathogen_disabled, ', '))
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
74 endfunction
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
75