Language:
Vim/Vim script     Change language:
Pastebin: 1483
Author: mgedmin
Subject: folding for patches
Created: 2006-10-11 13:43:17
Download and save
Toggle line numbers
1" Folding for unified diffs 
2 
3function! DiffFoldLevel(lineno) 
4  let line = getline(a:lineno) 
5  if line =~ '^Index:' 
6    return '>1' 
7  elseif line =~ '^===' || line =~ '^RCS file: ' || line =~ '^retrieving revision ' 
8    let lvl = foldlevel(a:lineno - 1) 
9    return lvl >= 0 ? lvl : '=' 
10  elseif line =~ '^diff' 
11    return getline(a:lineno - 1) =~ '^retrieving revision ' ? '=' : '>1' 
12  elseif line =~ '^--- ' && getline(a:lineno - 1) !~ '^diff\|^===' 
13    return '>1' 
14  elseif line =~ '^@' 
15    return '>2' 
16  elseif line =~ '^[- +\\]' 
17    let lvl = foldlevel(a:lineno - 1) 
18    return lvl >= 0 ? lvl : '=' 
19  else 
20    return '0' 
21  endif 
22endf 
23 
24function! FT_Diff() 
25  if v:version >= 600 
26    setlocal foldmethod=expr 
27    setlocal foldexpr=DiffFoldLevel(v:lnum) 
28  else 
29  endif 
30endf 
31 
32augroup Diffs 
33  autocmd
34  autocmd BufRead,BufNewFile *.patch    setf diff 
35  autocmd FileType diff         call FT_Diff() 
36augroup END 
Thread:
[1483] folding for patches by mgedmin at 2006-10-11 13:43:17
Tip: Click the line numbers to toggle highliting on that line.

Paste followup:

Language:
Author:
Subject:


    Tabstop:     bigger biggest
Note: You can prefix a line with "@@@" to highlight it.