From 0190dad7476e5398ece7bccbb9e67252003ad8f3 Mon Sep 17 00:00:00 2001 From: Jie Feng Date: Wed, 2 Aug 2017 00:15:51 +0800 Subject: [PATCH] more settings and natively support go --- vim/settings/fugitive.vim | 15 ++++++++++ vim/settings/go.vim | 56 +++++++++++++++++++++++++++++++++++ vim/settings/neocomplete.vim | 45 ++++++++++++++++++++++++---- vim/settings/syntastic.vim | 20 ++++++++----- vim/settings/vim-fugitive.vim | 15 ---------- zsh/aliases.zsh | 1 - 6 files changed, 122 insertions(+), 30 deletions(-) create mode 100644 vim/settings/go.vim delete mode 100644 vim/settings/vim-fugitive.vim diff --git a/vim/settings/fugitive.vim b/vim/settings/fugitive.vim index 37bc74c..4287ddf 100644 --- a/vim/settings/fugitive.vim +++ b/vim/settings/fugitive.vim @@ -1,3 +1,18 @@ +" The tree buffer makes it easy to drill down through the directories of your +" git repository, but it’s not obvious how you could go up a level to the +" parent directory. Here’s a mapping of .. to the above command, but +" only for buffers containing a git blob or tree +autocmd User fugitive + \ if fugitive#buffer().type() =~# '^\%(tree\|blob\)$' | + \ nnoremap .. :edit %:h | + \ endif + +" Every time you open a git object using fugitive it creates a new buffer. +" This means that your buffer listing can quickly become swamped with +" fugitive buffers. This prevents this from becomming an issue: + +autocmd BufReadPost fugitive://* set bufhidden=delete + " fugitive.git " ======================================== " For fugitive.git, dp means :diffput. Define dg to mean :diffget diff --git a/vim/settings/go.vim b/vim/settings/go.vim new file mode 100644 index 0000000..58ea122 --- /dev/null +++ b/vim/settings/go.vim @@ -0,0 +1,56 @@ +let g:go_fmt_fail_silently = 1 +let g:go_fmt_command = "gofmt" "Explicited the formater plugin (gofmt, goimports, goreturn...) + +" Show a list of interfaces which is implemented by the type under your cursor +au FileType go nmap s (go-implements) + +" Show type info for the word under your cursor +au FileType go nmap i (go-info) + +" Open the relevant Godoc for the word under the cursor +au FileType go nmap gd (go-doc) +au FileType go nmap gv (go-doc-vertical) + +" Open the Godoc in browser +au FileType go nmap gb (go-doc-browser) + +" Run/build/test/coverage +au FileType go nmap r (go-run) +au FileType go nmap b (go-build) +au FileType go nmap t (go-test) +au FileType go nmap c (go-coverage) + +" By default syntax-highlighting for Functions, Methods and Structs is disabled. +" Let's enable them! +let g:go_highlight_functions = 1 +let g:go_highlight_methods = 1 +let g:go_highlight_structs = 1 + +nmap :TagbarToggle +let g:tagbar_type_go = { + \ 'ctagstype' : 'go', + \ 'kinds' : [ + \ 'p:package', + \ 'i:imports:1', + \ 'c:constants', + \ 'v:variables', + \ 't:types', + \ 'n:interfaces', + \ 'w:fields', + \ 'e:embedded', + \ 'm:methods', + \ 'r:constructor', + \ 'f:functions' + \ ], + \ 'sro' : '.', + \ 'kind2scope' : { + \ 't' : 'ctype', + \ 'n' : 'ntype' + \ }, + \ 'scope2kind' : { + \ 'ctype' : 't', + \ 'ntype' : 'n' + \ }, + \ 'ctagsbin' : 'gotags', + \ 'ctagsargs' : '-sort -silent' +\ } diff --git a/vim/settings/neocomplete.vim b/vim/settings/neocomplete.vim index 56c3eab..992ff83 100644 --- a/vim/settings/neocomplete.vim +++ b/vim/settings/neocomplete.vim @@ -1,18 +1,20 @@ -" Disable AutoComplPop. -let g:acp_enableAtStartup = 0 -" Use neocomplete. -let g:neocomplete#enable_at_startup = 1 +let g:acp_enableAtStartup = 0 " Disable AutoComplPop. +let g:neocomplete#enable_at_startup = 1 " Use neocomplete. let g:neocomplete#enable_camel_case = 1 let g:neocomplete#enable_smart_case = 1 " Default # of completions is 100, that's crazy. let g:neocomplete#max_list = 5 -" Set minimum syntax keyword length. -let g:neocomplete#auto_completion_start_length = 3 +let g:neocomplete#auto_completion_start_length = 3 " Set minimum syntax keyword length. +let g:neocomplete#lock_buffer_name_pattern = '\*ku\*' + +let g:neocomplete#enable_auto_select = 1 " AutoComplPop like behavior. " Map standard Ctrl-N completion to Ctrl-Space inoremap +" Plugin key-mappings. +inoremap neocomplete#undo_completion() " This makes sure we use neocomplete completefunc instead of " the one in rails.vim, otherwise this plugin will crap out. @@ -24,6 +26,20 @@ if !exists('g:neocomplete#keyword_patterns') endif let g:neocomplete#keyword_patterns['default'] = '\h\w*' +" Enable heavy omni completion. +"if !exists('g:neocomplete#sources#omni#input_patterns') +" let g:neocomplete#sources#omni#input_patterns = {} +"endif +"let g:neocomplete#force_omni_input_patterns.go = '[^.[:digit:] *\t]\.' +if !exists('g:neocomplete#force_omni_input_patterns') + let g:neocomplete#force_omni_input_patterns = {} +endif +let g:neocomplete#force_omni_input_patterns.go = '[^.[:digit:] *\t]\.' + +"let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::' +"let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)' +"let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::' + " Enable omni completion. autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags @@ -31,3 +47,20 @@ autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS autocmd FileType python setlocal omnifunc=pythoncomplete#Complete autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete + +" Recommended key-mappings. +" : close popup and save indent. +imap my_cr_function() +function! s:my_cr_function() + return pumvisible() ? neocomplcache#close_popup() . "\" : "\" +endfunction + +" : completion. +inoremap pumvisible() ? "\" : "\" +" , : close popup and delete backword char. +inoremap neocomplete#smart_close_popup()."\" +inoremap neocomplete#smart_close_popup()."\" +inoremap neocomplete#close_popup() +inoremap neocomplete#cancel_popup() +" Close popup by . +"inoremap pumvisible() ? neocomplete#close_popup() : "\" diff --git a/vim/settings/syntastic.vim b/vim/settings/syntastic.vim index a069381..bc9e0bb 100644 --- a/vim/settings/syntastic.vim +++ b/vim/settings/syntastic.vim @@ -1,11 +1,11 @@ -"mark syntax errors with :signs -let g:syntastic_enable_signs=1 -"automatically jump to the error when saving the file -let g:syntastic_auto_jump=0 -"show the error list automatically -let g:syntastic_auto_loc_list=1 -"don't care about warnings -let g:syntastic_quiet_messages = {'level': 'warnings'} +let g:syntastic_enable_signs=1 "mark syntax errors with :signs +let g:syntastic_auto_jump=0 "automatically jump to the error when saving the file +let g:syntastic_auto_loc_list=1 "show the error list automatically +let g:syntastic_always_populate_loc_list = 0 +let g:syntastic_quiet_messages = {'level': 'warnings'} "don't care about warnings +let g:syntastic_aggregate_errors = 1 +let g:syntastic_check_on_open = 1 +let g:syntastic_check_on_wq = 0 " Default to eslint. If you need jshint, you can override this in " ~/.vimrc.after @@ -15,6 +15,10 @@ let g:syntastic_python_flake8_args='--ignore=F401,F403,F405,W0401,E501' let g:syntastic_python_pylint_post_args="--max-line-length=160" +set statusline+=%#warningmsg# +set statusline+=%{SyntasticStatuslineFlag()} +set statusline+=%* + " I have no idea why this is not working, as it used to " be a part of syntastic code but was apparently removed " This will make syntastic find the correct ruby specified by mri diff --git a/vim/settings/vim-fugitive.vim b/vim/settings/vim-fugitive.vim deleted file mode 100644 index b4ff5a0..0000000 --- a/vim/settings/vim-fugitive.vim +++ /dev/null @@ -1,15 +0,0 @@ -" The tree buffer makes it easy to drill down through the directories of your -" git repository, but it’s not obvious how you could go up a level to the -" parent directory. Here’s a mapping of .. to the above command, but -" only for buffers containing a git blob or tree -autocmd User fugitive - \ if fugitive#buffer().type() =~# '^\%(tree\|blob\)$' | - \ nnoremap .. :edit %:h | - \ endif - -" Every time you open a git object using fugitive it creates a new buffer. -" This means that your buffer listing can quickly become swamped with -" fugitive buffers. This prevents this from becomming an issue: - -autocmd BufReadPost fugitive://* set bufhidden=delete - diff --git a/zsh/aliases.zsh b/zsh/aliases.zsh index b54787b..afba33a 100644 --- a/zsh/aliases.zsh +++ b/zsh/aliases.zsh @@ -252,6 +252,5 @@ alias top_by_memory="top -o %MEM" alias gcaa="gia .; gcF" alias ror_ctags="ctags -R --languages=ruby --exclude=.git --exclude=log . \$(bundle list --paths)" alias docker_clean_images='docker rmi $(docker images -a --filter=dangling=true -q)' -alias vimgo='vim -u ~/.vimrc.go' alias find_large_files="sudo find / -xdev -type f -size +50M" alias start_polipo='polipo socksParentProxy=localhost:1080'