aboutsummaryrefslogtreecommitdiff
path: root/nvim/.config/nvim/plugin
diff options
context:
space:
mode:
authorAkshay <[email protected]>2020-07-22 03:34:08 +0100
committerAkshay <[email protected]>2020-07-22 03:34:08 +0100
commit51810b5c07e20982ebdf66f0bfb384c4bf55ad7d (patch)
treeb5120bfc9b0ca72c9293afb9ed6e2e632a811deb /nvim/.config/nvim/plugin
squash again
Diffstat (limited to 'nvim/.config/nvim/plugin')
-rw-r--r--nvim/.config/nvim/plugin/help.vim16
-rw-r--r--nvim/.config/nvim/plugin/ignores.vim11
-rw-r--r--nvim/.config/nvim/plugin/maps.vim78
-rw-r--r--nvim/.config/nvim/plugin/statusline.vim136
-rw-r--r--nvim/.config/nvim/plugin/textobjs.vim27
5 files changed, 268 insertions, 0 deletions
diff --git a/nvim/.config/nvim/plugin/help.vim b/nvim/.config/nvim/plugin/help.vim
new file mode 100644
index 0000000..9e1c998
--- /dev/null
+++ b/nvim/.config/nvim/plugin/help.vim
@@ -0,0 +1,16 @@
1" Only apply to .txt files...
2augroup HelpInTabs
3 autocmd!
4 autocmd BufEnter *.txt call HelpInNewTab()
5augroup END
6
7" Only apply to help files...
8function! HelpInNewTab ()
9 if &buftype == 'help' && g:help_in_tabs
10 "Convert the help window to a tab...
11 execute "normal \<C-W>T"
12 endif
13endfunction
14
15let g:help_in_tabs = 1
16
diff --git a/nvim/.config/nvim/plugin/ignores.vim b/nvim/.config/nvim/plugin/ignores.vim
new file mode 100644
index 0000000..3ab37f0
--- /dev/null
+++ b/nvim/.config/nvim/plugin/ignores.vim
@@ -0,0 +1,11 @@
1set wildignore+=.git,.hg,.svn
2set wildignore+=*.aux,*.out,*.toc
3set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest,*.rbc,*.class
4set wildignore+=*.ai,*.bmp,*.gif,*.ico,*.jpg,*.jpeg,*.png,*.psd,*.webp
5set wildignore+=*.avi,*.divx,*.mp4,*.webm,*.mov,*.m2ts,*.mkv,*.vob,*.mpg,*.mpeg
6set wildignore+=*.mp3,*.oga,*.ogg,*.wav,*.flac
7set wildignore+=*.eot,*.otf,*.ttf,*.woff
8set wildignore+=*.doc,*.pdf,*.cbr,*.cbz
9set wildignore+=*.zip,*.tar.gz,*.tar.bz2,*.rar,*.tar.xz,*.kgb
10set wildignore+=*.swp,.lock,.DS_Store,._*
11
diff --git a/nvim/.config/nvim/plugin/maps.vim b/nvim/.config/nvim/plugin/maps.vim
new file mode 100644
index 0000000..55990d2
--- /dev/null
+++ b/nvim/.config/nvim/plugin/maps.vim
@@ -0,0 +1,78 @@
1mapclear
2
3let mapleader=' '
4
5" clipboard
6map <leader>cc :w !xclip -sel c<CR>
7
8" normal
9nnoremap <Leader>o : only<cr>
10" nnoremap <Leader>l : Lines<cr>
11nnoremap <Leader>b : Buffers<cr>
12nnoremap <Leader>n : bnext<cr>
13nnoremap <Leader>p : bprev<cr>
14nnoremap <Leader>z : FZF<cr>
15nnoremap <Leader>l : Lines<cr>
16nnoremap <Leader>w : MtaJumpToOtherTag<cr>
17nnoremap <Leader>t : call GetTabber()<cr>
18nnoremap <Leader><ESC> : nohlsearch<cr>
19nnoremap <C-l> :nohlsearch<cr>:diffupdate<cr>:syntax sync fromstart<cr><c-l>
20nnoremap H H:exec 'norm! '. &scrolloff . 'k'<cr>
21nnoremap L L:exec 'norm! '. &scrolloff . 'j'<cr>
22nnoremap <expr> gb '`[' . strpart(getregtype(), 0, 1) . '`]'
23
24
25nnoremap <F10> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<'
26 \ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<"
27 \ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR>
28
29cmap w!! %!sudo tee > /dev/null %
30
31" visual
32vnoremap > >gv
33vnoremap < <gv
34
35" operator-pending
36onoremap ax a`
37onoremap ix i`
38
39" visual block
40xnoremap + g<C-a>
41xnoremap - g<C-x>
42
43" COC keymaps
44inoremap <silent><expr> <TAB>
45 \ pumvisible() ? "\<C-n>" :
46 \ <SID>check_back_space() ? "\<TAB>" :
47 \ coc#refresh()
48inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
49
50function! s:check_back_space() abort
51 let col = col('.') - 1
52 return !col || getline('.')[col - 1] =~# '\s'
53endfunction
54
55inoremap <silent><expr> <c-space> coc#refresh()
56
57inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
58
59nmap <silent> [g <Plug>(coc-diagnostic-prev)
60nmap <silent> ]g <Plug>(coc-diagnostic-next)
61nmap <silent> gd <Plug>(coc-definition)
62nmap <silent> gy <Plug>(coc-type-definition)
63nmap <silent> gr <Plug>(coc-references)
64
65nnoremap <silent> K :call <SID>show_documentation()<CR>
66
67function! s:show_documentation()
68 if (index(['vim','help'], &filetype) >= 0)
69 execute 'h '.expand('<cword>')
70 else
71 call CocAction('doHover')
72 endif
73endfunction
74
75nmap <leader>rn <Plug>(coc-rename)
76
77xmap <leader>f <Plug>(coc-format-selected)
78nmap <leader>f <Plug>(coc-format-selected)
diff --git a/nvim/.config/nvim/plugin/statusline.vim b/nvim/.config/nvim/plugin/statusline.vim
new file mode 100644
index 0000000..a25fb6d
--- /dev/null
+++ b/nvim/.config/nvim/plugin/statusline.vim
@@ -0,0 +1,136 @@
1scriptencoding utf-8
2
3" statusline
4
5let g:currentmode={
6 \ 'n' : 'NORMAL ',
7 \ 'no' : 'N·OPERATOR PENDING ',
8 \ 'v' : 'VISUAL ',
9 \ 'V' : 'V·LINE ',
10 \ '' : 'V·BLOCK ',
11 \ 's' : 'SELECT ',
12 \ 'S' : 'S·LINE ',
13 \ '' : 'S·BLOCK ',
14 \ 'i' : 'INSERT ',
15 \ 'R' : 'REPLACE ',
16 \ 'Rv' : 'V·REPLACE ',
17 \ 'c' : 'COMMAND ',
18 \ 'cv' : 'VIM EX ',
19 \ 'ce' : 'EX ',
20 \ 'r' : 'PROMPT ',
21 \ 'rm' : 'MORE ',
22 \ 'r?' : 'CONFIRM ',
23 \ '!' : 'SHELL ',
24 \ 't' : 'TERMINAL '}
25
26hi PrimaryBlock ctermfg=00 ctermbg=6
27hi SecondaryBlock ctermfg=07 ctermbg=10
28hi Blanks ctermfg=11 ctermbg=0
29
30hi User1 ctermfg=01 ctermbg=0
31hi User2 ctermfg=02 ctermbg=0
32hi User3 ctermfg=03 ctermbg=0
33hi User4 ctermfg=04 ctermbg=0
34hi User5 ctermfg=05 ctermbg=0
35hi User6 ctermfg=06 ctermbg=0
36hi User7 ctermfg=07 ctermbg=0
37hi User8 ctermfg=08 ctermbg=0
38hi User9 ctermfg=09 ctermbg=0
39
40highlight EndOfBuffer ctermfg=black ctermbg=black
41
42function! GitBranch()
43 return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
44endfunction
45
46function! StatuslineGit()
47 let l:branchname = GitBranch()
48 return strlen(l:branchname) > 0?' '.l:branchname.' ':''
49endfunction
50
51function! ReadOnly() abort
52 if !&modifiable && &readonly
53 return ' RO'
54 elseif &modifiable && &readonly
55 return 'RO'
56 elseif !&modifiable && !&readonly
57 return ''
58 else
59 return ''
60 endif
61endfunction
62
63function! Filepath() abort
64 let l:basename = expand('%:h')
65 let l:filename = expand('%:t')
66 let l:extension = expand('%:e')
67 let l:prefix = (l:basename ==# '' || l:basename ==# '.') ?
68 \ '' : substitute(l:basename . '/', '\C^' . $HOME, '~', '')
69
70 if empty(l:prefix) && empty(l:filename)
71 return printf('%%8*%%f%%*%s %%m%%*', '%8*')
72 elseif empty(l:prefix)
73 return printf('%%8*%%f%%*%s %%m%%*', '%6*')
74 else
75 return printf('%%8*%s%%*%s%s%%*', l:prefix, &modified ? '%6*' : '%8*', l:filename)
76 endif
77endfunction
78
79function! LinterStatus() abort
80 let info = get(b:, 'coc_diagnostic_info', {})
81 if empty(info) | return '' | endif
82 let msgs = []
83 if get(info, 'error', 0)
84 call add(msgs, printf('%%5*%s×%%*', info['error']))
85 endif
86 if get(info, 'warning', 0)
87 call add(msgs, printf('%%3*%s!%%*', info['warning']))
88 endif
89 return join(msgs, ' ')
90endfunction
91
92function! StatusLine(mode) abort
93 let l:line=''
94
95 " help or man pages
96 if &filetype ==# 'help' || &filetype ==# 'man'
97 let l:line.=' %#StatusLineNC# ['. &filetype .'] %f '
98 return l:line
99 endif
100
101 " active
102 if a:mode ==# 'active'
103 let l:line.='%7*%{StatuslineGit()}'
104 let l:line.='%<'
105 let l:line.=Filepath()
106
107 let l:line.='%5*'
108 let l:line.=' %{ReadOnly()} %w%*'
109 let l:line.='%9* %=%*'
110
111 let l:line.='%7* %l,%c %*'
112 let l:line.='%8* %{g:currentmode[mode()]}%*'
113 let l:line.=' '
114 let l:line.=LinterStatus()
115 let l:line.=' '
116 let l:line.='%8*'. &filetype
117
118 else
119 " inactive
120 let l:line.='%#Blanks#'
121 let l:line.='%f %5*%m%*'
122 let l:line.='%#Blanks# %=%*'
123 endif
124
125 let l:line.='%*'
126
127 return l:line
128endfunction
129
130set statusline=%!StatusLine('active')
131augroup MyStatusLine
132 autocmd!
133 autocmd WinEnter * setl statusline=%!StatusLine('active')
134 autocmd WinLeave * setl statusline=%!StatusLine('inactive')
135augroup END
136
diff --git a/nvim/.config/nvim/plugin/textobjs.vim b/nvim/.config/nvim/plugin/textobjs.vim
new file mode 100644
index 0000000..16f9a46
--- /dev/null
+++ b/nvim/.config/nvim/plugin/textobjs.vim
@@ -0,0 +1,27 @@
1" line text-objects
2xnoremap il g_o^
3onoremap il :normal vil<CR>
4xnoremap al $o0
5onoremap al :normal val<CR>
6
7" buffer text-objects
8" -------------------
9" i% a%
10xnoremap i% :<C-u>let z = @/\|1;/^./kz<CR>G??<CR>:let @/ = z<CR>V'z
11onoremap i% :normal vi%<CR>
12xnoremap a% GoggV
13onoremap a% :normal va%<CR>
14
15" comment text-objects
16" --------------------
17" i? a?
18xnoremap <buffer> i? ?/\*<CR>o/\*\/<CR>
19onoremap <buffer> i? :normal vi?<CR>
20
21" square brackets text-objects
22" ----------------------------
23" ir ar
24xnoremap ir i[
25xnoremap ar a[
26onoremap ir :normal vi[<CR>
27onoremap ar :normal va[<CR>