aboutsummaryrefslogtreecommitdiff
path: root/vim/config/format.vim
blob: cbc995af9d707de8a4b191051806c028ef74a0ea (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
" If we can, add j to the format options to get rid of comment leaders when
" joining lines
if v:version > 703 || v:version == 703 && has('patch541')
  set formatoptions+=j
endif

"
" Quick way to toggle flags in 'formatoptions' that I often want to change;
" specifically:
"
" a - Automatically format paragraphs, reapplying the wrap on every text
"     insertion or deletion; sometimes I want this and sometimes I
"     don't, it particularly varies when typing prose in Markdown that
"     includes headings and code
" c - Automatically wrap comments at 'textwidth' (which I allow the filetypes
"     to set for me)
" t - Automatically wrap text at 'textwidth' (as above)
"
" So I just have to type e.g. \a to toggle the auto-format flag on and off;
" very handy
"
if has('eval')
  function! ToggleFormatFlag(flag)
    let l:operation = (&formatoptions =~ a:flag) ? '-=' : '+='
    silent! exec 'setlocal formatoptions' . l:operation . a:flag
    setlocal formatoptions?
  endfunction
  nnoremap <silent> <leader>a :<C-U>call ToggleFormatFlag('a')<CR>
  nnoremap <silent> <leader>c :<C-U>call ToggleFormatFlag('c')<CR>
  nnoremap <silent> <leader>t :<C-U>call ToggleFormatFlag('t')<CR>
endif