raylu vor 13 Jahren
Ursprung
Commit
758f339e34
2 geänderte Dateien mit 32 neuen und 0 gelöschten Zeilen
  1. 30 0
      vim/ftplugin/diff_fold.vim
  2. 2 0
      vimrc

+ 30 - 0
vim/ftplugin/diff_fold.vim

@@ -0,0 +1,30 @@
+" Folding setting for diff.
+" Version: 0.1.0
+" Author : thinca <thinca+vim@gmail.com>
+" License: Creative Commons Attribution 2.1 Japan License
+"          <http://creativecommons.org/licenses/by/2.1/jp/deed.en>
+
+setlocal foldmethod=expr foldexpr=DiffFold(v:lnum)
+
+function! DiffFold(lnum)
+  let line = getline(a:lnum)
+  let next = getline(a:lnum + 1)
+  if line =~ '^[-=]\{3}'
+    return 1
+  elseif next =~ '^[-=]\{3}'
+    return '<1'
+  elseif line =~ '^@@'
+    return 2
+  elseif next =~ '^@@'
+    return '<2'
+  endif
+  return '='
+endfunction
+
+
+if exists('b:undo_ftplugin')
+  let b:undo_ftplugin .= ' | '
+else
+  let b:undo_ftplugin = ''
+endif
+let b:undo_ftplugin .= 'setl fdm< fde<'

+ 2 - 0
vimrc

@@ -65,6 +65,8 @@ autocmd FileType tex,latex set wrap showbreak=+ spell makeprg=pdflatex\ -interac
 autocmd FileType sml set autoindent
 autocmd FileType man set nomod nolist readonly
 autocmd FileType man map q :q<CR>
+autocmd FileType diff map H zA
+autocmd FileType diff map L za
 
 autocmd InsertEnter * if !exists('w:last_fdm') | let w:last_fdm=&foldmethod | setlocal foldmethod=manual | endif
 autocmd InsertLeave,WinLeave * if exists('w:last_fdm') | let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif