0d5394864481

Path view and next/prev conflicts.
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Mon, 13 Jun 2011 00:47:04 -0400
parents bb3247356f22
children 0e3a284792b2
branches/tags (none)
files plugin/threesome.py plugin/threesome.vim plugin/threesomelib/init.py plugin/threesomelib/modes.py

Changes

--- a/plugin/threesome.py	Mon Jun 13 00:25:16 2011 -0400
+++ b/plugin/threesome.py	Mon Jun 13 00:47:04 2011 -0400
@@ -40,7 +40,16 @@
 def ThreesomeCompare():
     threesome.modes.key_compare()
 
+def ThreesomePath():
+    threesome.modes.key_path()
+
 
 def ThreesomeDiff():
     threesome.modes.current_mode.key_diff()
 
+def ThreesomeNext():
+    threesome.modes.current_mode.key_next()
+
+def ThreesomePrev():
+    threesome.modes.current_mode.key_prev()
+
--- a/plugin/threesome.vim	Mon Jun 13 00:25:16 2011 -0400
+++ b/plugin/threesome.vim	Mon Jun 13 00:47:04 2011 -0400
@@ -78,6 +78,9 @@
 function! s:ThreesomeCompare()"{{{
     python ThreesomeCompare()
 endfunction"}}}
+function! s:ThreesomePath()"{{{
+    python ThreesomePath()
+endfunction"}}}
 
 function! s:ThreesomeOriginal()"{{{
     python ThreesomeOriginal()
@@ -95,6 +98,12 @@
 function! s:ThreesomeDiff()"{{{
     python ThreesomeDiff()
 endfunction"}}}
+function! s:ThreesomeNext()"{{{
+    python ThreesomeNext()
+endfunction"}}}
+function! s:ThreesomePrev()"{{{
+    python ThreesomePrev()
+endfunction"}}}
 
 "}}}
 
@@ -105,6 +114,7 @@
 command! -nargs=0 ThreesomeGrid call s:ThreesomeGrid()
 command! -nargs=0 ThreesomeLoupe call s:ThreesomeLoupe()
 command! -nargs=0 ThreesomeCompare call s:ThreesomeCompare()
+command! -nargs=0 ThreesomePath call s:ThreesomePath()
 
 command! -nargs=0 ThreesomeOriginal call s:ThreesomeOriginal()
 command! -nargs=0 ThreesomeOne call s:ThreesomeOne()
@@ -112,6 +122,8 @@
 command! -nargs=0 ThreesomeResult call s:ThreesomeResult()
 
 command! -nargs=0 ThreesomeDiff call s:ThreesomeDiff()
+command! -nargs=0 ThreesomeNext call s:ThreesomeNext()
+command! -nargs=0 ThreesomePrev call s:ThreesomePrev()
 
 "}}}
 
--- a/plugin/threesomelib/init.py	Mon Jun 13 00:25:16 2011 -0400
+++ b/plugin/threesomelib/init.py	Mon Jun 13 00:47:04 2011 -0400
@@ -32,6 +32,7 @@
     keys.bind('g', ':ThreesomeGrid<cr>')
     keys.bind('l', ':ThreesomeLoupe<cr>')
     keys.bind('c', ':ThreesomeCompare<cr>')
+    keys.bind('p', ':ThreesomePath<cr>')
 
     keys.bind('o', ':ThreesomeOriginal<cr>')
     keys.bind('1', ':ThreesomeOne<cr>')
@@ -39,6 +40,8 @@
     keys.bind('r', ':ThreesomeResult<cr>')
 
     keys.bind('d', ':ThreesomeDiff<cr>')
+    keys.bind('n', ':ThreesomeNext<cr>')
+    keys.bind('N', ':ThreesomePrev<cr>')
 
 def init():
     process_result()
--- a/plugin/threesomelib/modes.py	Mon Jun 13 00:25:16 2011 -0400
+++ b/plugin/threesomelib/modes.py	Mon Jun 13 00:47:04 2011 -0400
@@ -37,6 +37,15 @@
         self._diff_0()
 
 
+    def key_next(self):
+        self.goto_result()
+        vim.command(r'exe "normal! /\=\=\=\=\=\=\=\<cr>"')
+
+    def key_prev(self):
+        self.goto_result()
+        vim.command(r'exe "normal! ?\=\=\=\=\=\=\=\<cr>"')
+
+
 class GridMode(Mode):
     """
     Layout 1                 Layout 2
@@ -109,6 +118,10 @@
     def key_result(self):
         windows.focus(4)
 
+
+    def goto_result(self):
+        windows.focus(4)
+
 class LoupeMode(Mode):
     def __init__(self):
         self._number_of_diff_modes = 1
@@ -150,6 +163,10 @@
         windows.focus(1)
         buffers.result.open()
 
+
+    def goto_result(self):
+        self.key_result()
+
 class CompareMode(Mode):
     def __init__(self):
         self._number_of_diff_modes = 2
@@ -224,8 +241,8 @@
             open_one(1)
             return
 
-        # Otherwise, open file one in window 1.
-        open_one(1)
+        # Otherwise, open file one in the current window.
+        open_one(curwindow)
 
     def key_two(self):
         def open_two(winnr):
@@ -260,7 +277,7 @@
             return
 
         # Otherwise, open file two in window 2.
-        open_two(2)
+        open_two(curwindow)
 
     def key_result(self):
         windows.focus(2)
@@ -268,9 +285,97 @@
         self.diff(self._current_diff_mode)
 
 
+    def goto_result(self):
+        self.key_result()
+
+class PathMode(Mode):
+    def __init__(self):
+        self._number_of_diff_modes = 4
+        return super(PathMode, self).__init__()
+
+
+    def _init_layout(self):
+        # Open the layout
+        windows.close_all()
+        windows.vsplit()
+        windows.vsplit()
+
+        # Put the buffers in the appropriate windows
+        windows.focus(1)
+        buffers.original.open()
+
+        windows.focus(2)
+        buffers.one.open()
+
+        windows.focus(3)
+        buffers.result.open()
+
+
+    def _diff_0(self):
+        vim.command('diffoff!')
+        self._current_diff_mode = 0
+
+    def _diff_1(self):
+        vim.command('diffoff!')
+        self._current_diff_mode = 1
+
+        windows.focus(1)
+        vim.command('diffthis')
+
+        windows.focus(3)
+        vim.command('diffthis')
+
+    def _diff_2(self):
+        vim.command('diffoff!')
+        self._current_diff_mode = 2
+
+        windows.focus(1)
+        vim.command('diffthis')
+
+        windows.focus(2)
+        vim.command('diffthis')
+
+    def _diff_3(self):
+        vim.command('diffoff!')
+        self._current_diff_mode = 3
+
+        windows.focus(2)
+        vim.command('diffthis')
+
+        windows.focus(3)
+        vim.command('diffthis')
+
+
+    def activate(self):
+        self._init_layout()
+        super(PathMode, self).activate()
+
+
+    def key_original(self):
+        windows.focus(1)
+
+    def key_one(self):
+        windows.focus(2)
+        buffers.one.open()
+        self.diff(self._current_diff_mode)
+
+    def key_two(self):
+        windows.focus(2)
+        buffers.two.open()
+        self.diff(self._current_diff_mode)
+
+    def key_result(self):
+        windows.focus(3)
+
+
+    def goto_result(self):
+        windows.focus(3)
+
+
 grid = GridMode()
 loupe = LoupeMode()
 compare = CompareMode()
+path = PathMode()
 
 
 def key_grid():
@@ -286,3 +391,7 @@
     global current_mode
     current_mode = compare
     compare.activate()
+def key_path():
+    global current_mode
+    current_mode = path
+    path.activate()