aboutsummaryrefslogtreecommitdiff
path: root/conf/plugins.vim
blob: 89ca4c33266ae9e4f9c42d7d366f87ac24000ce8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
""""""""""""""""""""""""""
"         Plugins
""""""""""""""""""""""""""
" Install vim-plug if not found
if empty(glob('~/.config/vim/autoload/plug.vim'))
  silent !curl -fLo ~/.config/vim/autoload/plug.vim --create-dirs
    \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
endif

" Run PlugInstall if there are missing plugins
autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
  \| PlugInstall --sync | source $MYVIMRC
\| endif

call plug#begin('~/.config/vim/plugged')

" UI & Themes
Plug 'joshdick/onedark.vim' " Onedark themes for vim
Plug 'liuchengxu/vim-which-key' " Show leader mapping cheatsheet

" Git integration
Plug 'airblade/vim-gitgutter' " Git diff

" Autocompletion, linter, syntax
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" Tools
Plug 'ap/vim-css-color' " rgb, hex color preview

call plug#end()

filetype plugin indent on " Allow filetype detection, plugins, indentation

"""""""""""""""""""""""""
"	Configuration
"""""""""""""""""""""""""
" LSP
let g:coc_global_extensions = ['coc-json', 'coc-markdownlint'] " You can add other coc extensions here

" Netrw (filetree built-in vim)
let g:netrw_keepdir = 0 " Reload buffer usefull when moving or removing file
let g:netrw_winsize = 10 " Size of filetree buffer
let g:netrw_banner = 0 " Removing netrw banner
let g:netrw_localcopydircmd = 'cp -r' " Changing copy command to add recursive copy

" Statusline
let g:currentmode={
	\ 'n'  : 'NORMAL ',
	\ 'v'  : 'VISUAL ',
	\ 'V'  : 'V·Line ',
	\ "\<C-V>" : 'V·Block ',
	\ 'i'  : 'INSERT ',
	\ 'R'  : 'R ',
	\ 'Rv' : 'V·Replace ',
	\ 'c'  : 'Command ',
	\}
set laststatus=2
set statusline=
" VIM Mode
set statusline+=\ %{toupper(g:currentmode[mode()])}%{&spell?'[SPELL]':''}\|
" File (path, modified, readonly ? )
set statusline+=%h\ %F
set statusline+=%{&modified?'\ [+]':''}
set statusline+=%{&readonly?'\ ':''}
" Filetype
set statusline+=%=%y
set statusline+=\ \|\ %{&fileencoding?&fileencoding:&encoding}
set statusline+=\ \|\ [%{&fileformat}\]
" Line count and percentage
set statusline+=\ \|\ %l:%c
set statusline+=\ [%p%%]\ 


" Which Key
call which_key#register('<Space>', "g:which_key_map")
let g:which_key_map =  {}

" Buffer key help
let g:which_key_map.b = { 
    \ 'name' : '+buffer',
    \ 'd' : 'current buffer close',
    \ 'a' : 'close all buffers',
    \ 'n' : 'go to next buffer',
    \ 'p' : 'go to previous buffer', 
    \ }

" Tab key help
let g:which_key_map.t = { 
    \ 'name' : '+tab',
    \ 't<leader>' : 'go to next tab',
    \ 'n' : 'open new tab',
    \ 'o' : 'close other tabs',
    \ 'c' : 'close current tab',
    \ 'm' : 'move tab after another',
    \ 'l' : 'switch between this & last tab',
    \ 'e' : 'open new tab with current buffer',
    \ }

" Spell key help
let g:which_key_map.s = { 
    \ 'name' : '+spell',
    \ 's' : 'toggle spell check',
    \ 'n' : 'next spell word',
    \ 'p' : 'previous spell word',
    \ 'a' : 'add word in dict',
    \ '?' : 'list word alternatives',
    \ }

" Hunk key help
let g:which_key_map.h = { 
    \ 'name' : '+git hunk',
    \ 'l' : 'remove highlight',
    \ 'p' : 'go previous hunk',
    \ 'n' : 'go next hunk',
    \ 't' : 'enable/disable gitgutter',
    \ 's' : 'stage hunk',
    \ 'u' : 'undo hunk',
    \ 'P' : 'preview hunk',
    \ }

" LSP key help
let g:which_key_map.g = { 
    \ 'name' : '+LSP',
    \ 'd' : 'go to definition',
    \ 'n' : 'next diagnostic',
    \ 'p' : 'previous diagnostic',
    \ 'r' : 'go to reference',
    \ 'R' : 'rename object',
	\ 'y' : 'type definition',
	\ 'i' : 'go to implementation',
	\ 'h' : 'documentation',
	\ 'f' : 'format document',
    \ }
ArKa projects. All rights to me, and your next child right arm.