blob: f154d6d55dc8d5ba0303e3a6720d571148c03c3d (
plain)
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
|
if exists("g:loaded_linediff") || &cp
finish
endif
let g:loaded_linediff = '0.1.1' " version number
let s:keepcpo = &cpo
set cpo&vim
" Initialized lazily to avoid executing the autoload file before it's really
" needed.
function! s:Init()
if !exists('s:differ_one')
let s:differ_one = linediff#differ#New('linediff_one', 1)
let s:differ_two = linediff#differ#New('linediff_two', 2)
endif
endfunction
command! -range Linediff call s:Linediff(<line1>, <line2>)
function! s:Linediff(from, to)
call s:Init()
if s:differ_one.IsBlank()
call s:differ_one.Init(a:from, a:to)
elseif s:differ_two.IsBlank()
call s:differ_two.Init(a:from, a:to)
call s:PerformDiff(s:differ_one, s:differ_two)
else
call s:differ_one.Reset()
call s:differ_two.Reset()
call s:Linediff(a:from, a:to)
endif
endfunction
command! LinediffReset call s:LinediffReset()
function! s:LinediffReset()
call s:differ_one.Reset()
call s:differ_two.Reset()
endfunction
function! s:PerformDiff(one, two)
call a:one.CreateDiffBuffer("tabedit")
call a:two.CreateDiffBuffer("rightbelow vsplit")
let a:one.other_differ = a:two
let a:two.other_differ = a:one
endfunction
|