22"
33"
44
5- function ! vimide#boot () " {{{
6- if g: vimide_manage_indents | call vimide#setIndentSettings () | endif
7- if g: vimide_manage_search | call vimide#setSearchSettings () | endif
8- if g: vimide_manage_completition | call vimide#setCompletitionSettings () | endif
9- if g: vimide_manage_vimundo | call vimide#setVimUndoSettings () | endif
10- if g: vimide_manage_vimbackup | call vimide#setVimBackupSettings () | endif
11- if g: vimide_manage_vimdiff | call vimide#setVimDiffSettings () | endif
12- if g: vimide_manage_folds | call vimide#setFoldsSettings () | endif
13- if g: vimide_manage_restore | call vimide#setRestoreSettings () | endif
5+ let s: VIMIDE_BOOT_FINISHED = 0
6+
7+ function ! vimide#setDefaults () " {{{
8+ call s: SetGlobal (' g:vimide_global_enable' , 0 )
9+ call s: SetGlobal (' g:vimide_manage_indents' , 1 )
10+ call s: SetGlobal (' g:vimide_manage_search' , 1 )
11+ call s: SetGlobal (' g:vimide_manage_completition' , 1 )
12+
13+ "
14+ " may use different themes for console/gui (console/gui)
15+ " set to '' disable managing themes
16+ call s: SetGlobal (' g:vimide_colorscheme' , ' hybrid/desert' )
17+
18+ call s: SetGlobal (' g:vimide_terminal' , ' xterm' )
19+
20+ if ! exists (' &undodir' )
21+ if ! exists (' g:vimide_manage_vimundo' ) | let g: vimide_manage_vimundo = 1 | en
22+ else
23+ let g: vimide_manage_vimundo = 0
24+ endif
25+
26+ if ! exists (' &backupdir' )
27+ if ! exists (' g:vimide_manage_vimbackup' ) | let g: vimide_manage_vimbackup = 1 | en
28+ else
29+ let g: vimide_manage_vimbackup = 0
30+ end
31+
32+ call s: SetGlobal (' g:vimide_manage_vimdiff' , 1 )
33+ call s: SetGlobal (' g:vimide_manage_folds' , 1 )
34+ call s: SetGlobal (' g:vimide_manage_restore' , 1 )
35+ call s: SetGlobal (' g:vimide_manage_airline' , 1 )
36+ call s: SetGlobal (' g:vimide_install_comment_shortcuts' , 1 )
37+ call s: SetGlobal (' g:vimide_install_other_shortcuts' , 1 )
38+ call s: SetGlobal (' g:vimide_manage_misc_settings' , 1 )
39+ endfunction " }}}
40+
41+ function ! vimide#init () " {{{
42+ " just do minimal amount of work necessary to tune plugins
43+ " which cannot be tuned later
44+ call vimide#setDefaults ()
45+
46+ if g: vimide_manage_airline | call vimide#setAirlineSettings (1 ) | endif
47+ endfunction " }}}
48+
49+ function ! vimide#boot (setGlobal) " {{{
50+ if ! s: VIMIDE_BOOT_FINISHED
51+ if g: vimide_colorscheme != ' ' | call vimide#setColorscheme (a: setGlobal ) | endif
52+ if g: vimide_manage_indents | call vimide#setIndentSettings (a: setGlobal ) | endif
53+ if g: vimide_manage_search | call vimide#setSearchSettings (a: setGlobal ) | endif
54+ if g: vimide_manage_completition | call vimide#setCompletitionSettings (a: setGlobal ) | endif
55+ if g: vimide_manage_vimundo | call vimide#setVimUndoSettings (a: setGlobal ) | endif
56+ if g: vimide_manage_vimbackup | call vimide#setVimBackupSettings (a: setGlobal ) | endif
57+ if g: vimide_manage_vimdiff | call vimide#setVimDiffSettings (a: setGlobal ) | endif
58+ if g: vimide_manage_folds | call vimide#setFoldsSettings (a: setGlobal ) | endif
59+ if g: vimide_manage_restore | call vimide#setRestoreSettings (a: setGlobal ) | endif
60+ if g: vimide_install_comment_shortcuts | call vimide#setCommentShortcuts (a: setGlobal ) | endif
61+ if g: vimide_install_other_shortcuts | call vimide#setOtherShortcuts (a: setGlobal ) | endif
62+ if g: vimide_manage_misc_settings | call vimide#setMiscSettings (a: setGlobal ) | endif
63+ let s: VIMIDE_BOOT_FINISHED = 1
64+ endif
1465
1566 if &filetype == ' elixir'
1667 call vimide#elixir#boot ()
1768 endif
1869
19- if g: vimide_install_shortcuts | call vimide#setShortcuts () | endif
2070endfunction " }}}
2171
22- function ! vimide#setIndentSettings () " {{{
23- set autoindent
24- set cindent
25- set smartindent
72+ function ! vimide#setIndentSettings (setGlobal) " {{{
73+ if a: setGlobal
74+ set autoindent
75+ set cindent
76+ set smartindent
77+ else
78+ setlocal autoindent
79+ setlocal cindent
80+ setlocal smartindent
81+ endif
2682endfunction " }}}
2783
28- function ! vimide#setSearchSettings () " {{{
29- set incsearch
30- set nohls
31- nmap n nzz
32- nmap N Nzz
84+ function ! vimide#setSearchSettings (setGlobal) " {{{
85+ if a: setGlobal
86+ set incsearch
87+ set nohls
88+ nnoremap n nzz
89+ nnoremap N Nzz
90+ else
91+ setlocal incsearch
92+ setlocal nohls
93+ nnoremap <buffer> n nzz
94+ nnoremap <buffer> N Nzz
95+ endif
96+ endfunction " }}}
97+
98+ function ! vimide#setColorscheme (setGlobal) " {{{
99+ let useScheme = g: vimide_colorscheme
100+ let doubleScheme = split (useScheme, ' /' )
101+ if len (doubleScheme) == 2
102+ if has (" gui_running" )
103+ let useScheme = doubleScheme[1 ]
104+ else
105+ let useScheme = doubleScheme[0 ]
106+ endif
107+ endif
108+ exe " colorscheme " . useScheme
33109endfunction " }}}
34110
35- function ! vimide#setCompletitionSettings () " {{{
36- set noinfercase
37- set noerrorbells
111+ function ! vimide#setCompletitionSettings (setGlobal) " {{{
112+ if a: setGlobal
113+ set noinfercase
114+ set noerrorbells
115+ else
116+ setlocal noinfercase
117+ setlocal noerrorbells
118+ endif
38119endfunction " }}}
39120
40- function ! vimide#setVimUndoSettings () " {{{
121+ function ! vimide#setVimUndoSettings (setGlobal ) " {{{
41122 let undoDir = $HOME . " /.vimundo"
42123 if ! isdirectory (undoDir)
43124 call mkdir (undoDir, " p" )
44125 endif
45126
46- set undodir = undoDir
127+ if a: setGlobal
128+ set undodir = undoDir
129+ else
130+ setlocal undodir = undoDir
131+ endif
47132endfunction " }}}
48133
49- function ! vimide#setVimBackupSettings () " {{{
134+ function ! vimide#setVimBackupSettings (setGlobal ) " {{{
50135 let backupDir = $HOME . " /.vimbackup"
51136 if ! isdirectory (backupDir)
52137 call mkdir (backupDir, " p" )
53138 endif
54139
55- set backupdir = backupDir
56- set writebackup
57- set backup
140+ if a: setGlobal
141+ set backupdir = backupDir
142+ set writebackup
143+ set backup
144+ else
145+ setlocal backupdir = backupDir
146+ setlocal writebackup
147+ setlocal backup
148+ endif
58149endfunction " }}}
59150
60- function ! vimide#setVimDiffSettings () " {{{
61- set diffopt = iwhite
151+ function ! vimide#setVimDiffSettings (setGlobal) " {{{
152+ if a: setGlobal
153+ set diffopt = iwhite
154+ else
155+ setlocal diffopt = iwhite
156+ endif
62157endfunction " }}}
63158
64- function ! vimide#setFoldsSettings () " {{{
65- if g: vimide_global_enable
159+ function ! vimide#setAirlineSettings (setGlobal) " {{{
160+ " can manage airline only globally
161+ if a: setGlobal
162+ set laststatus = 2
163+
164+ let g: airline #extensions#tabline #enabled = 0
165+ let g: airline #extensions#po #enabled = 0
166+
167+ let g: airline_powerline_fonts = 1
168+ let g: airline_mode_map = {
169+ \ ' __' : ' -' ,
170+ \ ' n' : ' N' ,
171+ \ ' i' : ' I' ,
172+ \ ' R' : ' R' ,
173+ \ ' c' : ' C' ,
174+ \ ' v' : ' V' ,
175+ \ ' V' : ' V' ,
176+ \ ' .' : ' V' ,
177+ \ ' s' : ' S' ,
178+ \ ' S' : ' S' ,
179+ \ }
180+
181+ let g: airline_left_sep = ' '
182+ let g: airline_left_alt_sep = ' '
183+ let g: airline_right_sep = ' '
184+ let g: airline_right_alt_sep = ' '
185+
186+ if ! exists (" g:airline_symbols" )
187+ let g: airline_symbols= {}
188+ endif
189+
190+ let g: airline_symbols .branch = ' '
191+ let g: airline_symbols .readonly = ' '
192+ let g: airline_symbols .linenr = ' '
193+ let g: airline_symbols .maxlinenr = ' '
194+
195+ let g: airline_section_z = airline#section#create ([' %3p%%' , ' linenr' , ' maxlinenr' , ' %3v' ])
196+ let g: airline_section_y = ' '
197+ let g: airline_section_x = ' '
198+ endif
199+ endfunction " }}}
200+
201+ function ! vimide#setFoldsSettings (setGlobal) " {{{
202+ if a: setGlobal
66203 com ! VimIDEToggleFold call vimide#toggleFold ()
67204 else
68205 com ! - buffer VimIDEToggleFold call vimide#toggleFold ()
69206 endif
70207endfunction " }}}
71208
72- function ! vimide#setRestoreSettings () " {{{
73- if g: vimide_global_enable
209+ function ! vimide#setRestoreSettings (setGlobal ) " {{{
210+ if a: setGlobal
74211 augroup vimideRestore
75212 au !
76213 au BufReadPost * call vimide#restorePosition ()
@@ -83,8 +220,81 @@ function! vimide#setRestoreSettings() " {{{
83220 endif
84221endfunction " }}}
85222
86- function ! vimide#setShortcuts () " {{{
87- noremap <F3> :VimIDEToggleFold<CR>
223+ function ! vimide#setCommentShortcuts (setGlobal) " {{{
224+ nnoremap <silent> <Plug> VimidecommentsToggle :call vimide#comments#wrap("n", "Toggle" )<CR>
225+ xnoremap <silent> <Plug> VimidecommentsToggle :call vimide#comments#wrap("x", "Toggle" )<CR>
226+ nnoremap <silent> <Plug> VimidecommentsNested :call vimide#comments#wrap("n", "Nested" )<CR>
227+ xnoremap <silent> <Plug> VimidecommentsNested :call vimide#comments#wrap("x", "Nested" )<CR>
228+ nnoremap <silent> <Plug> VimidecommentsUncomment :call vimide#comments#wrap("n", "Uncomment")<CR>
229+ xnoremap <silent> <Plug> VimidecommentsUncomment :call vimide#comments#wrap("x", "Uncomment")<CR>
230+
231+ " WARNING: there is no way to get NERDDefaultAlign per buffer, so messing with global
232+ " variable now.
233+ " we want comments to be nicely aligned under each other and not follow
234+ " indentation
235+ let g: NERDDefaultAlign = " left"
236+ " TODO: think of possibility leaving commented area in visual selected mode
237+ " (if it is good idea at all :)
238+ if a: setGlobal
239+ " TODO: copy/paste is recipe for disaster, make function to automate
240+ " bindings
241+ nmap <C-K><C-P> <Plug> VimidecommentsToggle
242+ nmap <C-K><C-[> <Plug> VimidecommentsNested
243+ nmap <C-K><C-]> <Plug> VimidecommentsUncomment
244+
245+ vmap <C-K><C-P> <Plug> VimidecommentsToggle
246+ vmap <C-K><C-[> <Plug> VimidecommentsNested
247+ vmap <C-K><C-]> <Plug> VimidecommentsUncomment
248+
249+ imap <C-K><C-P> <Plug> VimidecommentsToggle
250+ imap <C-K><C-[> <Plug> VimidecommentsNested
251+ imap <C-K><C-]> <Plug> VimidecommentsUncomment
252+ else
253+ nmap <buffer> <C-K><C-P> <Plug> VimidecommentsToggle
254+ nmap <buffer> <C-K><C-[> <Plug> VimidecommentsNested
255+ nmap <buffer> <C-K><C-]> <Plug> VimidecommentsUncomment
256+
257+ vmap <buffer> <C-K><C-P> <Plug> VimidecommentsToggle
258+ vmap <buffer> <C-K><C-[> <Plug> VimidecommentsNested
259+ vmap <buffer> <C-K><C-]> <Plug> VimidecommentsUncomment
260+
261+ imap <buffer> <C-K><C-P> <Plug> VimidecommentsToggle
262+ imap <buffer> <C-K><C-[> <Plug> VimidecommentsNested
263+ imap <buffer> <C-K><C-]> <Plug> VimidecommentsUncomment
264+ endif
265+ endfunction " }}}
266+
267+ function ! vimide#setOtherShortcuts (setGlobal) " {{{
268+ let isGvim = has (" gui_running" )
269+ if a: setGlobal
270+ noremap <F3> :VimIDEToggleFold<CR>
271+ noremap <silent> <Leader> trailing :call vimide#stripTrailingWhitespace()<CR>
272+ noremap <silent> <Leader> $ :call vimide#stripTrailingWhitespace()<CR>
273+
274+ if isGvim
275+ noremap map ZZ :w<CR> :bd<CR>
276+ exec " noremap <silent> <C-X> :silent !" . g: vimide_terminal . " &<CR>"
277+ end
278+ else
279+ noremap <buffer> <F3> :VimIDEToggleFold<CR>
280+ noremap <buffer> <silent> <Leader> trailing :call vimide#stripTrailingWhitespace()<CR>
281+ noremap <buffer> <silent> <Leader> $ :call vimide#stripTrailingWhitespace()<CR>
282+
283+ if isGvim
284+ noremap <buffer> map ZZ :w<CR> :bd<CR>
285+ exec " noremap <silent> <buffer> <C-X> :silent !" . g: vimide_terminal . " &<CR>"
286+ end
287+ endif
288+ endfunction " }}}
289+
290+ function ! vimide#setMiscSettings (setGlobal) " {{{
291+ " let isGvim = has("gui_running")
292+ if a: setGlobal
293+ set updatetime = 500
294+ " TODO: set guioptions-=T "remove toolbar until we know what useful buttons put
295+ " on it ;-)
296+
297+ endif
88298endfunction " }}}
89299
90300" ######################################################################
@@ -127,3 +337,22 @@ function! vimide#restorePosition() " {{{
127337 endif
128338 endif
129339endf " }}}
340+
341+ function ! vimide#stripTrailingWhitespace () " {{{
342+ " Save cursor position
343+ let l: save = winsaveview ()
344+ " Remove trailing whitespace
345+ % s /\s\+$/ /e
346+ " Move cursor to original position
347+ call winrestview (l: save )
348+ endfunction " }}}
349+
350+ function ! s: SetGlobal (name, default) " {{{
351+ if ! exists (a: name )
352+ if type (a: name ) == 0 || type (a: name ) == 5
353+ exec " let " . a: name . " = " . a: default
354+ elseif type (a: name ) == 1
355+ exec " let " . a: name . " = '" . escape (a: default , " \' " ) . " '"
356+ endif
357+ endif
358+ endfunction " }}}
0 commit comments