From 53b2c91f5da6c103647c106cc35419514ba83511 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sun, 26 Mar 2017 23:07:33 +0800 Subject: [PATCH 01/19] Add mapping api --- autoload/SpaceVim/api/vim/compatible.vim | 27 ++++++++++++++++++ autoload/SpaceVim/api/vim/mapping.vim | 35 ++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 autoload/SpaceVim/api/vim/compatible.vim create mode 100644 autoload/SpaceVim/api/vim/mapping.vim diff --git a/autoload/SpaceVim/api/vim/compatible.vim b/autoload/SpaceVim/api/vim/compatible.vim new file mode 100644 index 000000000..a39352fa5 --- /dev/null +++ b/autoload/SpaceVim/api/vim/compatible.vim @@ -0,0 +1,27 @@ +function! SpaceVim#api#vim#compatible#get() abort + return map({ + \ 'execute' : '', + \ }, + \ "function('s:' . v:key)" + \ ) +endfunction + +function! s:execute(cmd, ...) abort + if a:0 == 0 + let s = 'silent' + else + let s = a:1 + endif + redir => output + if s ==# 'silent' + silent execute a:cmd + elseif s ==# 'silent!' + silent! execute a:cmd + else + execute a:cmd + endif + redir END + return output +endfunction + +" vim:set et sw=2 cc=80: diff --git a/autoload/SpaceVim/api/vim/mapping.vim b/autoload/SpaceVim/api/vim/mapping.vim new file mode 100644 index 000000000..d387e51d2 --- /dev/null +++ b/autoload/SpaceVim/api/vim/mapping.vim @@ -0,0 +1,35 @@ +let s:VIM = SpaceVim#api#import('vim#compatible') + +function! SpaceVim#api#vim#mapping#get() abort + return map({ + \ 'map' : '', + \ }, + \ "function('s:' . v:key)" + \ ) +endfunction + +function! s:map(...) abort + if a:0 == 1 + return s:parser(s:VIM.execute(':map ' . a:1)) + endif + return [] +endfunction + +function! s:parser(rst) abort + let mappings = split(a:rst, "\n") + let mappings = map(mappings, 'split(v:val)') + let rst = [] + for mapping in mappings + if len(mapping) >= 3 + let mode = mapping[0] + let key = mapping[1] + let m = maparg(key, mode, 0, 1) + if !empty(m) + call add(rst, m) + endif + endif + endfor + return rst +endfunction + +" vim:set et sw=2 cc=80: From 1ab10311e0ca1f089d105fa9a8f059c3730b69dd Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sun, 2 Apr 2017 14:05:58 +0800 Subject: [PATCH 02/19] Close #367 --- autoload/SpaceVim/layers/lang/c.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/autoload/SpaceVim/layers/lang/c.vim b/autoload/SpaceVim/layers/lang/c.vim index be87d1b89..c929ad27e 100644 --- a/autoload/SpaceVim/layers/lang/c.vim +++ b/autoload/SpaceVim/layers/lang/c.vim @@ -47,6 +47,7 @@ function! SpaceVim#layers#lang#c#plugins() abort else call add(plugins, ['Rip-Rip/clang_complete']) endif + call add(plugins, ['lyuts/vim-rtags']) return plugins endfunction From b2f0d6b38cc0977e8db078b45ff99748e4750bd7 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sun, 2 Apr 2017 16:12:14 +0800 Subject: [PATCH 03/19] Fix #354 --- autoload/SpaceVim/layers/lang/javascript.vim | 4 +++- autoload/SpaceVim/layers/lang/php.vim | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/autoload/SpaceVim/layers/lang/javascript.vim b/autoload/SpaceVim/layers/lang/javascript.vim index 73d8e6105..0ef0ddff2 100644 --- a/autoload/SpaceVim/layers/lang/javascript.vim +++ b/autoload/SpaceVim/layers/lang/javascript.vim @@ -4,7 +4,9 @@ function! SpaceVim#layers#lang#javascript#plugins() abort if has('nvim') call add(plugins,['carlitux/deoplete-ternjs', { 'on_ft' : ['javascript']}]) else - call add(plugins,['ternjs/tern_for_vim', { 'on_ft' : ['javascript']}]) + call add(plugins,['ternjs/tern_for_vim', { 'on_ft' : ['javascript'], + \ 'build' : 'npm install', + \ }]) endif call add(plugins,['othree/javascript-libraries-syntax.vim', { 'on_ft' : ['javascript','coffee','ls','typescript']}]) call add(plugins,['mmalecki/vim-node.js', { 'on_ft' : ['javascript']}]) diff --git a/autoload/SpaceVim/layers/lang/php.vim b/autoload/SpaceVim/layers/lang/php.vim index 33a0fe49b..18b1c7182 100644 --- a/autoload/SpaceVim/layers/lang/php.vim +++ b/autoload/SpaceVim/layers/lang/php.vim @@ -17,7 +17,7 @@ function! SpaceVim#layers#lang#php#plugins() abort let plugins = [] - call add(plugins, ['php-vim/phpcd.vim', { 'on_ft' : 'php'}]) + call add(plugins, ['php-vim/phpcd.vim', { 'on_ft' : 'php', 'build' : 'composer install'}]) call add(plugins, ['StanAngeloff/php.vim', { 'on_ft' : 'php'}]) call add(plugins, ['2072/PHP-Indenting-for-VIm', { 'on_ft' : 'php'}]) call add(plugins, ['rafi/vim-phpspec', { 'on_ft' : 'php'}]) From 36706524f35ad19fc28d86d7759032499d755e79 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sun, 2 Apr 2017 18:55:23 +0800 Subject: [PATCH 04/19] Set scrolloff to 3 --- autoload/SpaceVim/autocmds.vim | 1 - autoload/SpaceVim/default.vim | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/autoload/SpaceVim/autocmds.vim b/autoload/SpaceVim/autocmds.vim index ca6fbe7f4..b87fb57ea 100644 --- a/autoload/SpaceVim/autocmds.vim +++ b/autoload/SpaceVim/autocmds.vim @@ -64,7 +64,6 @@ function! SpaceVim#autocmds#init() abort autocmd FocusGained * call s:reload_touchpad_status() endif autocmd BufWritePost *.vim call s:generate_doc() - autocmd FileType * set scrolloff=7 autocmd VimEnter * if !argc() | call SpaceVim#welcome() | endif augroup END endfunction diff --git a/autoload/SpaceVim/default.vim b/autoload/SpaceVim/default.vim index d75c9fc33..6e51537e5 100644 --- a/autoload/SpaceVim/default.vim +++ b/autoload/SpaceVim/default.vim @@ -96,7 +96,7 @@ function! SpaceVim#default#SetOptions() abort set complete=.,w,b,u,t " limit completion menu height set pumheight=15 - set scrolloff=7 + set scrolloff=3 set incsearch set hlsearch set laststatus=2 From 1c5b839e731b1a96627bc3d80acd77071696be29 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sun, 2 Apr 2017 19:39:42 +0800 Subject: [PATCH 05/19] Add option for ultisnips --- autoload/SpaceVim.vim | 7 +++++++ autoload/SpaceVim/layers/autocomplete.vim | 11 ++++++++++- autoload/SpaceVim/layers/lang.vim | 1 - doc/SpaceVim.txt | 7 +++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/autoload/SpaceVim.vim b/autoload/SpaceVim.vim index 895d04134..566f112e6 100644 --- a/autoload/SpaceVim.vim +++ b/autoload/SpaceVim.vim @@ -109,6 +109,13 @@ let g:spacevim_enable_ycm = 0 " Set the width of the SpaceVim sidebar. Default is 30. " This value will be used by tagbar and vimfiler. let g:spacevim_sidebar_width = 30 +"" +" Set the snippet engine of SpaceVim, default is neosnippet. to enable +" ultisnips: +" > +" let g:spacevim_snippet_engine = 'ultisnips' +" < +let g:spacevim_snippet_engine = 'neosnippet' let g:spacevim_enable_neocomplcache = 0 "" " Enable/Disable cursorline. Default is 0. diff --git a/autoload/SpaceVim/layers/autocomplete.vim b/autoload/SpaceVim/layers/autocomplete.vim index b5e93d348..ea4b65a1f 100644 --- a/autoload/SpaceVim/layers/autocomplete.vim +++ b/autoload/SpaceVim/layers/autocomplete.vim @@ -31,8 +31,17 @@ function! SpaceVim#layers#autocomplete#plugins() abort \ ['Shougo/neopairs.vim', { 'on_i' : 1}], \ ['Raimondi/delimitMate', { 'merged' : 0}], \ ] + " snippet + if g:spacevim_snippet_engine ==# 'neosnippet' + call add(plugins, ['Shougo/neosnippet.vim', { 'on_i' : 1 , + \ 'on_ft' : 'neosnippet', + \ 'loadconf' : 1, + \ 'on_cmd' : 'NeoSnippetEdit'}]) + elseif g:spacevim_snippet_engine ==# 'ultisnips' + call add(plugins, ['SirVer/ultisnips',{ 'loadconf_before' : 1, + \ 'merged' : 0}]) + endif if g:spacevim_autocomplete_method ==# 'ycm' - call add(plugins, ['SirVer/ultisnips', { 'loadconf_before' : 1, 'merged' : 0}]) call add(plugins, ['ervandew/supertab', { 'loadconf_before' : 1, 'merged' : 0}]) call add(plugins, ['Valloric/YouCompleteMe', { 'loadconf_before' : 1, 'merged' : 0}]) elseif g:spacevim_autocomplete_method ==# 'neocomplete' diff --git a/autoload/SpaceVim/layers/lang.vim b/autoload/SpaceVim/layers/lang.vim index 97b06256c..3c38bdafd 100644 --- a/autoload/SpaceVim/layers/lang.vim +++ b/autoload/SpaceVim/layers/lang.vim @@ -1,6 +1,5 @@ function! SpaceVim#layers#lang#plugins() abort let plugins = [ - \ ['Shougo/neosnippet.vim', { 'on_i' : 1 , 'on_ft' : 'neosnippet', 'loadconf' : 1, 'on_cmd' : 'NeoSnippetEdit'}], \ ['groenewege/vim-less', { 'on_ft' : ['less']}], \ ['cakebaker/scss-syntax.vim', { 'on_ft' : ['scss','sass']}], \ ['hail2u/vim-css3-syntax', { 'on_ft' : ['css','scss','sass']}], diff --git a/doc/SpaceVim.txt b/doc/SpaceVim.txt index 4a4538588..ded27c9cd 100644 --- a/doc/SpaceVim.txt +++ b/doc/SpaceVim.txt @@ -138,6 +138,13 @@ Enable/Disable YouCompleteMe. Default is 0. Set the width of the SpaceVim sidebar. Default is 30. This value will be used by tagbar and vimfiler. + *g:spacevim_snippet_engine* +Set the snippet engine of SpaceVim, default is neosnippet. to enable +ultisnips: +> + let g:spacevim_snippet_engine = 'ultisnips' +< + *g:spacevim_enable_cursorline* Enable/Disable cursorline. Default is 0. > From 3466ae9dc1ce7b5d941c551a8c8684108b34d910 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sun, 2 Apr 2017 20:49:09 +0800 Subject: [PATCH 06/19] Add tab.vim --- autoload/SpaceVim/default.vim | 2 +- autoload/SpaceVim/mapping/tab.vim | 32 +++++++++++++++++++++++++++++++ config/plugins/neosnippet.vim | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 autoload/SpaceVim/mapping/tab.vim diff --git a/autoload/SpaceVim/default.vim b/autoload/SpaceVim/default.vim index 6e51537e5..a6cebede7 100644 --- a/autoload/SpaceVim/default.vim +++ b/autoload/SpaceVim/default.vim @@ -158,7 +158,7 @@ endfunction function! SpaceVim#default#SetMappings() abort "mapping - imap SpaceVim#mapping#tab() + imap SpaceVim#mapping#tab#i_tab() imap pumvisible() ? "\" : "" imap SpaceVim#mapping#shift_tab() smap neosnippet#expandable_or_jumpable() ? "\(neosnippet_expand_or_jump)" : "\" diff --git a/autoload/SpaceVim/mapping/tab.vim b/autoload/SpaceVim/mapping/tab.vim new file mode 100644 index 000000000..a86f9412a --- /dev/null +++ b/autoload/SpaceVim/mapping/tab.vim @@ -0,0 +1,32 @@ +if g:spacevim_snippet_engine ==# 'neosnippet' + function! SpaceVim#mapping#tab#i_tab() abort + if getline('.')[col('.')-2] ==# '{'&& pumvisible() + return "\" + endif + if index(g:spacevim_plugin_groups, 'autocomplete') != -1 + if neosnippet#expandable() && getline('.')[col('.')-2] ==# '(' && !pumvisible() + return "\(neosnippet_expand)" + elseif neosnippet#jumpable() + \ && getline('.')[col('.')-2] ==# '(' && !pumvisible() + \ && !neosnippet#expandable() + return "\(neosnippet_jump)" + elseif neosnippet#expandable_or_jumpable() && getline('.')[col('.')-2] !=#'(' + let g:wsd = 1 + return "\(neosnippet_expand_or_jump)" + elseif pumvisible() + return "\" + else + return "\" + endif + elseif pumvisible() + return "\" + else + return "\" + endif + endfunction +elseif g:spacevim_snippet_engine ==# 'ultisnips' + function! SpaceVim#mapping#tab#i_tab() abort + return "\" + endfunction +endif +" vim:set et sw=2 cc=80: diff --git a/config/plugins/neosnippet.vim b/config/plugins/neosnippet.vim index a191075fd..e44df3660 100644 --- a/config/plugins/neosnippet.vim +++ b/config/plugins/neosnippet.vim @@ -22,7 +22,7 @@ if g:neosnippet#enable_complete_done endif augroup neosnippet_complete_done autocmd! - autocmd CompleteDone * call s:my_complete_done() + "autocmd CompleteDone * call s:my_complete_done() augroup END function! s:my_complete_done() abort "{{{ if !empty(get(v:,'completed_item','')) From 584e5d9a7e3abd288b1000a61691f44ea3c67ea6 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sun, 2 Apr 2017 23:13:10 +0800 Subject: [PATCH 07/19] Fix enter mapping --- autoload/SpaceVim/default.vim | 2 +- autoload/SpaceVim/mapping/enter.vim | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 autoload/SpaceVim/mapping/enter.vim diff --git a/autoload/SpaceVim/default.vim b/autoload/SpaceVim/default.vim index a6cebede7..d07808b4e 100644 --- a/autoload/SpaceVim/default.vim +++ b/autoload/SpaceVim/default.vim @@ -162,7 +162,7 @@ function! SpaceVim#default#SetMappings() abort imap pumvisible() ? "\" : "" imap SpaceVim#mapping#shift_tab() smap neosnippet#expandable_or_jumpable() ? "\(neosnippet_expand_or_jump)" : "\" - inoremap SpaceVim#mapping#enter() + imap SpaceVim#mapping#enter#i_enter() inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\\\" : "\" diff --git a/autoload/SpaceVim/mapping/enter.vim b/autoload/SpaceVim/mapping/enter.vim new file mode 100644 index 000000000..0eb58227b --- /dev/null +++ b/autoload/SpaceVim/mapping/enter.vim @@ -0,0 +1,14 @@ + +if g:spacevim_snippet_engine ==# 'neosnippet' + function! SpaceVim#mapping#enter#i_enter() abort + if pumvisible() + if neosnippet#expandable_or_jumpable() + return "\(neosnippet_expand_or_jump)" + endif + else + return "\" + endif + endfunction +elseif g:spacevim_snippet_engine ==# 'ultisnips' +endif +" vim:set et sw=2 cc=80: From 0e213a470bee15055eebfe43791890c8ed44836d Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sun, 2 Apr 2017 23:57:06 +0800 Subject: [PATCH 08/19] Remove completeDone autocmd --- config/plugins/neosnippet.vim | 39 +++++++++++++++-------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/config/plugins/neosnippet.vim b/config/plugins/neosnippet.vim index e44df3660..c7b3c77cb 100644 --- a/config/plugins/neosnippet.vim +++ b/config/plugins/neosnippet.vim @@ -1,17 +1,26 @@ -let g:neosnippet#snippets_directory = get(g:,'neosnippet#snippets_directory', '') +let g:neosnippet#snippets_directory = get(g:,'neosnippet#snippets_directory', + \ '') if empty(g:neosnippet#snippets_directory) - let g:neosnippet#snippets_directory = [expand('~/.SpaceVim/snippets/'), expand('~/.SpaceVim.d/snippets/')] + let g:neosnippet#snippets_directory = [expand('~/.SpaceVim/snippets/'), + \ expand('~/.SpaceVim.d/snippets/')] elseif type(g:spacevim_force_global_config) == type('') - let g:neosnippet#snippets_directory = [expand('~/.SpaceVim/snippets/'), expand('~/.SpaceVim.d/snippets/')] + [g:neosnippet#snippets_directory] + let g:neosnippet#snippets_directory = [expand('~/.SpaceVim/snippets/'), + \ expand('~/.SpaceVim.d/snippets/')] + + \ [g:neosnippet#snippets_directory] elseif type(g:spacevim_force_global_config) == type([]) - let g:neosnippet#snippets_directory = [expand('~/.SpaceVim/snippets/'), expand('~/.SpaceVim.d/snippets/')] + g:neosnippet#snippets_directory + let g:neosnippet#snippets_directory = [expand('~/.SpaceVim/snippets/'), + \ expand('~/.SpaceVim.d/snippets/')] + + \ g:neosnippet#snippets_directory endif if g:spacevim_force_global_config == 0 - let g:neosnippet#snippets_directory = [getcwd() . '/.Spacevim.d/snippets'] + g:neosnippet#snippets_directory + let g:neosnippet#snippets_directory = [getcwd() . '/.Spacevim.d/snippets'] + + \ g:neosnippet#snippets_directory endif -let g:neosnippet#enable_snipmate_compatibility = get(g:, 'neosnippet#enable_snipmate_compatibility', 1) -let g:neosnippet#enable_complete_done = get(g:, 'neosnippet#enable_complete_done', 1) +let g:neosnippet#enable_snipmate_compatibility = + \ get(g:, 'neosnippet#enable_snipmate_compatibility', 1) +let g:neosnippet#enable_complete_done = + \ get(g:, 'neosnippet#enable_complete_done', 1) if !exists('g:neosnippet#completed_pairs') let g:neosnippet#completed_pairs = {} @@ -20,19 +29,5 @@ let g:neosnippet#completed_pairs.java = {'(' : ')'} if g:neosnippet#enable_complete_done let g:neopairs#enable = 0 endif -augroup neosnippet_complete_done - autocmd! - "autocmd CompleteDone * call s:my_complete_done() -augroup END -function! s:my_complete_done() abort "{{{ - if !empty(get(v:,'completed_item','')) - let snippet = neosnippet#parser#_get_completed_snippet(v:completed_item,neosnippet#util#get_cur_text(), neosnippet#util#get_next_text()) - if snippet ==# '' - return - endif - let [cur_text, col] = neosnippet#mappings#_pre_trigger()[0:1] - call neosnippet#view#_insert(snippet, {}, cur_text, col) - endif -endfunction"}}} -" vim:set et sw=2: +" vim:set et sw=2 cc=80: From 5e6ed228bc2dda64ab0c055c32908038050b6b4f Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 00:02:11 +0800 Subject: [PATCH 09/19] Fix #388 --- config/plugins/neocomplete.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/plugins/neocomplete.vim b/config/plugins/neocomplete.vim index 7c6296b35..7f4482ba5 100644 --- a/config/plugins/neocomplete.vim +++ b/config/plugins/neocomplete.vim @@ -25,7 +25,7 @@ let g:neocomplete#enable_auto_delimiter = get(g:, 'neocomplete#enable_auto_delim if !exists('g:neocomplete#keyword_patterns') let g:neocomplete#keyword_patterns = {} endif -let g:neocomplete#keyword_patterns._ = get(g:neocomplete#keyword_pattern, '_', '\h\k*(\?') +let g:neocomplete#keyword_patterns._ = get(g:neocomplete#keyword_patterns, '_', '\h\k*(\?') " AutoComplPop like behavior. let g:neocomplete#enable_auto_select = 0 From 8583d10c5cc3664334d4e98b756f6a12a30a008b Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 00:31:23 +0800 Subject: [PATCH 10/19] Fix enter mapping --- autoload/SpaceVim/mapping/enter.vim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/autoload/SpaceVim/mapping/enter.vim b/autoload/SpaceVim/mapping/enter.vim index 0eb58227b..f828bcf84 100644 --- a/autoload/SpaceVim/mapping/enter.vim +++ b/autoload/SpaceVim/mapping/enter.vim @@ -2,8 +2,10 @@ if g:spacevim_snippet_engine ==# 'neosnippet' function! SpaceVim#mapping#enter#i_enter() abort if pumvisible() - if neosnippet#expandable_or_jumpable() - return "\(neosnippet_expand_or_jump)" + if neosnippet#expandable() + return "\(neosnippet_expand)" + else + return "\" endif else return "\" From 64d18409eda4489857b942a2349d2ae521026143 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 00:57:06 +0800 Subject: [PATCH 11/19] Add enter mapping for ultisnips --- autoload/SpaceVim/mapping/enter.vim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/autoload/SpaceVim/mapping/enter.vim b/autoload/SpaceVim/mapping/enter.vim index f828bcf84..c5179d9d1 100644 --- a/autoload/SpaceVim/mapping/enter.vim +++ b/autoload/SpaceVim/mapping/enter.vim @@ -12,5 +12,12 @@ if g:spacevim_snippet_engine ==# 'neosnippet' endif endfunction elseif g:spacevim_snippet_engine ==# 'ultisnips' + function! SpaceVim#mapping#enter#i_enter() abort + if pumvisible() + return "\" + else + return "\" + endif + endfunction endif " vim:set et sw=2 cc=80: From 7024e5754d390627bde6cc126e73ef272bb5bb93 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 12:30:08 +0800 Subject: [PATCH 12/19] Fix plugin_before hooks --- autoload/SpaceVim/plugins.vim | 6 +++--- config/plugins_before/ultisnips.vim | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/autoload/SpaceVim/plugins.vim b/autoload/SpaceVim/plugins.vim index 94fe03d5e..02d6355df 100644 --- a/autoload/SpaceVim/plugins.vim +++ b/autoload/SpaceVim/plugins.vim @@ -16,9 +16,9 @@ function! s:load_plugins() abort call zvim#plug#add(plugin[0], plugin[1]) if zvim#plug#tap(split(plugin[0], '/')[-1]) && get(plugin[1], 'loadconf', 0 ) call zvim#plug#defind_hooks(split(plugin[0], '/')[-1]) - if get(plugin[1], 'loadconf_before', 0 ) - call zvim#plug#loadPluginBefore(split(plugin[0], '/')[-1]) - endif + endif + if zvim#plug#tap(split(plugin[0], '/')[-1]) && get(plugin[1], 'loadconf_before', 0 ) + call zvim#plug#loadPluginBefore(split(plugin[0], '/')[-1]) endif else call zvim#plug#add(plugin[0]) diff --git a/config/plugins_before/ultisnips.vim b/config/plugins_before/ultisnips.vim index 88ad8547c..74dfcb0f1 100644 --- a/config/plugins_before/ultisnips.vim +++ b/config/plugins_before/ultisnips.vim @@ -1,4 +1,6 @@ +" If you want :UltiSnipsEdit to split your window. +let g:UltiSnipsEditSplit="vertical" let g:UltiSnipsExpandTrigger='' +let g:UltiSnipsJumpBackwardTrigger="" let g:UltiSnipsJumpForwardTrigger='' -let g:UltiSnipsJumpBackwardTrigger='' -let g:UltiSnipsSnippetsDir='~/DotFiles/snippets' +let g:UltiSnipsSnippetsDir = '~/.SpaceVim.d/UltiSnips' From ab55eff7cec7ec20fee6e5aa1d0eb0ce15fb3c4a Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 12:52:09 +0800 Subject: [PATCH 13/19] Add frequency func --- autoload/SpaceVim.vim | 3 +++ autoload/SpaceVim/mapping/frequency.vim | 27 +++++++++++++++++++++++++ doc/SpaceVim.txt | 3 +++ 3 files changed, 33 insertions(+) create mode 100644 autoload/SpaceVim/mapping/frequency.vim diff --git a/autoload/SpaceVim.vim b/autoload/SpaceVim.vim index 566f112e6..9abb2f84d 100644 --- a/autoload/SpaceVim.vim +++ b/autoload/SpaceVim.vim @@ -85,6 +85,9 @@ let g:spacevim_plugin_bundle_dir " let g:spacevim_realtime_leader_guide = 1 " < let g:spacevim_realtime_leader_guide = 0 +"" +" Enable/Disable key frequency catching of SpaceVim. +let g:spacevim_enable_key_frequency = 1 let g:spacevim_autocomplete_method = '' let g:spacevim_enable_cursorcolumn = 0 "" diff --git a/autoload/SpaceVim/mapping/frequency.vim b/autoload/SpaceVim/mapping/frequency.vim new file mode 100644 index 000000000..31211c3c5 --- /dev/null +++ b/autoload/SpaceVim/mapping/frequency.vim @@ -0,0 +1,27 @@ +let s:data = {} + +function! SpaceVim#mapping#frequency#update(key) abort + if has_key(s:data, a:key) + let s:data[a:key] += 1 + else + let s:data[a:key] = 1 + endif +endfunction + +function! SpaceVim#mapping#frequency#view(keys) abort + if type(a:keys) == 1 + echo 'The frequency of ' . a:keys . ' is ' . s:get(a:keys) + elseif type(a:keys) == 3 + for key in a:keys + call SpaceVim#mapping#frequency#view(key) + endfor + endif +endfunction + +function! s:get(key) abort + if has_key(s:data, a:key) + return s:data[a:key] + else + return 0 + endif +endfunction diff --git a/doc/SpaceVim.txt b/doc/SpaceVim.txt index ded27c9cd..60d45a3d3 100644 --- a/doc/SpaceVim.txt +++ b/doc/SpaceVim.txt @@ -116,6 +116,9 @@ Enable/Disable realtime leader guide. Default is 0. let g:spacevim_realtime_leader_guide = 1 < + *g:spacevim_enable_key_frequency* +Enable/Disable key frequency catching of SpaceVim. + *g:spacevim_enable_neomake* SpaceVim default checker is neomake. If you want to use syntastic, use: > From b1241ef10f696b69fdc2aed89b6d3a2d46d1ac96 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 13:12:35 +0800 Subject: [PATCH 14/19] Add key frequency feature --- autoload/SpaceVim.vim | 8 ++++++-- autoload/SpaceVim/mapping.vim | 6 +++++- autoload/SpaceVim/mapping/frequency.vim | 6 +++++- doc/SpaceVim.txt | 6 +++++- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/autoload/SpaceVim.vim b/autoload/SpaceVim.vim index 9abb2f84d..18ca57716 100644 --- a/autoload/SpaceVim.vim +++ b/autoload/SpaceVim.vim @@ -86,8 +86,12 @@ let g:spacevim_plugin_bundle_dir " < let g:spacevim_realtime_leader_guide = 0 "" -" Enable/Disable key frequency catching of SpaceVim. -let g:spacevim_enable_key_frequency = 1 +" Enable/Disable key frequency catching of SpaceVim. default value is 0. to +" enable it: +" > +" let g:spacevim_enable_key_frequency = 1 +" < +let g:spacevim_enable_key_frequency = 0 let g:spacevim_autocomplete_method = '' let g:spacevim_enable_cursorcolumn = 0 "" diff --git a/autoload/SpaceVim/mapping.vim b/autoload/SpaceVim/mapping.vim index e5753013c..66e65aba1 100644 --- a/autoload/SpaceVim/mapping.vim +++ b/autoload/SpaceVim/mapping.vim @@ -38,7 +38,11 @@ function! SpaceVim#mapping#def(type, key, value, ...) abort let gexe = substitute(gexe, '', "\", 'g') else endif - exec a:type . ' ' . a:key . ' ' . a:value + if g:spacevim_enable_key_frequency + exec a:type . ' ' . a:key . " SpaceVim#mapping#frequency#update('" . a:key . "', '" . a:value . "')" + else + exec a:type . ' ' . a:key . ' ' . a:value + endif if a:0 > 0 let desc = a:1 let description = '➤ ' diff --git a/autoload/SpaceVim/mapping/frequency.vim b/autoload/SpaceVim/mapping/frequency.vim index 31211c3c5..83b24d2ef 100644 --- a/autoload/SpaceVim/mapping/frequency.vim +++ b/autoload/SpaceVim/mapping/frequency.vim @@ -1,11 +1,12 @@ let s:data = {} -function! SpaceVim#mapping#frequency#update(key) abort +function! SpaceVim#mapping#frequency#update(key, rhs) abort if has_key(s:data, a:key) let s:data[a:key] += 1 else let s:data[a:key] = 1 endif + return a:rhs endfunction function! SpaceVim#mapping#frequency#view(keys) abort @@ -17,6 +18,9 @@ function! SpaceVim#mapping#frequency#view(keys) abort endfor endif endfunction +function! SpaceVim#mapping#frequency#viewall() abort + echo string(s:data) +endfunction function! s:get(key) abort if has_key(s:data, a:key) diff --git a/doc/SpaceVim.txt b/doc/SpaceVim.txt index 60d45a3d3..ca1126378 100644 --- a/doc/SpaceVim.txt +++ b/doc/SpaceVim.txt @@ -117,7 +117,11 @@ Enable/Disable realtime leader guide. Default is 0. < *g:spacevim_enable_key_frequency* -Enable/Disable key frequency catching of SpaceVim. +Enable/Disable key frequency catching of SpaceVim. default value is 0. to +enable it: +> + let g:spacevim_enable_key_frequency = 1 +< *g:spacevim_enable_neomake* SpaceVim default checker is neomake. If you want to use syntastic, use: From 01136e7b4b22e70c55ab0f471ed5eee42dedde73 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 13:31:31 +0800 Subject: [PATCH 15/19] Add leader + f and leader + F for orgin F/f --- autoload/SpaceVim/mapping/leader.vim | 6 ++++++ config/plugins/unite.vim | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/autoload/SpaceVim/mapping/leader.vim b/autoload/SpaceVim/mapping/leader.vim index 711dd7914..72c923ecd 100644 --- a/autoload/SpaceVim/mapping/leader.vim +++ b/autoload/SpaceVim/mapping/leader.vim @@ -154,6 +154,9 @@ endfunction function! SpaceVim#mapping#leader#defindDeniteLeader(key) abort if !empty(a:key) + if a:key == 'F' + nnoremap F F + endif exe 'nnoremap [denite] :LeaderGuide "' . \ a:key . '"' exe 'nmap ' .a:key . ' [denite]' @@ -185,6 +188,9 @@ endfunction function! SpaceVim#mapping#leader#defindUniteLeader(key) abort if !empty(a:key) + if a:key == 'f' + nnoremap f f + endif " The prefix key. exe 'nnoremap [unite] :LeaderGuide "' . \ a:key . '"' diff --git a/config/plugins/unite.vim b/config/plugins/unite.vim index 487ec380d..8ce8c93c0 100644 --- a/config/plugins/unite.vim +++ b/config/plugins/unite.vim @@ -262,10 +262,6 @@ call unite#custom#profile('buffer,buffer_tab', 'context', { \ 'keep_focus' : 1, \ }) nnoremap um :Unite -start-insert mapping -"" Tag search -""" For searching the word in the cursor in tag file -nnoremap f :Unite tag/include: -nnoremap ff :Unite tag/include -start-insert "" grep dictionay """ For searching the word in the cursor in the current directory nnoremap v :Unite From 33cf405549d0dd428fb5a2c4f2b227a379083d1d Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 16:42:09 +0800 Subject: [PATCH 16/19] Add SPUpdate command --- autoload/SpaceVim/commands.vim | 21 +++++++++++++++++++++ autoload/zvim/plug.vim | 3 ++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/autoload/SpaceVim/commands.vim b/autoload/SpaceVim/commands.vim index 12c241885..404505655 100644 --- a/autoload/SpaceVim/commands.vim +++ b/autoload/SpaceVim/commands.vim @@ -26,8 +26,21 @@ function! SpaceVim#commands#load() abort command! -nargs=* \ -complete=customlist,SpaceVim#commands#complete_SPConfig \ SPConfig call SpaceVim#commands#config() + command! -nargs=* + \ -complete=custom,SpaceVim#commands#complete_plugin + \ SPUpdate call SpaceVim#commands#update_plugin() endfunction +" @vimlint(EVL103, 1, a:ArgLead) +" @vimlint(EVL103, 1, a:CmdLine) +" @vimlint(EVL103, 1, a:CursorPos) +function! SpaceVim#commands#complete_plugin(ArgLead, CmdLine, CursorPos) abort + return join(g:_spacevim_plugins, "\n") +endfunction +" @vimlint(EVL103, 0, a:ArgLead) +" @vimlint(EVL103, 0, a:CmdLine) +" @vimlint(EVL103, 0, a:CursorPos) + " @vimlint(EVL103, 1, a:ArgLead) " @vimlint(EVL103, 1, a:CmdLine) " @vimlint(EVL103, 1, a:CursorPos) @@ -46,6 +59,14 @@ function! SpaceVim#commands#config(...) abort endif endfunction +function! SpaceVim#commands#update_plugin(plug) abort + if g:spacevim_plugin_manager ==# 'neobundle' + elseif g:spacevim_plugin_manager ==# 'dein' + call dein#update([a:plug]) + elseif g:spacevim_plugin_manager ==# 'vim-plug' + endif +endfunction + function! SpaceVim#commands#version() abort echo 'SpaceVim ' . g:spacevim_version . '-' . s:SHA() . "\n" . diff --git a/autoload/zvim/plug.vim b/autoload/zvim/plug.vim index bc05cfe16..bc490ec18 100644 --- a/autoload/zvim/plug.vim +++ b/autoload/zvim/plug.vim @@ -148,7 +148,7 @@ let s:plugins = [] fu! s:parser(args) abort return a:args endf - +let g:_spacevim_plugins = [] function! zvim#plug#add(repo,...) abort let g:spacevim_plugin_name = '' if g:spacevim_plugin_manager ==# 'neobundle' @@ -161,6 +161,7 @@ function! zvim#plug#add(repo,...) abort call dein#add(a:repo) endif let g:spacevim_plugin_name = g:dein#name + call add(g:_spacevim_plugins, g:dein#name) elseif g:spacevim_plugin_manager ==# 'vim-plug' if len(a:000) > 0 exec "Plug '".a:repo."', ".join(a:000,',') From 9207fdc97de7a604f3606f94cf5ef62a42dff210 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 16:44:06 +0800 Subject: [PATCH 17/19] Add doc for SPUpdate --- autoload/SpaceVim/commands.vim | 5 +++++ doc/SpaceVim.txt | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/autoload/SpaceVim/commands.vim b/autoload/SpaceVim/commands.vim index 404505655..84c05804d 100644 --- a/autoload/SpaceVim/commands.vim +++ b/autoload/SpaceVim/commands.vim @@ -26,6 +26,11 @@ function! SpaceVim#commands#load() abort command! -nargs=* \ -complete=customlist,SpaceVim#commands#complete_SPConfig \ SPConfig call SpaceVim#commands#config() + "" + " Command for update plugin, support completion of plugin name. + " > + " :SPUpdate vim-airline + " < command! -nargs=* \ -complete=custom,SpaceVim#commands#complete_plugin \ SPUpdate call SpaceVim#commands#update_plugin() diff --git a/doc/SpaceVim.txt b/doc/SpaceVim.txt index ca1126378..f61899bd3 100644 --- a/doc/SpaceVim.txt +++ b/doc/SpaceVim.txt @@ -328,6 +328,12 @@ COMMANDS *SpaceVim-commands* :SPConfig -g < +:SPUpdate *:SPUpdate* + Command for update plugin, support completion of plugin name. +> + :SPUpdate vim-airline +< + ============================================================================== FUNCTIONS *SpaceVim-functions* From 3aaeb9a91035b6e5f0e2d27ef104214b9815dc0b Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 17:02:48 +0800 Subject: [PATCH 18/19] Add filetypeicon in vimfiler --- autoload/vimfiler/columns/filetypeicon.vim | 51 ++++++++++++++++++++++ config/plugins/vimfiler.vim | 1 + 2 files changed, 52 insertions(+) create mode 100644 autoload/vimfiler/columns/filetypeicon.vim diff --git a/autoload/vimfiler/columns/filetypeicon.vim b/autoload/vimfiler/columns/filetypeicon.vim new file mode 100644 index 000000000..29c8c9ba5 --- /dev/null +++ b/autoload/vimfiler/columns/filetypeicon.vim @@ -0,0 +1,51 @@ +let s:save_cpo = &cpo +set cpo&vim +scriptencoding utf-8 + +let s:FILE = SpaceVim#api#import('file') + +let s:fish = &shell =~# 'fish' + +function! vimfiler#columns#filetypeicon#define() abort + return s:column +endfunction"}}} + +let s:column = { + \ 'name' : 'filetypeicon', + \ 'description' : 'plugin for vimfiler that provides filetype icon', + \ 'syntax' : 'vimfilerColumn__FileType', + \ } + +" @vimlint(EVL103, 1, a:files) +" @vimlint(EVL103, 1, a:context) +function! s:column.length(files, context) abort + return 3 +endfunction +" @vimlint(EVL103, 0, a:files) +" @vimlint(EVL103, 0, a:context) + +" @vimlint(EVL103, 1, a:context) +function! s:column.define_syntax(context) abort +endfunction +" @vimlint(EVL103, 0, a:context) + +" @vimlint(EVL103, 1, a:context) +function! s:column.get(file, context) abort + if a:file.vimfiler__is_directory + return ' ' + else + let icon = s:FILE.fticon(a:file.action__path) + + if !empty(icon) + return '[' . icon . ']' + else + return ' ' + endif + endif +endfunction +" @vimlint(EVL103, 0, a:context) + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim:set et sw=2: diff --git a/config/plugins/vimfiler.vim b/config/plugins/vimfiler.vim index 0f1b677ee..84ee0077d 100644 --- a/config/plugins/vimfiler.vim +++ b/config/plugins/vimfiler.vim @@ -31,6 +31,7 @@ try \ 'toggle' : 1, \ 'auto_expand': 1, \ 'direction' : 'rightbelow', + \ 'explorer_columns' : 'filetypeicon', \ 'parent': 0, \ 'status' : 1, \ 'safe' : 0, From d63d25a953f8fdff4dd7abfe3db37de96cd28b3c Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 3 Apr 2017 19:32:19 +0800 Subject: [PATCH 19/19] Add spacevim option for vimfiler colums --- autoload/SpaceVim.vim | 6 +++++ config/plugins/vimfiler.vim | 50 +++++++++++++++++++++++-------------- doc/SpaceVim.txt | 6 +++++ 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/autoload/SpaceVim.vim b/autoload/SpaceVim.vim index 18ca57716..31985a8ab 100644 --- a/autoload/SpaceVim.vim +++ b/autoload/SpaceVim.vim @@ -273,6 +273,12 @@ let g:spacevim_lint_on_save = 1 " let g:spacevim_enable_vimfiler_welcome = 0 " < let g:spacevim_enable_vimfiler_welcome = 1 +"" +" Enable/Disable gitstatus colum in vimfiler buffer, default is 0. +let g:spacevim_enable_vimfiler_gitstatus = 0 +"" +" Enable/Disable filetypeicon colum in vimfiler buffer, default is 0. +let g:spacevim_enable_vimfiler_filetypeicon = 0 let g:spacevim_smartcloseignorewin = ['__Tagbar__' , 'vimfiler:default'] let g:spacevim_smartcloseignoreft = ['help'] let g:spacevim_altmoveignoreft = ['Tagbar' , 'vimfiler'] diff --git a/config/plugins/vimfiler.vim b/config/plugins/vimfiler.vim index 84ee0077d..22ae5b980 100644 --- a/config/plugins/vimfiler.vim +++ b/config/plugins/vimfiler.vim @@ -23,25 +23,37 @@ if has('mac') else let g:vimfiler_quick_look_command = 'gloobus-preview' endif -try - call vimfiler#custom#profile('default', 'context', { - \ 'explorer' : 1, - \ 'winwidth' : g:spacevim_sidebar_width, - \ 'winminwidth' : 30, - \ 'toggle' : 1, - \ 'auto_expand': 1, - \ 'direction' : 'rightbelow', - \ 'explorer_columns' : 'filetypeicon', - \ 'parent': 0, - \ 'status' : 1, - \ 'safe' : 0, - \ 'split' : 1, - \ 'hidden': 1, - \ 'no_quit' : 1, - \ 'force_hide' : 0, - \ }) -catch -endtry +function! s:setcolum() abort + if g:spacevim_enable_vimfiler_filetypeicon && !g:spacevim_enable_vimfiler_gitstatus + return 'filetypeicon' + elseif !g:spacevim_enable_vimfiler_filetypeicon && g:spacevim_enable_vimfiler_gitstatus + return 'gitstatus' + elseif g:spacevim_enable_vimfiler_filetypeicon && g:spacevim_enable_vimfiler_gitstatus + return 'filetypeicon:gitstatus' + else + return '' + endif +endfunction +"try +call vimfiler#custom#profile('default', 'context', { + \ 'explorer' : 1, + \ 'winwidth' : g:spacevim_sidebar_width, + \ 'winminwidth' : 30, + \ 'toggle' : 1, + \ 'auto_expand': 1, + \ 'direction' : 'rightbelow', + \ 'explorer_columns' : s:setcolum(), + \ 'parent': 0, + \ 'status' : 1, + \ 'safe' : 0, + \ 'split' : 1, + \ 'hidden': 1, + \ 'no_quit' : 1, + \ 'force_hide' : 0, + \ }) + +"catch +"endtry augroup vfinit au! autocmd FileType vimfiler call s:vimfilerinit() diff --git a/doc/SpaceVim.txt b/doc/SpaceVim.txt index f61899bd3..507519feb 100644 --- a/doc/SpaceVim.txt +++ b/doc/SpaceVim.txt @@ -296,6 +296,12 @@ vim to start up slowly if there are too many files in the current directory. let g:spacevim_enable_vimfiler_welcome = 0 < + *g:spacevim_enable_vimfiler_gitstatus* +Enable/Disable gitstatus colum in vimfiler buffer, default is 0. + + *g:spacevim_enable_vimfiler_filetypeicon* +Enable/Disable filetypeicon colum in vimfiler buffer, default is 0. + *g:spacevim_hosts_url* The host file url. This option is for Chinese users who can not use Google and Twitter.