From 1b12ca0d13e39b202bf5c67b10bac98b93357082 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 21 Nov 2019 18:04:25 +0100 Subject: [PATCH] Add experimental coc.nvim module --- .config/nvim/init.vim | 2 + .../academia_fzf.vim | 0 .../academia_pandoc.vim | 0 .../academia_unite_citation.vim | 0 .../base_no_plugins.vim | 0 .../modules_experimental/coc-completion.vim | 106 ++++++++++++++++++ 6 files changed, 108 insertions(+) rename .config/nvim/{profiles => modules_experimental}/academia_fzf.vim (100%) rename .config/nvim/{profiles => modules_experimental}/academia_pandoc.vim (100%) rename .config/nvim/{profiles => modules_experimental}/academia_unite_citation.vim (100%) rename .config/nvim/{profiles => modules_experimental}/base_no_plugins.vim (100%) create mode 100644 .config/nvim/modules_experimental/coc-completion.vim diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index 304fe1c..b46c5a1 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -40,6 +40,8 @@ runtime! pluglist/**/*.vim call plug#end() endif +colo one + " }}} " VIM SETTINGS {{{ " ================================================================================ diff --git a/.config/nvim/profiles/academia_fzf.vim b/.config/nvim/modules_experimental/academia_fzf.vim similarity index 100% rename from .config/nvim/profiles/academia_fzf.vim rename to .config/nvim/modules_experimental/academia_fzf.vim diff --git a/.config/nvim/profiles/academia_pandoc.vim b/.config/nvim/modules_experimental/academia_pandoc.vim similarity index 100% rename from .config/nvim/profiles/academia_pandoc.vim rename to .config/nvim/modules_experimental/academia_pandoc.vim diff --git a/.config/nvim/profiles/academia_unite_citation.vim b/.config/nvim/modules_experimental/academia_unite_citation.vim similarity index 100% rename from .config/nvim/profiles/academia_unite_citation.vim rename to .config/nvim/modules_experimental/academia_unite_citation.vim diff --git a/.config/nvim/profiles/base_no_plugins.vim b/.config/nvim/modules_experimental/base_no_plugins.vim similarity index 100% rename from .config/nvim/profiles/base_no_plugins.vim rename to .config/nvim/modules_experimental/base_no_plugins.vim diff --git a/.config/nvim/modules_experimental/coc-completion.vim b/.config/nvim/modules_experimental/coc-completion.vim new file mode 100644 index 0000000..1f33e4e --- /dev/null +++ b/.config/nvim/modules_experimental/coc-completion.vim @@ -0,0 +1,106 @@ +" some things do not work perfectly yet +" I have to take a look at the bindings +" MOSTLY, it works +" but startup takes ages (>1s) + +" one more thing needs to be done for clever coc linting/fixing: +" create a file called coc-settings.json in nvim config dir with the +" following content: +" +"{ +" // Require .prettierrc +" "prettier.requireConfig": true, +" // Tslint on save +" "tslint.enable": true, +" "tslint.autoFixOnSave": true, +" // Run prettier (and others) +" "coc.preferences.formatOnSaveFiletypes": [ +" "css", +" "markdown", +" "Markdown", +" "javascript", +" "javascriptreact", +" "typescript", +" "typescriptreact" +" ] +"} + +Plug 'neoclide/coc.nvim', {'do': { -> coc#util#install()}, 'on': [], 'for': []} +Plug 'neoclide/coc-snippets', {'do': 'yarn install --frozen-lockfile'} +Plug 'neoclide/coc-tsserver', {'do': 'yarn install --frozen-lockfile'} +Plug 'neoclide/coc-prettier', {'do': 'yarn install --frozen-lockfile'} +Plug 'neoclide/coc-eslint', {'do': 'yarn install --frozen-lockfile'} +Plug 'neoclide/coc-tslint', {'do': 'yarn install --frozen-lockfile'} +Plug 'neoclide/coc-html', {'do': 'yarn install --frozen-lockfile'} +Plug 'neoclide/coc-css', {'do': 'yarn install --frozen-lockfile'} +" Plug 'neoclide/coc-highlight', {'do': 'yarn install --frozen-lockfile'} " color highlighting +Plug 'neoclide/coc-json', {'do': 'yarn install --frozen-lockfile'} +Plug 'neoclide/coc-yaml', {'do': 'yarn install --frozen-lockfile'} +Plug 'neoclide/coc-rls', {'do': 'yarn install --frozen-lockfile'} +Plug 'neoclide/coc-git', {'do': 'yarn install --frozen-lockfile'} +Plug 'fannheyward/coc-rust-analyzer', {'do': 'yarn install --frozen-lockfile'} +Plug 'fannheyward/coc-markdownlint', {'do': 'yarn install --frozen-lockfile'} +Plug 'fannheyward/coc-texlab', {'do': 'yarn install --frozen-lockfile'} +Plug 'iamcco/coc-vimlsp', {'do': 'yarn install --frozen-lockfile'} + +" lazy loading since they require a lot of startup time +augroup load_ide_features + autocmd! + autocmd InsertEnter * call plug#load('coc.nvim') + \| autocmd! load_ide_features +augroup end + +" https://github.com/neoclide/coc.nvim#example-vim-configuration +inoremap coc#refresh() + +" gd - go to definition of word under cursor +nmap gd (coc-definition) +nmap gy (coc-type-definition) + +" gi - go to implementation +nmap gi (coc-implementation) + +" gr - find references +nmap gr (coc-references) + +" gh - get hint on whatever's under the cursor +nnoremap K :call show_documentation() +nnoremap gh :call show_documentation() + +function! s:show_documentation() + if &filetype == 'vim' + execute 'h '.expand('') + else + call CocAction('doHover') + endif +endfunction + +" " Highlight symbol under cursor on CursorHold +" autocmd CursorHold * silent call CocActionAsync('highlight') + +nnoremap co :CocList outline +nnoremap cs :CocList -I symbols + +" List errors +nnoremap cl :CocList locationlist + +" list commands available in tsserver (and others) +nnoremap cc :CocList commands + +" restart when tsserver gets wonky +nnoremap cR :CocRestart + +" view all errors +nnoremap cl :CocList locationlist + +" manage extensions +nnoremap cx :CocList extensions + +" rename the current word in the cursor +nmap cr (coc-rename) +nmap cf (coc-format-selected) +vmap cf (coc-format-selected) + +" run code actions +vmap ca (coc-codeaction-selected) +nmap ca (coc-codeaction-selected)