aboutsummaryrefslogtreecommitdiff
path: root/vim/config/format.vim
blob: 54d46dc2b1194e67570a0142a89243b7724947d5 (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
" All of this variable logic requires 'eval', and I can't just short-circuit
" it due to a quirk in the way vim-tiny evaluates these expressions
if has('eval')

  " Figure out if we have the 'j' flag for 'formatoptions', to automatically
  " delete comment leaders when joining lines; keep it in a script variable
  let s:formatoptions_has_j = v:version > 703
        \ || v:version ==# 703 && has('patch541')

  " If we do have 'j', default to setting it
  if s:formatoptions_has_j
    set formatoptions+=j
  endif

  "
  " Use toggle_option_flag.vim plugin to bind quick toggle actions for some
  " 'formatoptions' flags; both of the above, plus:
  "
  " c - Automatically wrap comments at 'textwidth' (which I allow the filetypes
  "     to set for me)
  " t - Automatically wrap text at 'textwidth' (as above)
  "
  " We need user-defined commands to do this.
  "
  if !has('user_commands')
    finish
  endif

  " 'c' and 't' have both been around since at least 6.1
  nnoremap <silent>
        \ <Leader>c
        \ :<C-U>ToggleOptionFlagLocal formatoptions c<CR>
  nnoremap <silent>
        \ <Leader>t
        \ :<C-U>ToggleOptionFlagLocal formatoptions t<CR>

  " Figure out if we have the 'a' flag for 'formatoptions', to reapply
  " 'textwidth' wrapping to the current paragraph on every insertion or
  " deletion; keep in a script variable
  let s:formatoptions_has_a = v:version > 610
        \ || v:version ==# 610 && has('patch142')

  " 'a' needs testing
  if s:formatoptions_has_a
    nnoremap <silent>
          \ <Leader>a
          \ :<C-U>ToggleOptionFlagLocal formatoptions a<CR>
  else
    nnoremap <silent>
          \ <Leader>a
          \ :<C-U>echoerr 'No formatoptions a-flag'<CR>
  endif

  " 'j' needs testing
  if s:formatoptions_has_j
    nnoremap <silent>
          \ <Leader>j
          \ :<C-U>ToggleOptionFlagLocal formatoptions j<CR>
  else
    nnoremap <silent>
          \ <Leader>j
          \ :<C-U>echoerr 'No formatoptions j-flag'<CR>
  endif

endif