rewrite nvim for flakes
This commit is contained in:
		
							parent
							
								
									6eaa8a0ce1
								
							
						
					
					
						commit
						318f2b68c1
					
				|  | @ -1,6 +1,3 @@ | ||||||
| # When I'm stuck in the terminal or don't have access to Emacs, (neo)vim is my |  | ||||||
| # go-to. I am a vimmer at heart, after all. |  | ||||||
| 
 |  | ||||||
| { config, options, lib, pkgs, ... }: | { config, options, lib, pkgs, ... }: | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
|  | @ -17,12 +14,267 @@ in { | ||||||
|       unstable.neovim |       unstable.neovim | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     # This is for non-neovim, so it loads my nvim config |     # = TODO something like this n00b. | ||||||
|     # env.VIMINIT = "let \\$MYVIMRC='\\$XDG_CONFIG_HOME/nvim/init.vim' | source \\$MYVIMRC"; |     # builtins.concatStringsSep "\n" [ | ||||||
|  |     #   (lib.strings.fileContents ./base.vim) | ||||||
|  |     #   (lib.strings.fileContents ./plugins.vim) | ||||||
|  |     #   (lib.strings.fileContents ./lsp.vim) | ||||||
|  | 
 | ||||||
|  |     #   # this allows you to add lua config files | ||||||
|  |     #   '' | ||||||
|  |     #     lua << EOF | ||||||
|  |     #     ${lib.strings.fileContents ./config.lua} | ||||||
|  |     #     ${lib.strings.fileContents ./lsp.lua} | ||||||
|  |     #     EOF | ||||||
|  |     #   '' | ||||||
|  |     # ]; | ||||||
|  | 
 | ||||||
|  |     extraConfig = '' | ||||||
|  |       set tabstop=2 | ||||||
|  |       set showmatch | ||||||
|  |       set shiftwidth=2 | ||||||
|  |       set noexpandtab | ||||||
|  |       set autoindent | ||||||
|  |        | ||||||
|  |       set foldmethod=indent   " fold based on indent | ||||||
|  |       set number | ||||||
|  |       set nocompatible | ||||||
|  |       set relativenumber | ||||||
|  |       set showtabline=2 | ||||||
|  |       set autowriteall | ||||||
|  |       		syntax on | ||||||
|  |       set list lcs=tab:\|\  | ||||||
|  |       filetype plugin on | ||||||
|  |        | ||||||
|  |       set termguicolors | ||||||
|  |       let ayucolor="dark" | ||||||
|  |       colorscheme ayu | ||||||
|  |        | ||||||
|  |       " window | ||||||
|  |       nmap <leader>wh  :topleft  vnew<CR> | ||||||
|  |       nmap <leader>wl :botright vnew<CR> | ||||||
|  |       nmap <leader>wk    :topleft  new<CR> | ||||||
|  |       nmap <leader>wj  :botright new<CR> | ||||||
|  |        | ||||||
|  |       let mapleader = "\<Space>" | ||||||
|  |        | ||||||
|  |       " lightline colorscheme | ||||||
|  |       let g:lightline = { | ||||||
|  |       			\ 'colorscheme': 'seoul256', | ||||||
|  |       			\ } | ||||||
|  |        | ||||||
|  |       " moving splits with vim movements. | ||||||
|  |       :tnoremap <A-h> <C-\><C-N><C-w>h | ||||||
|  |       :tnoremap <A-j> <C-\><C-N><C-w>j | ||||||
|  |       :tnoremap <A-k> <C-\><C-N><C-w>k | ||||||
|  |       :tnoremap <A-l> <C-\><C-N><C-w>l | ||||||
|  |       :inoremap <A-h> <C-\><C-N><C-w>h | ||||||
|  |       :inoremap <A-j> <C-\><C-N><C-w>j | ||||||
|  |       :inoremap <A-k> <C-\><C-N><C-w>k | ||||||
|  |       :inoremap <A-l> <C-\><C-N><C-w>l | ||||||
|  |       :nnoremap <A-h> <leader>h | ||||||
|  |       :nnoremap <A-j> <leader>j | ||||||
|  |       :nnoremap <A-k> <leader>k | ||||||
|  |       :nnoremap <A-l> <leader>l | ||||||
|  |       :nnoremap <F5> "=strftime("%Y-%m-%d %H:%M:") | ||||||
|  |       :inoremap <F5> <C-R>=strftime("%Y-%m-%d %H:%M:") | ||||||
|  |        | ||||||
|  |       " exit normal mode in terminal | ||||||
|  |       :tnoremap <C-n> <C-\><C-n> | ||||||
|  |        | ||||||
|  |       let g:syntastic_always_populate_loc_list = 1 | ||||||
|  |       let g:syntastic_auto_loc_list = 1 | ||||||
|  |       let g:syntastic_check_on_open = 1 | ||||||
|  |       let g:syntastic_check_on_wq = 0 | ||||||
|  |        | ||||||
|  |       let g:rainbow_active = 0 | ||||||
|  |       autocmd BufReadPost,BufNewFile c,py,nix RainbowParenthesesToggleAll | ||||||
|  |        | ||||||
|  |       " keyboard commands | ||||||
|  |       map <leader>t :NERDTreeToggle<CR> | ||||||
|  |       map <leader>s :w<CR> | ||||||
|  |       map <leader>q :wq<CR> | ||||||
|  |       map <leader>r :RainbowParenthesesToggleAll<CR> | ||||||
|  |       map <leader>zs :ZettelSearch<CR> | ||||||
|  |       map <leader>zo :ZettelOpen<CR> | ||||||
|  |       map <leader>zn :ZettelNew<CR> | ||||||
|  |        | ||||||
|  |        | ||||||
|  |       " NERDTree  | ||||||
|  |       " open on directory | ||||||
|  |       autocmd StdinReadPre * let s:std_in=1 | ||||||
|  |        | ||||||
|  |       " coc | ||||||
|  |       " | ||||||
|  |       " if hidden is not set, TextEdit might fail. | ||||||
|  |       set hidden | ||||||
|  |        | ||||||
|  |       " Some servers have issues with backup files, see #649 | ||||||
|  |       set nobackup | ||||||
|  |       set nowritebackup | ||||||
|  |        | ||||||
|  |       " Better display for messages | ||||||
|  |       set cmdheight=2 | ||||||
|  |        | ||||||
|  |       " You will have bad experience for diagnostic messages when it's default 4000. | ||||||
|  |       set updatetime=300 | ||||||
|  |        | ||||||
|  |       " don't give |ins-completion-menu| messages. | ||||||
|  |       set shortmess+=c | ||||||
|  |        | ||||||
|  |       " always show signcolumns | ||||||
|  |       set signcolumn=yes | ||||||
|  |        | ||||||
|  |       " 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 | ||||||
|  |        | ||||||
|  |       " Use <c-space> to trigger completion. | ||||||
|  |       inoremap <silent><expr> <c-space> coc#refresh() | ||||||
|  |        | ||||||
|  |       " 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>" | ||||||
|  |        | ||||||
|  |       " 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) | ||||||
|  |        | ||||||
|  |       " Use K to show documentation in preview window | ||||||
|  |       nnoremap <silent> K :call <SID>show_documentation()<CR> | ||||||
|  |        | ||||||
|  |       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> | ||||||
|  |        | ||||||
|  |       au BufNewFile,BufRead *.frag,*.vert,*.fp,*.vp,*.glsl setf glsl | ||||||
|  |     ''; | ||||||
|  | 
 | ||||||
|  |     extraPackages = with pkgs; [ | ||||||
|  |       vim-nix | ||||||
|  |       fzf-vim | ||||||
|  |       vim-elixir | ||||||
|  |       emmet-vim | ||||||
|  |       nerdtree | ||||||
|  |       goyo-vim | ||||||
|  |       vim-sneak | ||||||
|  |       lightline-vim | ||||||
|  |       csv-vim | ||||||
|  |       vimwiki | ||||||
|  |       coc-nvim | ||||||
|  |       coc-json | ||||||
|  |       coc-python | ||||||
|  |       coc-pairs | ||||||
|  |       coc-emmet | ||||||
|  |       emmet-vim | ||||||
|  |       LanguageClient-neovim | ||||||
|  |       ayu-vim | ||||||
|  |       rainbow_parentheses-vim | ||||||
|  |       vim-surround | ||||||
|  |       vim-fugitive | ||||||
|  |       #iron-nvim | ||||||
|  |       #nvim-colorizer | ||||||
|  |       vim-devicons | ||||||
|  |       # testing | ||||||
|  |       #vim-processing | ||||||
|  |       #vim-tidal | ||||||
|  |       taskwiki | ||||||
|  |       vim-zettel | ||||||
|  |     ]; | ||||||
| 
 | 
 | ||||||
|     environment.shellAliases = { |     environment.shellAliases = { | ||||||
|       vim = "nvim"; |       vim = "nvim"; | ||||||
|       v   = "nvim"; |       v   = "nvim"; | ||||||
|  |       k   = "vim -c :VimwikiIndex"; | ||||||
|  |       kz  = "vim -c :VimwikiIndex -c :ZettelNew"; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										261
									
								
								modules/nvim.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										261
									
								
								modules/nvim.nix
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,261 @@ | ||||||
|  | { pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	#nvim | ||||||
|  |   {  | ||||||
|  |     environment.variables.EDITOR = "nvim"; | ||||||
|  |     environment.shellAliases = { | ||||||
|  |       k = "vim -c :VimwikiIndex"; | ||||||
|  |       kz = "vim -c :VimwikiIndex -c :ZettelNew"; | ||||||
|  |     }; | ||||||
|  |     environment.systemPackages = with pkgs; [  | ||||||
|  |       nodejs | ||||||
|  |   ( neovim.override { | ||||||
|  |   vimAlias = true; | ||||||
|  |   configure = { | ||||||
|  | 		packages.myPlugins = with pkgs.vimPlugins; { | ||||||
|  | 			start = [  | ||||||
|  | 				vim-nix | ||||||
|  | 				fzf-vim | ||||||
|  | 				vim-elixir | ||||||
|  | 				emmet-vim | ||||||
|  | 				nerdtree | ||||||
|  | 				goyo-vim | ||||||
|  | 				vim-sneak | ||||||
|  | 				lightline-vim | ||||||
|  | 				csv-vim | ||||||
|  |   				vimwiki | ||||||
|  |   				coc-nvim | ||||||
|  |   				coc-json | ||||||
|  |   				coc-python | ||||||
|  |   				coc-pairs | ||||||
|  |   				coc-emmet | ||||||
|  |   				emmet-vim | ||||||
|  |   				LanguageClient-neovim | ||||||
|  |   				ayu-vim | ||||||
|  |   				rainbow_parentheses-vim | ||||||
|  |   				vim-surround | ||||||
|  |   				vim-fugitive | ||||||
|  |   				#iron-nvim | ||||||
|  |   				#nvim-colorizer | ||||||
|  |   				vim-devicons | ||||||
|  |   				# testing | ||||||
|  |   				#vim-processing | ||||||
|  |   				#vim-tidal | ||||||
|  |   				taskwiki | ||||||
|  |   				vim-zettel | ||||||
|  |   				#vimwiki-sync | ||||||
|  | 			]; | ||||||
|  | 		}; | ||||||
|  |     customRC = '' | ||||||
|  | 	set tabstop=2 | ||||||
|  | 	set showmatch | ||||||
|  | 	set shiftwidth=2 | ||||||
|  | 	set noexpandtab | ||||||
|  | 	set autoindent | ||||||
|  | 
 | ||||||
|  | 	set foldmethod=indent   " fold based on indent | ||||||
|  | 	set number | ||||||
|  | 	set nocompatible | ||||||
|  | 	set relativenumber | ||||||
|  | 	set showtabline=2 | ||||||
|  | 	set autowriteall | ||||||
|  | 			syntax on | ||||||
|  | 	set list lcs=tab:\|\  | ||||||
|  | 	filetype plugin on | ||||||
|  | 
 | ||||||
|  | 	set termguicolors | ||||||
|  | 	let ayucolor="dark" | ||||||
|  | 	colorscheme ayu | ||||||
|  | 
 | ||||||
|  | 	" window | ||||||
|  | 	nmap <leader>wh  :topleft  vnew<CR> | ||||||
|  | 	nmap <leader>wl :botright vnew<CR> | ||||||
|  | 	nmap <leader>wk    :topleft  new<CR> | ||||||
|  | 	nmap <leader>wj  :botright new<CR> | ||||||
|  | 
 | ||||||
|  | 			let mapleader = "\<Space>" | ||||||
|  | 
 | ||||||
|  | 			" lightline colorscheme | ||||||
|  | 			let g:lightline = { | ||||||
|  | 						\ 'colorscheme': 'seoul256', | ||||||
|  | 						\ } | ||||||
|  | 
 | ||||||
|  | 			" moving splits with vim movements. | ||||||
|  | 			:tnoremap <A-h> <C-\><C-N><C-w>h | ||||||
|  | 			:tnoremap <A-j> <C-\><C-N><C-w>j | ||||||
|  | 			:tnoremap <A-k> <C-\><C-N><C-w>k | ||||||
|  | 			:tnoremap <A-l> <C-\><C-N><C-w>l | ||||||
|  | 			:inoremap <A-h> <C-\><C-N><C-w>h | ||||||
|  | 			:inoremap <A-j> <C-\><C-N><C-w>j | ||||||
|  | 			:inoremap <A-k> <C-\><C-N><C-w>k | ||||||
|  | 			:inoremap <A-l> <C-\><C-N><C-w>l | ||||||
|  | 			:nnoremap <A-h> <leader>h | ||||||
|  | 			:nnoremap <A-j> <leader>j | ||||||
|  | 			:nnoremap <A-k> <leader>k | ||||||
|  | 			:nnoremap <A-l> <leader>l | ||||||
|  | 			:nnoremap <F5> "=strftime("%Y-%m-%d %H:%M:") | ||||||
|  | 			:inoremap <F5> <C-R>=strftime("%Y-%m-%d %H:%M:") | ||||||
|  | 
 | ||||||
|  |       " exit normal mode in terminal | ||||||
|  |       :tnoremap <C-n> <C-\><C-n> | ||||||
|  | 
 | ||||||
|  | 			let g:syntastic_always_populate_loc_list = 1 | ||||||
|  | 			let g:syntastic_auto_loc_list = 1 | ||||||
|  | 			let g:syntastic_check_on_open = 1 | ||||||
|  | 			let g:syntastic_check_on_wq = 0 | ||||||
|  | 
 | ||||||
|  |       let g:rainbow_active = 0 | ||||||
|  |       autocmd BufReadPost,BufNewFile c,py,nix RainbowParenthesesToggleAll | ||||||
|  | 
 | ||||||
|  | 			" keyboard commands | ||||||
|  | 			map <leader>t :NERDTreeToggle<CR> | ||||||
|  | 			map <leader>s :w<CR> | ||||||
|  | 			map <leader>q :wq<CR> | ||||||
|  |       map <leader>r :RainbowParenthesesToggleAll<CR> | ||||||
|  |       map <leader>zs :ZettelSearch<CR> | ||||||
|  |       map <leader>zo :ZettelOpen<CR> | ||||||
|  |       map <leader>zn :ZettelNew<CR> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 			" NERDTree  | ||||||
|  | 			" open on directory | ||||||
|  | 			autocmd StdinReadPre * let s:std_in=1 | ||||||
|  | 
 | ||||||
|  | 			" coc | ||||||
|  | 			" | ||||||
|  | 			" if hidden is not set, TextEdit might fail. | ||||||
|  | 			set hidden | ||||||
|  | 
 | ||||||
|  | 			" Some servers have issues with backup files, see #649 | ||||||
|  | 			set nobackup | ||||||
|  | 			set nowritebackup | ||||||
|  | 
 | ||||||
|  | 			" Better display for messages | ||||||
|  | 			set cmdheight=2 | ||||||
|  | 
 | ||||||
|  | 			" You will have bad experience for diagnostic messages when it's default 4000. | ||||||
|  | 			set updatetime=300 | ||||||
|  | 
 | ||||||
|  | 			" don't give |ins-completion-menu| messages. | ||||||
|  | 			set shortmess+=c | ||||||
|  | 
 | ||||||
|  | 			" always show signcolumns | ||||||
|  | 			set signcolumn=yes | ||||||
|  | 
 | ||||||
|  | 			" 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 | ||||||
|  | 
 | ||||||
|  | 			" Use <c-space> to trigger completion. | ||||||
|  | 			inoremap <silent><expr> <c-space> coc#refresh() | ||||||
|  | 
 | ||||||
|  | 			" 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>" | ||||||
|  | 
 | ||||||
|  | 			" 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) | ||||||
|  | 
 | ||||||
|  | 			" Use K to show documentation in preview window | ||||||
|  | 			nnoremap <silent> K :call <SID>show_documentation()<CR> | ||||||
|  | 
 | ||||||
|  | 			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> | ||||||
|  | 
 | ||||||
|  | 			au BufNewFile,BufRead *.frag,*.vert,*.fp,*.vp,*.glsl setf glsl | ||||||
|  | 				''; | ||||||
|  | 			}; | ||||||
|  | 		} | ||||||
|  | 	)]; | ||||||
|  | } | ||||||
		Loading…
	
		Reference in a new issue