summaryrefslogtreecommitdiff
path: root/lindy/dot_vimrc
blob: 13ecca5b6de2086c10c3b8567a625ae843f99d03 (plain) (blame)
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
134
135
source /usr/share/vim/vim82/defaults.vim
source /etc/vimrc

let NERDTreeIgnore=['\.o$', '\.cmo$', '\.cmx$', '\.cmi$', '\.lib$', '\.pyc$', '^__pycache__$', '\.class$']

set encoding=utf-8

set cmdheight=2

if has("patch-8.1.1564")
  " Recently vim can merge signcolumn and number column into one
  set signcolumn=number
else
  set signcolumn=yes
endif

set exrc
set hlsearch

set number
set relativenumber

let mapleader=","

" Tab modes.
map <leader>m <Esc>:set expandtab ts=2 sw=2 sts=2<CR>
map <leader>t <Esc>:set noexpandtab ts=4 sw=4 sts=4<CR>
map <leader>T <Esc>:set expandtab ts=4 sw=4 sts=4<CR>

set pastetoggle=<F2>

" reload config
map <leader>c <Esc>:source ~/.vimrc<CR>

" FZF bindings
"
" map <leader>f <Esc>:FZF<CR>
map ; <Esc>:FZF<CR>

map \ <Esc>:Vista finder coc<CR>
map <leader>b <Esc>:Vista<CR>

" Diagnostic messages

map <leader>d <Esc>:CocDiagnostics<CR>

" map <leader>l <Esc>:ALENextWrap<CR>
nmap <silent> <leader>s <Plug>(coc-diagnostic-prev)
nmap <silent> <leader>f <Plug>(coc-diagnostic-next)
" map <C-n> <Esc>:cnext<CR>
" map <C-m> <Esc>:cprevious<CR>

" 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>')
  elseif (coc#rpc#ready())
    call CocActionAsync('doHover')
  else
    execute '!' . &keywordprg . " " . expand('<cword>')
  endif
endfunction

" tab completion (coc)
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


" 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)


" Append modeline after last line in buffer.
" Use substitute() instead of printf() to handle '%%s' modeline in LaTeX
" files.
function! AppendModeline()
  let l:modeline = printf(" vim: set sts=%d ts=%d sw=%d tw=%d %set :",
        \ &softtabstop, &tabstop, &shiftwidth, &textwidth, &expandtab ? '' : 'no')
  let l:modeline = substitute(&commentstring, "%s", l:modeline, "")
  call append(line("$"), l:modeline)
endfunction
nnoremap <silent> <Leader>ml :call AppendModeline()<CR>

filetype plugin indent on
set autoindent
set smartindent
set ts=4 sw=4

" indentation for long line wraps
set wrap
set linebreak
set breakindent
let &showbreak = '>   '

set bg=dark

au FileType make setl noexpandtab
au FileType python setl sw=4 sts=4 et
au FileType html setl sw=2 sts=2 et
au FileType htmldjango setl sw=2 sts=2 et
au FileType json setl sw=2 sts=2 et
au FileType javascript setl sw=2 sts=2 et
au FileType yaml setl sw=2 sts=2 et
au FileType css setl sw=4 sts=4 et
au FileType lua setl ts=4 sw=4 noet
au FileType trema setl ts=2 sts=2 et
au FileType typescript.tsx setl ts=2 sts=2 et
au FileType rust setl ts=4 sw=4 noet 
au FileType tex setl indentexpr= nosi ai sw=4 sts=4 et

let g:ale_linters = {'rust': ['analyzer']}

highlight Pmenu ctermbg=gray guibg=gray

colorscheme solarized8