diff_fold.vim 682 B

123456789101112131415161718192021222324252627282930
  1. " Folding setting for diff.
  2. " Version: 0.1.0
  3. " Author : thinca <thinca+vim@gmail.com>
  4. " License: Creative Commons Attribution 2.1 Japan License
  5. " <http://creativecommons.org/licenses/by/2.1/jp/deed.en>
  6. setlocal foldmethod=expr foldexpr=DiffFold(v:lnum)
  7. function! DiffFold(lnum)
  8. let line = getline(a:lnum)
  9. let next = getline(a:lnum + 1)
  10. if line =~ '^[-=]\{3}'
  11. return 1
  12. elseif next =~ '^[-=]\{3}'
  13. return '<1'
  14. elseif line =~ '^@@'
  15. return 2
  16. elseif next =~ '^@@'
  17. return '<2'
  18. endif
  19. return '='
  20. endfunction
  21. if exists('b:undo_ftplugin')
  22. let b:undo_ftplugin .= ' | '
  23. else
  24. let b:undo_ftplugin = ''
  25. endif
  26. let b:undo_ftplugin .= 'setl fdm< fde<'