Skip to content

Commit 299c6ee

Browse files
author
Gaspar Chilingarov
committed
add configurable settings for VimIDE
1 parent 423e11a commit 299c6ee

4 files changed

Lines changed: 150 additions & 178 deletions

File tree

autoload/vimide.vim

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
"
2+
"
3+
"
4+
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
14+
15+
call vimide#elixir#boot()
16+
17+
if g:vimide_install_shortcuts | call vimide#setShortcuts() | endif
18+
endfunction " }}}
19+
20+
function! vimide#setIndentSettings() "{{{
21+
set autoindent
22+
set cindent
23+
set smartindent
24+
endfunction "}}}
25+
26+
function! vimide#setSearchSettings() "{{{
27+
set incsearch
28+
set nohls
29+
nmap n nzz
30+
nmap N Nzz
31+
endfunction "}}}
32+
33+
function! vimide#setCompletitionSettings() "{{{
34+
set noinfercase
35+
set noerrorbells
36+
endfunction "}}}
37+
38+
function! vimide#setVimUndoSettings() "{{{
39+
let undoDir = $HOME . "/.vimundo"
40+
if !isdirectory(undoDir)
41+
call mkdir(undoDir, "p")
42+
endif
43+
44+
set undodir=undoDir
45+
endfunction "}}}
46+
47+
function! vimide#setVimBackupSettings() "{{{
48+
let backupDir = $HOME . "/.vimbackup"
49+
if !isdirectory(backupDir)
50+
call mkdir(backupDir, "p")
51+
endif
52+
53+
set backupdir=backupDir
54+
set writebackup
55+
set backup
56+
endfunction "}}}
57+
58+
function! vimide#setVimDiffSettings() "{{{
59+
set diffopt=iwhite
60+
endfunction "}}}
61+
62+
function! vimide#setFoldsSettings() "{{{
63+
if g:vimide_global_enable
64+
com! VimIDEToggleFold call vimide#toggleFold()
65+
else
66+
com! -buffer VimIDEToggleFold call vimide#toggleFold()
67+
endif
68+
endfunction "}}}
69+
70+
function! vimide#setRestoreSettings() " {{{
71+
if g:vimide_global_enable
72+
augroup vimideRestore
73+
au!
74+
au BufReadPost * call vimide#restorePosition()
75+
augroup END
76+
else
77+
augroup vimideRestore
78+
au!
79+
au BufReadPost <buffer> call vimide#restorePosition()
80+
augroup END
81+
endif
82+
endfunction " }}}
83+
84+
function! vimide#setShortcuts() " {{{
85+
noremap <F3> :VimIDEToggleFold<CR>
86+
endfunction " }}}
87+
88+
" ######################################################################
89+
" internal functions
90+
91+
function! vimide#toggleFold() "{{{
92+
if foldlevel('.') == 0
93+
normal! l
94+
else
95+
if foldclosed('.') < 0
96+
. foldclose
97+
else
98+
. foldopen
99+
endif
100+
endif
101+
" Clear status line
102+
echo
103+
endfunction "}}}
104+
105+
function! vimide#restorePosition() " {{{
106+
if line("'.") > 0
107+
if line("'.") <= line("$")
108+
exe("norm `.zz")
109+
if foldclosed('.') >= 0
110+
. foldopen
111+
endif
112+
else
113+
exe "norm $"
114+
endif
115+
else
116+
if line("'\"") > 0
117+
if line("'\"") <= line("$")
118+
exe("norm '\"zz")
119+
if foldclosed('.') >= 0
120+
. foldopen
121+
endif
122+
else
123+
exe "norm $"
124+
endif
125+
endif
126+
endif
127+
endf " }}}

autoload/vimide/elixir.vim

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
function vimide#elixir#boot()
3+
endfunction

ftplugin/elixir.vim

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,6 @@
11
let s:path = fnamemodify(resolve(expand('<sfile>:p')), ':h:h')
22
let s:bundle_path = s:path."/bundle"
33

4-
" general vim settings
5-
set updatetime=500
6-
set autoindent
7-
set cindent
8-
set smartindent
9-
set noinfercase
10-
set noerrorbells
11-
12-
set incsearch
13-
set nohls
14-
154
" tab formatting settings - automatically provided by vim-sleuth
165

176
" ####################################################################
@@ -137,7 +126,6 @@ nmap <C-@> :CtrlPTagbar<CR>
137126
nmap <Leader>l :CtrlPLine<CR>
138127
139128

140-
141129
" ####################################################################
142130
" Integration with Tabularize
143131

@@ -177,57 +165,6 @@ imap <C-k><C-[> <C-k>[
177165
imap <C-k><C-]> <C-k>]
178166
179167

180-
181-
function! RestorePos()
182-
if line("'.") > 0
183-
if line("'.") <= line("$")
184-
exe("norm `.zz")
185-
if foldclosed('.') >= 0
186-
. foldopen
187-
endif
188-
else
189-
exe "norm $"
190-
endif
191-
else
192-
if line("'\"") > 0
193-
if line("'\"") <= line("$")
194-
exe("norm '\"zz")
195-
if foldclosed('.') >= 0
196-
. foldopen
197-
endif
198-
else
199-
exe "norm $"
200-
endif
201-
endif
202-
endif
203-
endf
204-
205-
au BufReadPost * call RestorePos()
206-
207-
" Toggle fold state between closed and opened with the space bar
208-
" If there is no fold at current line, just moves forward.
209-
" If it is present, reverse it's state.
210-
function! ToggleFold()
211-
if foldlevel('.') == 0
212-
normal! l
213-
else
214-
if foldclosed('.') < 0
215-
. foldclose
216-
else
217-
. foldopen
218-
endif
219-
endif
220-
" Clear status line
221-
echo
222-
endfunction
223-
noremap <F3> :call ToggleFold()<CR>
224-
225-
nmap n nzz
226-
nmap N Nzz
227-
228-
set showmatch
229-
set matchtime=2
230-
231168
map <Leader>trailing :%s/\s*$//<CR>
232169
map <Leader>$ :%s/\s*$//<CR>
233170
@@ -241,14 +178,6 @@ imap <F2> <Esc>:w<CR>a
241178
map <C-K><C-w> :%s#\<<c-r><c-w>\>#
242179
map <C-K><C-a> :%s#\<<c-r><c-a>\>#
243180
244-
set diffopt=iwhite
245-
set undofile
246-
set undodir=~/.vimundo/
247-
248-
set backupdir=~/.vimbackup
249-
set writebackup
250-
set backup
251-
252181
" delete buffer and keep split
253182
cab bdd bp\|bd #
254183

plugin/vim-ide-elixir.vim

Lines changed: 20 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -5,113 +5,26 @@
55
let s:path = fnamemodify(resolve(expand('<sfile>:p')), ':h:h')
66
let s:bundle_path = s:path."/bundle"
77

8+
if !exists('g:vimide_global_enable') | let g:vimide_global_enable = 0 | en
9+
if !exists('g:vimide_manage_indents') | let g:vimide_manage_indents = 1 | en
10+
if !exists('g:vimide_manage_search') | let g:vimide_manage_search = 1 | en
11+
if !exists('g:vimide_manage_completition') | let g:vimide_manage_completition = 1 | en
812

9-
"" for now load by placing this in .vimrc
10-
"" find a way to do it from inside module while being loaded
11-
"" runtime bundle/vim-pathogen/autoload/pathogen.vim
12-
"" execute pathogen#infect("bundle/{}", "bundle/vim-ide-elixir/bundle/{}")
13-
"
14-
""let s:modules = ["vim-desert-programming", "vim-elixir"]
15-
"
16-
"" we have pathogen as plugin manager
17-
""if exists("g:loaded_pathogen")
18-
"" execute pathogen#infect(s:bundle_path."/{}")
19-
"" "runtime(s:bundle_path."/vim-desert-programming")
20-
""endif
21-
"
22-
"
23-
"function! Tag_transform(tags)
24-
" " remove OTP callbacks from ordinary function list
25-
" call filter(a:tags, ' !(v:val.fields.kind == "f" && v:val.name =~ "\\v(handle_call|handle_info|handle_cast|init|terminate)") ')
26-
"
27-
" function! Arity_extract(idx, tag)
28-
" if a:tag.fields.kind == 'f' || a:tag.fields.kind == 'g'
29-
" let args_string = substitute(a:tag.pattern, "^.*defp\\?[ \t]*".a:tag.name."[ \t]*", "", "")
30-
" let args_string = substitute(args_string, "do[ \t]*\\\\[$]$", "", "") " multiline
31-
"" TODO: remove
32-
"" if a:tag.pattern =~ "defp reply"
33-
"" debug echo("asd")
34-
"" endif
35-
" let args_string = substitute(args_string, ")\\([ \t]*when.*\\)\\?,[ \t]*do.*\\\\[$]$", ")", "")
36-
" let args_string = substitute(args_string, "[ \t]*", "", "g")
37-
"
38-
" let args_len = len(args_string)
39-
"
40-
" if args_len == 0
41-
" let a:tag.name = a:tag.name."/0"
42-
" else
43-
" let old_args_len = -10000
44-
" while args_len != old_args_len
45-
" let args_string = substitute(args_string, "{[^}]*}", "", "g")
46-
" let args_string = substitute(args_string, "\\[[^]]*\\]", "", "g")
47-
" let old_args_len = args_len
48-
" let args_len = len(args_string)
49-
" endwhile
50-
"
51-
" let comma_count = len(substitute(args_string, "[^,]", "", "g"))
52-
" let a:tag.name = a:tag.name . "/" . (comma_count + 1)
53-
" endif
54-
"
55-
" return a:tag
56-
" else
57-
" return a:tag
58-
" endif
59-
" endfunction
60-
"
61-
" " replaces function names with function_name/arity notation
62-
" call map(a:tags, function('Arity_extract'))
63-
"
64-
" let seen_list = map(copy(a:tags), '[v:val.fields.kind, v:val.name, v:val.fields.line]')
65-
"
66-
" let seen_fnames = {}
67-
" for [kind, fname, line] in seen_list
68-
" if ! has_key(seen_fnames, kind.fname)
69-
" let seen_fnames[kind.fname] = line
70-
" endif
71-
" endfor
72-
"
73-
" " leaves only first definition of function with same arity
74-
" function! Filter_fun(seen_hash, idx, tag)
75-
" let key = a:tag.fields.kind . a:tag.name
76-
" let line = a:tag.fields.line
77-
"
78-
" return a:seen_hash[key] == line
79-
" endfunction
80-
"
81-
" call filter(a:tags, function('Filter_fun', [seen_fnames]))
82-
"
83-
" return a:tags
84-
"endfunction
85-
"
86-
"let g:tagbar_type_elixir = {
87-
" \ 'ctagstype' : 'elixir',
88-
" \ 'deffile' : s:path . '/extras/elixir-ctags/.ctags',
89-
" \ 'transform': function("Tag_transform"),
90-
" \ 'kinds' : [
91-
" \ 'm:modules:1',
92-
" \ 'O:OTP callbacks',
93-
" \ 't:tests',
94-
" \ 'f:functions (public)',
95-
" \ 'g:functions (private)',
96-
" \ 'c:callbacks',
97-
" \ 'd:delegates',
98-
" \ 'e:exceptions',
99-
" \ 'i:implementations',
100-
" \ 'a:macros',
101-
" \ 'o:operators',
102-
" \ 's:structs',
103-
" \ 'p:protocols',
104-
" \ 'r:records',
105-
" \ 'T:types',
106-
" \ 'z:foo'
107-
" \ ]
108-
"\ }
109-
"
110-
"set updatetime=500
111-
"
112-
"" keyboard shortcuts
113-
"nmap <F4> :TagbarToggle<CR>
114-
"nmap <C-@> :CtrlPTagbar<CR>
115-
"nmap <Leader>l :CtrlPLine<CR>
13+
if !exists('&undodir')
14+
if !exists('g:vimide_manage_vimundo') | let g:vimide_manage_vimundo = 1 | en
15+
else
16+
let g:vimide_manage_vimundo = 0
17+
endif
18+
19+
if !exists('&backupdir')
20+
if !exists('g:vimide_manage_vimbackup') | let g:vimide_manage_vimbackup = 1 | en
21+
else
22+
let g:vimide_manage_vimbackup = 0
23+
end
11624

25+
if !exists('g:vimide_manage_vimdiff') | let g:vimide_manage_vimdiff = 1 | en
26+
if !exists('g:vimide_manage_folds') | let g:vimide_manage_folds = 1 | en
27+
if !exists('g:vimide_manage_restore') | let g:vimide_manage_restore = 1 | en
28+
if !exists('g:vimide_install_shortcuts') | let g:vimide_install_shortcuts = 1 | en
11729

30+
if g:vimide_global_enable | call vimide#boot() | en

0 commit comments

Comments
 (0)