|  |  |  | @ -35,24 +35,7 @@ Plug 'nathanaelkane/vim-indent-guides' | 
			
		
	
		
			
				
					|  |  |  |  | " Plug 'donRaphaco/neotex', { 'for': 'tex' } | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'lervag/vimtex' | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'mhinz/neovim-remote' | 
			
		
	
		
			
				
					|  |  |  |  | if has('nvim') | 
			
		
	
		
			
				
					|  |  |  |  |   Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } | 
			
		
	
		
			
				
					|  |  |  |  | else | 
			
		
	
		
			
				
					|  |  |  |  |   Plug 'Shougo/deoplete.nvim' | 
			
		
	
		
			
				
					|  |  |  |  |   Plug 'roxma/nvim-yarp' | 
			
		
	
		
			
				
					|  |  |  |  |   Plug 'roxma/vim-hug-neovim-rpc' | 
			
		
	
		
			
				
					|  |  |  |  | endif | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'Shougo/neco-syntax' | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'Shougo/neoinclude.vim' | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'Shougo/neopairs.vim' | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'Shougo/context_filetype.vim' | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'Shougo/neco-vim' | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'carlitux/deoplete-ternjs', { 'do': 'npm install -g tern' } | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'ternjs/tern_for_vim' | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'Shougo/neosnippet.vim' | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'Shougo/neosnippet-snippets' | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'neoclide/coc.nvim', {'branch': 'release'} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | Plug 'w0rp/ale' | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -113,7 +96,10 @@ set wildignore+=*/tmp/*,*.so,*.swp,*.zip        " MacOSX/Linux | 
			
		
	
		
			
				
					|  |  |  |  | "set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe    " Windows | 
			
		
	
		
			
				
					|  |  |  |  | set timeoutlen=1000 ttimeoutlen=0               " No timeout before keypresses | 
			
		
	
		
			
				
					|  |  |  |  | set scrolloff=10 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | set cmdheight=2 | 
			
		
	
		
			
				
					|  |  |  |  | set updatetime=300 | 
			
		
	
		
			
				
					|  |  |  |  | set shortmess+=c | 
			
		
	
		
			
				
					|  |  |  |  | set signcolumn=yes | 
			
		
	
		
			
				
					|  |  |  |  | set lazyredraw          " Redraw only when we need to. | 
			
		
	
		
			
				
					|  |  |  |  | set showmatch           " Highlight matching [{()}] | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -151,9 +137,6 @@ set writebackup | 
			
		
	
		
			
				
					|  |  |  |  | " Leader | 
			
		
	
		
			
				
					|  |  |  |  | let mapleader=","        | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Fold toggle | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <space> za      | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Movement | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap j gj | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap k gk | 
			
		
	
	
		
			
				
					|  |  |  | @ -164,16 +147,9 @@ nnoremap <leader><space> :nohlsearch<CR> | 
			
		
	
		
			
				
					|  |  |  |  | " Session save | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <leader>s :mksession<CR> | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Make p in Visual mode replace the selected text with the yank register | 
			
		
	
		
			
				
					|  |  |  |  | vnoremap p <Esc>:let current_reg = @"<CR>gvdi<C-R>=current_reg<CR><Esc> | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " :W sudo saves the file | 
			
		
	
		
			
				
					|  |  |  |  | command W w !sudo tee % > /dev/null | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Completion with tab | 
			
		
	
		
			
				
					|  |  |  |  | inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>" | 
			
		
	
		
			
				
					|  |  |  |  | inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>" | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " NERD Tree | 
			
		
	
		
			
				
					|  |  |  |  | map <C-n> :NERDTreeToggle<CR> | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -217,25 +193,15 @@ let g:lightline = { | 
			
		
	
		
			
				
					|  |  |  |  | " ########### | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Indent guides | 
			
		
	
		
			
				
					|  |  |  |  | " | 
			
		
	
		
			
				
					|  |  |  |  | hi IndentGuidesOdd  ctermbg=8 | 
			
		
	
		
			
				
					|  |  |  |  | hi IndentGuidesEven ctermbg=8 | 
			
		
	
		
			
				
					|  |  |  |  | let g:indent_guides_start_level = 2 | 
			
		
	
		
			
				
					|  |  |  |  | let g:indent_guides_guide_size = 1 | 
			
		
	
		
			
				
					|  |  |  |  | let g:indent_guides_enable_on_vim_startup = 1 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Deoplete | 
			
		
	
		
			
				
					|  |  |  |  | let g:deoplete#enable_at_startup = 1 | 
			
		
	
		
			
				
					|  |  |  |  | let g:deoplete#num_processes = 1 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | "call deoplete#custom#option('sources', { | 
			
		
	
		
			
				
					|  |  |  |  | "		\ '_': ['buffer'], | 
			
		
	
		
			
				
					|  |  |  |  | "		\ 'cpp': ['buffer', 'tag'], | 
			
		
	
		
			
				
					|  |  |  |  | "		\}) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | let g:tern#command = ["tern"] | 
			
		
	
		
			
				
					|  |  |  |  | let g:tern#arguments = ["--persistent"] | 
			
		
	
		
			
				
					|  |  |  |  | " ALE | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " ale | 
			
		
	
		
			
				
					|  |  |  |  | let g:ale_completion_enabled = 0 | 
			
		
	
		
			
				
					|  |  |  |  | let g:ale_linters_explicit = 1 | 
			
		
	
		
			
				
					|  |  |  |  | let g:ale_linters = { | 
			
		
	
	
		
			
				
					|  |  |  | @ -248,43 +214,115 @@ let b:ale_fixers = { | 
			
		
	
		
			
				
					|  |  |  |  |       \ 'javascript': ['eslint'] | 
			
		
	
		
			
				
					|  |  |  |  |       \} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " neotex | 
			
		
	
		
			
				
					|  |  |  |  | let g:neotex_enabled	= 1 | 
			
		
	
		
			
				
					|  |  |  |  | let g:tex_flavor = 'latex' | 
			
		
	
		
			
				
					|  |  |  |  | let g:neotex_pdflatex_alternative	= 'xelatex' | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " neopairs | 
			
		
	
		
			
				
					|  |  |  |  | let g:neopairs#enable = 1 | 
			
		
	
		
			
				
					|  |  |  |  | " CoC | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " neco-vim | 
			
		
	
		
			
				
					|  |  |  |  | if !exists('g:necovim#complete_functions') | 
			
		
	
		
			
				
					|  |  |  |  | 		  let g:necovim#complete_functions = {} | 
			
		
	
		
			
				
					|  |  |  |  | 		endif | 
			
		
	
		
			
				
					|  |  |  |  | 		let g:necovim#complete_functions.Ref = | 
			
		
	
		
			
				
					|  |  |  |  | 		\ 'ref#complete' | 
			
		
	
		
			
				
					|  |  |  |  | " Use tab for trigger completion with characters ahead and navigate. | 
			
		
	
		
			
				
					|  |  |  |  | " Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin. | 
			
		
	
		
			
				
					|  |  |  |  | inoremap <silent><expr> <TAB> | 
			
		
	
		
			
				
					|  |  |  |  |       \ pumvisible() ? "\<C-n>" : | 
			
		
	
		
			
				
					|  |  |  |  |       \ <SID>check_back_space() ? "\<TAB>" : | 
			
		
	
		
			
				
					|  |  |  |  |       \ coc#refresh() | 
			
		
	
		
			
				
					|  |  |  |  | inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function! s:check_back_space() abort | 
			
		
	
		
			
				
					|  |  |  |  |   let col = col('.') - 1 | 
			
		
	
		
			
				
					|  |  |  |  |   return !col || getline('.')[col - 1]  =~# '\s' | 
			
		
	
		
			
				
					|  |  |  |  | endfunction | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " neosnippet | 
			
		
	
		
			
				
					|  |  |  |  | " Use <c-space> to trigger completion. | 
			
		
	
		
			
				
					|  |  |  |  | inoremap <silent><expr> <c-space> coc#refresh() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Plugin key-mappings. | 
			
		
	
		
			
				
					|  |  |  |  | " Note: It must be "imap" and "smap".  It uses <Plug> mappings. | 
			
		
	
		
			
				
					|  |  |  |  | imap <C-k>     <Plug>(neosnippet_expand_or_jump) | 
			
		
	
		
			
				
					|  |  |  |  | smap <C-k>     <Plug>(neosnippet_expand_or_jump) | 
			
		
	
		
			
				
					|  |  |  |  | xmap <C-k>     <Plug>(neosnippet_expand_target) | 
			
		
	
		
			
				
					|  |  |  |  | " Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position. | 
			
		
	
		
			
				
					|  |  |  |  | " Coc only does snippet and additional edit on confirm. | 
			
		
	
		
			
				
					|  |  |  |  | inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | 
			
		
	
		
			
				
					|  |  |  |  | " Or use `complete_info` if your vim support it, like: | 
			
		
	
		
			
				
					|  |  |  |  | " inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>" | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " SuperTab like snippets behavior. | 
			
		
	
		
			
				
					|  |  |  |  | " Note: It must be "imap" and "smap".  It uses <Plug> mappings. | 
			
		
	
		
			
				
					|  |  |  |  | "imap <expr><TAB> | 
			
		
	
		
			
				
					|  |  |  |  | " \ pumvisible() ? "\<C-n>" : | 
			
		
	
		
			
				
					|  |  |  |  | " \ neosnippet#expandable_or_jumpable() ? | 
			
		
	
		
			
				
					|  |  |  |  | " \    "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>" | 
			
		
	
		
			
				
					|  |  |  |  | smap <expr><TAB> neosnippet#expandable_or_jumpable() ? | 
			
		
	
		
			
				
					|  |  |  |  | \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>" | 
			
		
	
		
			
				
					|  |  |  |  | " Use `[g` and `]g` to navigate diagnostics | 
			
		
	
		
			
				
					|  |  |  |  | nmap <silent> [g <Plug>(coc-diagnostic-prev) | 
			
		
	
		
			
				
					|  |  |  |  | nmap <silent> ]g <Plug>(coc-diagnostic-next) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Remap keys for gotos | 
			
		
	
		
			
				
					|  |  |  |  | nmap <silent> gd <Plug>(coc-definition) | 
			
		
	
		
			
				
					|  |  |  |  | nmap <silent> gy <Plug>(coc-type-definition) | 
			
		
	
		
			
				
					|  |  |  |  | nmap <silent> gi <Plug>(coc-implementation) | 
			
		
	
		
			
				
					|  |  |  |  | nmap <silent> gr <Plug>(coc-references) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " For conceal markers. | 
			
		
	
		
			
				
					|  |  |  |  | "if has('conceal') | 
			
		
	
		
			
				
					|  |  |  |  | "  set conceallevel=2 concealcursor=niv | 
			
		
	
		
			
				
					|  |  |  |  | "endif | 
			
		
	
		
			
				
					|  |  |  |  | " Use K to show documentation in preview window | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <silent> K :call <SID>show_documentation()<CR> | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | let g:neosnippet#snippets_directory='~/.config/nvim/snippets' | 
			
		
	
		
			
				
					|  |  |  |  | function! s:show_documentation() | 
			
		
	
		
			
				
					|  |  |  |  |   if (index(['vim','help'], &filetype) >= 0) | 
			
		
	
		
			
				
					|  |  |  |  |     execute 'h '.expand('<cword>') | 
			
		
	
		
			
				
					|  |  |  |  |   else | 
			
		
	
		
			
				
					|  |  |  |  |     call CocAction('doHover') | 
			
		
	
		
			
				
					|  |  |  |  |   endif | 
			
		
	
		
			
				
					|  |  |  |  | endfunction | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Highlight symbol under cursor on CursorHold | 
			
		
	
		
			
				
					|  |  |  |  | autocmd CursorHold * silent call CocActionAsync('highlight') | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Remap for rename current word | 
			
		
	
		
			
				
					|  |  |  |  | nmap <leader>rn <Plug>(coc-rename) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Remap for format selected region | 
			
		
	
		
			
				
					|  |  |  |  | xmap <leader>f  <Plug>(coc-format-selected) | 
			
		
	
		
			
				
					|  |  |  |  | nmap <leader>f  <Plug>(coc-format-selected) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | augroup mygroup | 
			
		
	
		
			
				
					|  |  |  |  |   autocmd! | 
			
		
	
		
			
				
					|  |  |  |  |   " Setup formatexpr specified filetype(s). | 
			
		
	
		
			
				
					|  |  |  |  |   autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') | 
			
		
	
		
			
				
					|  |  |  |  |   " Update signature help on jump placeholder | 
			
		
	
		
			
				
					|  |  |  |  |   autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') | 
			
		
	
		
			
				
					|  |  |  |  | augroup end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Remap for do codeAction of selected region, ex: `<leader>aap` for current paragraph | 
			
		
	
		
			
				
					|  |  |  |  | xmap <leader>a  <Plug>(coc-codeaction-selected) | 
			
		
	
		
			
				
					|  |  |  |  | nmap <leader>a  <Plug>(coc-codeaction-selected) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Remap for do codeAction of current line | 
			
		
	
		
			
				
					|  |  |  |  | nmap <leader>ac  <Plug>(coc-codeaction) | 
			
		
	
		
			
				
					|  |  |  |  | " Fix autofix problem of current line | 
			
		
	
		
			
				
					|  |  |  |  | nmap <leader>qf  <Plug>(coc-fix-current) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Create mappings for function text object, requires document symbols feature of languageserver. | 
			
		
	
		
			
				
					|  |  |  |  | xmap if <Plug>(coc-funcobj-i) | 
			
		
	
		
			
				
					|  |  |  |  | xmap af <Plug>(coc-funcobj-a) | 
			
		
	
		
			
				
					|  |  |  |  | omap if <Plug>(coc-funcobj-i) | 
			
		
	
		
			
				
					|  |  |  |  | omap af <Plug>(coc-funcobj-a) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Use <C-d> for select selections ranges, needs server support, like: coc-tsserver, coc-python | 
			
		
	
		
			
				
					|  |  |  |  | " nmap <silent> <C-d> <Plug>(coc-range-select) | 
			
		
	
		
			
				
					|  |  |  |  | " xmap <silent> <C-d> <Plug>(coc-range-select) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Use `:Format` to format current buffer | 
			
		
	
		
			
				
					|  |  |  |  | command! -nargs=0 Format :call CocAction('format') | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Use `:Fold` to fold current buffer | 
			
		
	
		
			
				
					|  |  |  |  | command! -nargs=? Fold :call     CocAction('fold', <f-args>) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " use `:OR` for organize import of current buffer | 
			
		
	
		
			
				
					|  |  |  |  | command! -nargs=0 OR   :call     CocAction('runCommand', 'editor.action.organizeImport') | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Add status line support, for integration with other plugin, checkout `:h coc-status` | 
			
		
	
		
			
				
					|  |  |  |  | set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | " Using CocList | 
			
		
	
		
			
				
					|  |  |  |  | " Show all diagnostics | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <silent> <space>a  :<C-u>CocList diagnostics<cr> | 
			
		
	
		
			
				
					|  |  |  |  | " Manage extensions | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <silent> <space>e  :<C-u>CocList extensions<cr> | 
			
		
	
		
			
				
					|  |  |  |  | " Show commands | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <silent> <space>c  :<C-u>CocList commands<cr> | 
			
		
	
		
			
				
					|  |  |  |  | " Find symbol of current document | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <silent> <space>o  :<C-u>CocList outline<cr> | 
			
		
	
		
			
				
					|  |  |  |  | " Search workspace symbols | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <silent> <space>s  :<C-u>CocList -I symbols<cr> | 
			
		
	
		
			
				
					|  |  |  |  | " Do default action for next item. | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <silent> <space>j  :<C-u>CocNext<CR> | 
			
		
	
		
			
				
					|  |  |  |  | " Do default action for previous item. | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <silent> <space>k  :<C-u>CocPrev<CR> | 
			
		
	
		
			
				
					|  |  |  |  | " Resume latest coc list | 
			
		
	
		
			
				
					|  |  |  |  | nnoremap <silent> <space>p  :<C-u>CocListResume<CR> | 
			
		
	
	
		
			
				
					|  |  |  | 
 |