annotate vim/autoload/ludo.vim @ 430:71a080d4d83c

Vim stuff: Goyo writing mode, Ack with Ag.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 01 Apr 2018 22:44:59 -0700
parents 67f14a8c2304
children b7682004288d
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
430
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
19 let v:errmsg = "ludo: Error: ".a:msg
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
20 echohl ErrorMsg
430
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
21 echom v:errmsg
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
22 echohl None
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
23 endfunction
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
24
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 " Loads `pathogenrc` files in each bundle directory and, if found,
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 " builds an exclude list based on the glob patterns found in them.
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 "
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 function! ludo#setup_pathogen(bundle_dirs) abort
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 for bundle_dir in a:bundle_dirs
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
31 let l:rcfile = bundle_dir.'.pathogenrc'
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 if !filereadable(l:rcfile)
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
33 call ludo#trace("No bundle configuration file: ".l:rcfile)
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 continue
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
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 let l:included = []
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 let l:excluded = []
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
39 call ludo#trace("Reading bundle configuration file: ".l:rcfile)
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 let l:rclines = readfile(l:rcfile)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 for line in l:rclines
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 if line[0] == '#'
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 continue
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 if line[0] == '-'
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 let l:excls = glob(bundle_dir.'/'.line[1:], 1, 1)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 for excl in l:excls
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 let l:idx = index(l:included, excl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 if l:idx >= 0
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 call remove(l:included, l:idx)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 call add(l:excluded, excl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 else
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56 let l:incls = glob(bundle_dir.'/'.line, 1, 1)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57 for incl in l:incls
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 let l:idx = index(l:excluded, incl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59 if l:idx >= 0
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 call remove(l:excluded, l:idx)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62 call add(l:included, incl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
65 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
66
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
67 for excl in l:excluded
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
68 if isdirectory(excl)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
69 let l:excl_name = fnamemodify(excl, ':t')
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
70 call add(g:pathogen_disabled, l:excl_name)
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
71 endif
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
72 endfor
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
73 endfor
426
67f14a8c2304 Improve Vim configuration.
Ludovic Chabant <ludovic@chabant.com>
parents: 424
diff changeset
74 call ludo#trace("Exclude list: ".join(g:pathogen_disabled, ', '))
424
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
75 endfunction
d8086f81b9c8 Pathogen config files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
76
430
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
77 let s:ludo_revert = {}
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
78
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
79 function! ludo#on_goyo_enter()
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
80 let s:ludo_revert = {
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
81 \'spell': &spell,
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
82 \'copyindent': &copyindent,
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
83 \'smartindent': &smartindent,
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
84 \'autoindent': &autoindent,
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
85 \'list': &list,
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
86 \'showmode': &showmode,
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
87 \'showcmd': &showcmd,
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
88 \'scrolloff': &scrolloff,
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
89 \'complete': &complete,
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
90 \'background': &background
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
91 \}
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
92 set spell
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
93 set nocopyindent nosmartindent noautoindent nolist noshowmode noshowcmd
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
94 set scrolloff=999
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
95 set complete+=s
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
96 set bg=light
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
97 if !has('gui_running')
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
98 let g:solarized_termcolors=256
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
99 endif
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
100 endfunction
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
101
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
102 function! ludo#on_goyo_leave()
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
103 if len(s:ludo_revert) == 0
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
104 call ludo#error("Can't revert settings!")
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
105 return
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
106 endif
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
107 for [key, val] in items(s:ludo_revert)
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
108 execute 'let &'.key.' = '.string(val)
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
109 endfor
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
110 let s:ludo_revert = {}
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
111 endfunction
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
112
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
113 function! ludo#writingmode()
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
114 Goyo
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
115 endfunction
71a080d4d83c Vim stuff: Goyo writing mode, Ack with Ag.
Ludovic Chabant <ludovic@chabant.com>
parents: 426
diff changeset
116