summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vimrc478
1 files changed, 142 insertions, 336 deletions
diff --git a/.vimrc b/.vimrc
index 883cbab..f8638f8 100644
--- a/.vimrc
+++ b/.vimrc
@@ -1,65 +1,44 @@
" Plugin Manager {{{
call plug#begin('~/.vim/plugged')
+ """ Customization
Plug 'morhetz/gruvbox', {'rtp': 'vim'} " Color theme
- Plug 'junegunn/fzf' " Used for commands like :Commits, :History, :Files
- Plug 'junegunn/fzf.vim'
- Plug 'preservim/nerdtree' " Browse directories (:NERDTree)
- Plug 'Raimondi/delimitMate' " Autocomplete brackets and quotes
- Plug 'tomtom/tcomment_vim' " Toggle comments (gc, gcc)
- Plug 'godlygeek/tabular' " Line up text by a given character (:Tabularize /CHAR)
- Plug 'vim-syntastic/syntastic' " Syntax error checker
- Plug 'neoclide/coc.nvim', {'branch': 'release'} " IntelliSense practically
- Plug 'itchyny/lightline.vim' " Statusline and tabline for Vim
- Plug 'tpope/vim-fugitive' " git integration
- Plug 'mbbill/undotree' " Easily interact with undo history
- Plug 'OmniSharp/omnisharp-vim' " C# tools (autocompletion, ...)
- Plug 'wakatime/vim-wakatime' " Time tracking via wakaime.com
- Plug 'dense-analysis/ale' " Syntax checker via LSP
- Plug 'ryanoasis/vim-devicons' " Icons on stuff like NERDTree
- Plug 'honza/vim-snippets' " Ready snippets for some langauges
- Plug 'pseewald/vim-anyfold' " Better folding
- Plug 'editorconfig/editorconfig-vim' " Support for EditorConfig
- Plug 'tpope/vim-eunuch' " Easy UNIX shell commands
- Plug 'mg979/vim-visual-multi' " Multiple line cursor (and other stuff)
- Plug 'zivyangll/git-blame.vim' " Show who last edited a line
- Plug 'kien/tabman.vim' " Show open buffers
- Plug 'alvan/vim-closetag' " Automatically add HTML closing tags
- Plug 'OrangeT/vim-csharp'
- Plug 'neovimhaskell/haskell-vim'
- Plug 'davidhalter/jedi-vim'
- Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
- Plug 'digitaltoad/vim-pug'
+ Plug 'itchyny/lightline.vim' " Statusline and tabline for Vim
+ Plug 'ryanoasis/vim-devicons' " Icons on stuff like NERDTree
+
+ """ Quality of life
+ Plug 'tomtom/tcomment_vim' " Toggle comments (gc, gcc)
+ Plug 'Raimondi/delimitMate' " Autocomplete brackets and quotes
+ Plug 'preservim/nerdtree' " Browse directories (:NERDTree)
+ Plug 'mbbill/undotree' " Easily interact with undo history
+ Plug 'mg979/vim-visual-multi' " Multiple line cursor (and other stuff)
+ Plug 'godlygeek/tabular' " Line up text by a given character (:Tabularize /CHAR)
+ Plug 'tpope/vim-eunuch' " Easy UNIX shell commands
+ Plug 'alvan/vim-closetag' " Automatically add HTML closing tags
+ Plug 'kien/tabman.vim' " Show open buffers
+
+ """ Software development
+ Plug 'prabirshrestha/vim-lsp' " LSP servers in Vim
+ Plug 'prabirshrestha/asyncomplete.vim' " Autocompletion from LSP server
+ Plug 'prabirshrestha/asyncomplete-lsp.vim' " Integration with vim-lsp
+ Plug 'mattn/vim-lsp-settings' " Automatic LSP server configuration
+ Plug 'honza/vim-snippets' " Ready snippets for some languages
+ Plug 'editorconfig/editorconfig-vim' " Support for EditorConfig
+ Plug 'zivyangll/git-blame.vim' " Show who last edited a line
+ Plug 'wakatime/vim-wakatime' " Time tracking via wakatime.com
call plug#end()
" }}}
-" Vim-anyfold + folding {{{
- filetype plugin indent on
- syntax on
- autocmd Filetype * AnyFoldActivate " activate for all filetypes
- autocmd FileType,BufRead vim,text,sh setlocal foldmethod=marker
- set foldlevel=99 " Open all folds by default
- autocmd FileType,BufRead vim,sh setlocal foldlevel=0
-" }}}
-
" General {{{
" Color scheme {{{
- let g:gruvbox_contrast_dark = 'hard'
colorscheme gruvbox
+ let g:gruvbox_contrast_dark = 'hard'
set background=dark " Setting dark mode
" }}}
- " Identation {{{
- set tabstop=4 " Show tabs as 4 wide
- set shiftwidth=4 " Indent with 4 spaces
-
- autocmd BufRead,BufNewFile *.component.css set filetype=css
- autocmd FileType css,ts setlocal ts=2 sw=2 sts=0 expandtab " Tranform tabs in CSS and TS into 2 spaces
- " }}}
-
" Character visuals {{{
- set list " Enabled customization of whitespace characters, so spaces, tabs, EOL, etc. (:h 'list')
+ set list " Enabled customization of white space characters, so spaces, tabs, EOL, etc. (:h 'list')
" Show tabs as a | with three spaces
" DO NOT remove the trailing space in the next line!
@@ -67,11 +46,12 @@
" }}}
" Backspace and cursor {{{
- autocmd InsertEnter,InsertLeave * set cul! " Highlight current line, when in insert mode
- set backspace=indent,eol,start " Better backspace functionality
+ set cul " Highlight current cursor line
+ autocmd InsertEnter,InsertLeave * set cul! " Don't highlight current line, when in insert mode
+ set backspace=indent,eol,start " Better backspace functionality
- set scrolloff=0 " Don't keep any screen lines above or below the cursor
set number " Show line numbers to the left
+ set scrolloff=0 " Don't keep any screen lines above or below the cursor
set mouse=a " Mouse support
" Thin cursor in insert mode in Gnome-Terminal (version >=3.16 ; also works with Terminator)
@@ -87,44 +67,80 @@
endif
" }}}
- " Ctrl bindings {{{
+ " Indentation {{{
+ set tabstop=4 " Show tabs as 4 wide
+ set shiftwidth=4 " Indent with 4 spaces
+
+ autocmd BufRead,BufNewFile *.component.css set filetype=css
+ autocmd FileType css,ts setlocal ts=2 sw=2 sts=0 expandtab " Transform tabs in CSS and TS into 2 spaces
+ " }}}
+
+ " Folding {{{
+ filetype plugin indent on
+ syntax on
+ autocmd FileType vim,text,sh setlocal foldmethod=marker
+
+ set foldlevel=99 " Open all folds by default
+ autocmd FileType vim,sh setlocal foldlevel=0
+
+ set foldtext=MyFoldText()
+ function MyFoldText()
+ let line = substitute(getline(v:foldstart), "\t", repeat(" ", shiftwidth(0)), "") " Gets the first fold line and replace tabs with spaces (as many as shiftwidth is set to)
+ let linecount = v:foldend - v:foldstart " Calculates amount of folded lines
+ return line . repeat(" ", winwidth('%') - strlen(line) - 10 - strlen(linecount))
+ \ . "  " . linecount . "  " " Shows our line, then a lot of spaces, and at the very end we have line number and arrows
+ endfunction
+ " }}}
+
+ " Bindings {{{
+ " Don't get into insert mode after adding a line with o/O
+ nnoremap o o<Esc>
+ nnoremap O O<Esc>
+
" Ctrl-Backspace deletes the previous word in insert mode.
- noremap! <C-BS> <C-w>
- noremap! <C-h> <C-w>
+ inoremap <C-h> <C-w>
+ inoremap <C-BS> <C-w>
- " The usual Ctrl+s, Ctrl+v type of bindings
+ " Ctrl+s; Ctrl+c, Ctrl+v, Ctrl+x; Ctrl+z, Ctrl+r; Ctrl+a bindings that work on GUI applications
" Partly taken from: https://gist.github.com/jshih/3423345
+ imap <C-s> <ESC>:w<CR>a
+ nmap <C-S> <ESC>:w<CR>
+ "imap <C-S-z> <C-r> An impossible dream
vmap <C-c> "+yi<Esc>
- vmap <C-x> "+c<Esc>
vmap <C-v> c<ESC>"+p<Esc>
imap <C-v> <ESC>"+pa
- map <C-a> ggVG
+ vmap <C-x> "+c<Esc>
imap <C-z> <ESC>ui
imap <C-r> <ESC><C-r>i
- "imap <C-S-z> <C-r> An impossible dream
- imap <C-s> <ESC>:w<CR>a
- nmap <C-S> <ESC>:w<CR>
+ map <C-a> ggVG
+
+ " Show all buffers and be able to just type in the number of the buffer
map <C-f> :set nomore<Bar>:ls<Bar>:set more<CR>:b<Space>
- " Use Ctrl + hjkl for navigation in insert mode
- " inoremap <C-h> <Left>
- " inoremap <C-j> <Down>
- " inoremap <C-k> <Up>
- " inoremap <C-l> <Right>
- " Go between tabs with Ctrl+l (tab to the right) and Ctrl+h (tab to the left)
- " nnoremap <C-l> :tabn<CR>
- " nnoremap <C-h> :tabp<CR>
+ " Move a line up and down with Alt+k and Alt-j
+ execute "set <M-j>=\ej"
+ nnoremap <M-j> <ESC>:m+1<CR>
+ execute "set <M-k>=\ek"
+ nnoremap <M-k> <ESC>:m-2<CR>
+
+
+ " Make session file
+ nnoremap <F1> <ESC>:mksession! .vim-session<CR>
+ " Show who edited the current line from git history
+ nnoremap <F8> :<C-u>call gitblame#echo()<CR>
+ " Open lazygit in a new tab with =
+ nnoremap = :tab ter ++close lazygit<CR>
" }}}
- " Comand abbreviations {{{
- " Cyrilic (Bulgarian yawerty layout) support
+ " Command abbreviations {{{
+ " Cyrillic (Bulgarian yawerty layout) support
ca в w
ca ва wa
ca ь x
ca ьа xa
- " The following works almost the same as normal :x and :xa, but can also close running jobs (e.g. terminal windows)
+ " Make x and xa just save and quit without saving. This allows for closing all tabs and terminals.
ca x w <bar> q!
ca xa wa <bar> qa!
@@ -133,37 +149,23 @@
ca te tabe
" }}}
- " Custom app open bindings {{{
- nnoremap <F8> :<C-u>call gitblame#echo()<CR>
- nnoremap = :tab ter ++close lazygit<CR>
- " }}}
-
- " Other bindings {{{
- " Don't get into insert mode after adding a line with o/O
- nnoremap o o<Esc>
- nnoremap O O<Esc>
-
- " Move a line up and down with Alt+k and Alt-j
- execute "set <M-j>=\ej"
- nnoremap <M-j> <ESC>:m+1<CR>
- execute "set <M-k>=\ek"
- nnoremap <M-k> <ESC>:m-2<CR>
-
- " Make session file
- nnoremap <F1> <ESC>:mksession! .vim-session<CR>
- " }}}
-
- " Omni complition {{{
+ " Omni completion {{{
" Omni completion supports C, HTML, CSS, JavaScript, PHP, Python, Ruby, SQL, XML
set omnifunc=syntaxcomplete#Complete " Completion for all supported languages
" Do omni completion from Ctrl+Space
- nnoremap <C-Space> <C-X><C-O>
- " }}} -------------------------<
+ inoremap <C-@> <C-X><C-O>
+
+ " Thanks to: https://vim.fandom.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE
+ set completeopt=longest,menuone
+ " [ The following are disabled, because they conflict with delimitMate's autobracket feature ]
+ " inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
+ " inoremap <expr> <C-n> pumvisible() ? '<C-n>' : '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'
+ " }}}
" Spell check mode {{{
" When you press F6 it will toggle a "spell check mode",
- " spell is activated and the colorscheme is changed
+ " spell is activated and the colour scheme is changed
nmap <F6> :call SpellCheckModeToggle()<CR>
function! SpellCheckModeToggle()
@@ -179,6 +181,8 @@
" Scrolling (shows history) in terminal (except in lazygit)
" Scroll up to activate it, and press a to deactivate it
" Slightly modified version of: https://github.com/vim/vim/issues/2490#issuecomment-393973253
+ tmap <silent> <ScrollWheelUp> <c-w>:call EnterNormalMode()<CR>
+
function! ExitNormalMode()
unmap <buffer> <silent> <RightMouse>
call feedkeys("a")
@@ -193,8 +197,11 @@
map <buffer> <silent> <RightMouse> :call ExitNormalMode()<CR>
endif
endfunction
-
- tmap <silent> <ScrollWheelUp> <c-w>:call EnterNormalMode()<CR>
+ " }}}
+
+ " Other {{{
+ autocmd BufRead,BufNewFile * set tw=0 " Sets textwidth to 0 for all files (set with autocmd since just doing "set tw=0" can be overridden)
+ set signcolumn=number " Show signs and numbers on the same column
" }}}
" }}}
@@ -205,56 +212,29 @@
" }}}
" NERDTree {{{
- let NERDTreeCustomOpenArgs={'file':{'where':'t'}} " Open file in new tab, doesn't work only for double-click
- let NERDTreeShowHidden=1
" Toggle NERDTree with Tab
nmap <Tab> :NERDTreeToggle<CR>
- let NERDTreeIgnore=['\.swp$', '\~$'] " Ignore file, ending with .swp and ~
+
+ let NERDTreeCustomOpenArgs = {'file':{'where':'t'}} " Open file in new tab, doesn't work only for double-click
+ let NERDTreeShowHidden = 1
+ let NERDTreeWinPos = "right"
+ let NERDTreeIgnore = ['\.swp$', '\~$'] " Ignore file, ending with .swp and ~
" }}}
" Undotree {{{
" Toggle undotree with F5
nmap <F5> :UndotreeToggle<CR>
- if !exists('g:undotree_WindowLayout')
- let g:undotree_WindowLayout = 2
- endif
-
- " e.g. using 'd' instead of 'days' to save some space.
- if !exists('g:undotree_ShortIndicators')
- let g:undotree_ShortIndicators = 1
- endif
-
- " if set, let undotree window get focus after being opened, otherwise
- " focus will stay in current window.
- if !exists('g:undotree_SetFocusWhenToggle')
- let g:undotree_SetFocusWhenToggle = 1
- endif
-
- " tree node shape.
- if !exists('g:undotree_TreeNodeShape')
- let g:undotree_TreeNodeShape = '*'
- endif
-
- if !exists('g:undotree_DiffCommand')
- let g:undotree_DiffCommand = "diff"
- endif
+ let g:undotree_WindowLayout = 2
+ let g:undotree_ShortIndicators = 1 " e.g. using 'd' instead of 'days' to save some space.
+ let g:undotree_SetFocusWhenToggle = 1 " if set, let undotree window get focus after being opened, otherwise focus will stay in current window.
+ let g:undotree_TreeNodeShape = '*'
+ let g:undotree_DiffCommand = "diff"
" }}}
" Tabman {{{
let g:tabman_toggle = '<S-Tab>'
- let g:tabman_side = 'right'
-" }}}
-
-" Syntastic {{{
- set statusline+=%#warningmsg#
- set statusline+=%{SyntasticStatuslineFlag()}
- set statusline+=%*
-
- 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:tabman_side = 'right'
" }}}
" Lightline {{{
@@ -305,7 +285,7 @@
\ }
" }}}
- " Function modification {{{
+ " Function overrides {{{
" Most of the following functions are just modification of source:
" Examples from doc file - https://github.com/itchyny/lightline.vim/blob/53176a0b75d6389d775d7bce0d494e58fc654f38/doc/lightline.txt#L583
" Tab source code - https://github.com/itchyny/lightline.vim/blob/master/autoload/lightline/tab.vim
@@ -330,11 +310,11 @@
return strlen(&filetype) ? WebDevIconsGetFileTypeSymbol() . ' ' . &filetype : ''
endfunction
- " Adds the filetype icon in tabs and limit their width
+ " Adds the file type icon in tabs and limit their width
function! LightlineTabFilename(n) abort
let buflist = tabpagebuflist(a:n)
- let winnr = tabpagewinnr(a:n)
- let _ = (expand('#'.buflist[winnr - 1].':t') !=# '' ? expand('#'.buflist[winnr - 1].':t') : '[No Name]')
+ let winnr = tabpagewinnr(a:n)
+ let _ = (expand('#'.buflist[winnr - 1].':t') !=# '' ? expand('#'.buflist[winnr - 1].':t') : '[No Name]')
" Limit the width of tabs, so they don't go out of the screen
let tabNameLengthMax = &columns/((tabpagenr('$') > 0 ? tabpagenr('$') : 0) + 5)
@@ -354,208 +334,34 @@
" }}}
" }}}
-" Ale settings {{{
- let g:ale_linters = {
- \ 'cs': ['OmniSharp'],
- \}
- let b:ale_linters = ['cs']
-" }}}
-
-" vim-go {{{
- let g:go_highlight_extra_types = 1
- let g:go_highlight_space_tab_error = 1
- let g:go_highlight_trailing_whitespace_error = 1
- let g:go_highlight_operators = 1
- let g:go_highlight_functions = 1
- let g:go_highlight_function_parameters = 1
- let g:go_highlight_function_calls = 1
- let g:go_highlight_types = 1
- let g:go_highlight_fields = 1
- let g:go_highlight_variable_declarations = 1
- let g:go_highlight_variable_assignments = 1
+" asyncomplete {{{
+ inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
+ inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
+ " inoremap <expr> <cr> pumvisible() ? asyncomplete#close_popup() : "\<cr>"
+ imap <c-space> <Plug>(asyncomplete_force_refresh)
- autocmd Filetype go nmap <silent> <buffer> <F2> : GoRename<CR>
- autocmd Filetype go nmap <silent> <buffer> <F5> : GoRun main/main.go<CR>
-" }}}
-
-" OmniSharp settings {{{
- let g:syntastic_cs_checkers = ['code_checker']
+ " allow modifying the completeopt variable, or it will
+ " be overridden all the time
+ let g:asyncomplete_auto_completeopt = 0
+
+ set completeopt=menuone,noinsert,noselect,preview
- autocmd Filetype cs nmap <silent> <buffer> gd : OmniSharpGotoDefinition<CR>
- autocmd Filetype cs nmap <silent> <buffer> gy : OmniSharpTypeLookup<CR>
- autocmd Filetype cs nmap <silent> <buffer> gi : OmniSharpFindImplementations<CR>
- autocmd Filetype cs nmap <silent> <buffer> gr : OmniSharpFindUsages<CR>
- autocmd FileType cs nmap <silent> <buffer> <F2> : OmniSharpRename<CR>
- autocmd FileType cs nmap <silent> <buffer> ff : OmniSharpCodeFormat<CR>
- autocmd FileType cs nmap <silent> <buffer> fu : OmniSharpFixUsings<CR>
+ autocmd! CompleteDone * if pumvisible() == 0 | pclose | endif
" }}}
-" haskell-vim settings {{{
- let g:haskell_classic_highlighting = 1
- let g:haskell_enable_quantification = 1 " to enable highlighting of `forall`
- let g:haskell_enable_recursivedo = 1 " to enable highlighting of `mdo` and `rec`
- let g:haskell_enable_arrowsyntax = 1 " to enable highlighting of `proc`
- let g:haskell_enable_pattern_synonyms = 1 " to enable highlighting of `pattern`
- let g:haskell_enable_typeroles = 1 " to enable highlighting of type roles
- let g:haskell_enable_static_pointers = 1 " to enable highlighting of `static`
- let g:haskell_backpack = 1 " to enable highlighting of backpack keywords
+" vim-lsp {{{
+ let g:lsp_diagnostics_echo_cursor = 1
+ let g:lsp_diagnostics_float_cursor = 1
+ let g:lsp_diagnostics_signs_error = {'text': ' '}
+ let g:lsp_diagnostics_signs_warning = {'text': ' '}
+ let g:lsp_diagnostics_signs_hint = {'text': ' '}
+ let g:lsp_document_code_action_signs_hint = {'text': ' '}
+
+ let g:lsp_semantic_enabled = 1
+ let g:lsp_format_sync_timeout = 1000
+ let g:lsp_document_did_save_delay = 1000
" }}}
-" COC settings {{{
- " All of the following is the example configuration with some values modified
- " https://github.com/neoclide/coc.nvim#example-vim-configuration
-
- " TextEdit might fail if hidden is not set.
- set hidden
-
- " Some servers have issues with backup files, see #649.
- set nobackup
- set nowritebackup
-
- " Give more space for displaying messages.
- set cmdheight=2
-
- " Having longer update time (default is 4000 ms = 4 s) leads to noticeable
- " delays and poor user experience.
- set updatetime=300
-
- " Don't pass messages to |ins-completion-menu|.
- set shortmess+=c
-
- " Always show the signcolumn, otherwise it would shift the text each time
- " diagnostics appear/become resolved.
- if has("patch-8.1.1564")
- " Recently vim can merge signcolumn and number column into one
- set signcolumn=number
- else
- set signcolumn=yes
- endif
-
- " Use tab for trigger completion with characters ahead and navigate.
- " NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
- " other plugin before putting this into your config.
- 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.
- if has('nvim')
- inoremap <silent><expr> <c-space> coc#refresh()
- else
- inoremap <silent><expr> <c-@> coc#refresh()
- endif
-
- " Use <cr> to confirm completion, `<C-g>u` means break undo chain at current
- " position. Coc only does snippet and additional edit on confirm.
- " <cr> could be remapped by other vim plugin, try `:verbose imap <CR>`.
- if exists('*complete_info')
- inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>"
- else
- inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
- endif
-
- " Use `[g` and `]g` to navigate diagnostics
- " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list.
- nmap <silent> [g <Plug>(coc-diagnostic-prev)
- nmap <silent> ]g <Plug>(coc-diagnostic-next)
-
- " GoTo code navigation.
- 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 the symbol and its references when holding the cursor.
- autocmd CursorHold * silent call CocActionAsync('highlight')
-
- " Symbol renaming.
- nmap <leader>rn <Plug>(coc-rename)
-
- " Formatting selected code.
- 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
-
- " Applying codeAction to the selected region.
- " Example: `<leader>aap` for current paragraph
- xmap <leader>a <Plug>(coc-codeaction-selected)
- nmap <leader>a <Plug>(coc-codeaction-selected)
-
- " Remap keys for applying codeAction to the current buffer.
- nmap <leader>ac <Plug>(coc-codeaction)
- " Apply AutoFix to problem on the current line.
- nmap <leader>qf <Plug>(coc-fix-current)
-
- " Map function and class text objects
- " NOTE: Requires 'textDocument.documentSymbol' support from the language server.
- xmap if <Plug>(coc-funcobj-i)
- omap if <Plug>(coc-funcobj-i)
- xmap af <Plug>(coc-funcobj-a)
- omap af <Plug>(coc-funcobj-a)
- xmap ic <Plug>(coc-classobj-i)
- omap ic <Plug>(coc-classobj-i)
- xmap ac <Plug>(coc-classobj-a)
- omap ac <Plug>(coc-classobj-a)
-
- " Use CTRL-S for selections ranges.
- " Requires 'textDocument/selectionRange' support of language server.
- " nmap <silent> <C-s> <Plug>(coc-range-select)
- " xmap <silent> <C-s> <Plug>(coc-range-select)
-
- " Add `:Format` command to format current buffer.
- command! -nargs=0 Format :call CocAction('format')
-
- " Add `:Fold` command to fold current buffer.
- command! -nargs=? Fold :call CocAction('fold', <f-args>)
-
- " Add `:OR` command for organize imports of the current buffer.
- command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport')
-
- " Add (Neo)Vim's native statusline support.
- " NOTE: Please see `:h coc-status` for integrations with external plugins that
- " provide custom statusline: lightline.vim, vim-airline.
- set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
-
- " Mappings for CoCList
- " Show all diagnostics.
- nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr>
- " Manage extensions.
- nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr>
- " Show commands.
- nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr>
- " Find symbol of current document.
- nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr>
- " Search workspace symbols.
- nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr>
- " Do default action for next item.
- nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR>
- " Do default action for previous item.
- nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR>
- " Resume latest coc list.
- nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR>
+" vim-lsp-settings {{{
+ let g:lsp_settings_enable_suggestions = 0
" }}}