plugin/threesomelib/modes.py @ adb7e3942b34
Omg something works.
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Sun, 12 Jun 2011 21:44:55 -0400 |
| parents | 0a0ec65f5e57 |
| children | 02506b7b8b92 |
import vim from util import keys, windows from util.buffers import buffers from util.io import error class Mode(object): def __init__(self): self._current_diff_mode = 0 return super(Mode, self).__init__() def key_diff(self, diffmode=None): if diffmode is not None: getattr(self, '_diff_%d' % diffmode)() else: next_diff_mode = self._current_diff_mode + 1 if next_diff_mode >= self._number_of_diff_modes: next_diff_mode = 0 self.diff(next_diff_mode) def key_original(self): pass def key_one(self): pass def key_two(self): pass def key_result(self): pass class GridMode(Mode): """ Layout 1 Layout 2 +-------------------+ +--------------------------+ | Original | | One | Result | Two | |1 | | | | | +-------------------+ | | | | | One | Two | | | | | |2 |3 | | | | | +-------------------+ | | | | | Result | | | | | |4 | |1 |2 |3 | +-------------------+ +--------------------------+ """ def __init__(self): self._number_of_diff_modes = 2 return super(GridMode, self).__init__() def _init_layout(self): # Open the layout windows.close_all() windows.split() windows.split() windows.focus(2) windows.vsplit() # Put the buffers in the appropriate windows windows.focus(1) buffers.base.open() windows.focus(2) buffers.one.open() windows.focus(3) buffers.two.open() windows.focus(4) buffers.result.open() def _init_keys(self): keys.bind('d', ':ThreesomeDiff<cr>') keys.bind('o', ':ThreesomeOriginal<cr>') keys.bind('1', ':ThreesomeOne<cr>') keys.bind('2', ':ThreesomeTwo<cr>') keys.bind('r', ':ThreesomeResult<cr>') def _diff_0(self): vim.command('diffoff!') self._current_diff_mode = 0 def _diff_1(self): vim.command('diffoff!') self._current_diff_mode = 1 for i in range(1, 5): windows.focus(i) vim.command('diffthis') def activate(self): self._init_layout() self._init_keys() def key_original(self): windows.focus(1) def key_one(self): windows.focus(2) def key_two(self): windows.focus(3) def key_result(self): windows.focus(4) Grid = GridMode()