Sha256: fe206e8384807fd6973cf59f086c31284a50f018ea1a911fa97660ccb68011a2
Contents?: true
Size: 1.26 KB
Versions: 5
Compression:
Stored size: 1.26 KB
Contents
require 'curses' require_relative 'ui/color' require_relative 'ui/hunks_window' module GitCrecord module UI ACTIONS = { 'q' => :quit, 's' => :stage, 'c' => :commit, 'j' => :highlight_next, Curses::KEY_DOWN => :highlight_next, 'k' => :highlight_previous, Curses::KEY_UP => :highlight_previous, 'h' => :collapse, Curses::KEY_LEFT => :collapse, 'l' => :expand, Curses::KEY_RIGHT => :expand, 'f' => :toggle_fold, 'g' => :highlight_first, 'G' => :highlight_last, ''.ord => :highlight_next_hunk, ''.ord => :highlight_previous_hunk, ' ' => :toggle_selection, 'A' => :toggle_all_selections, '?' => :help_window, 'R' => :redraw, Curses::KEY_RESIZE => :resize }.freeze def self.run(files) Curses.init_screen.keypad = true Color.init Curses.clear Curses.noecho Curses.curs_set(0) pad = Curses::Pad.new(1, 1).tap{ |p| p.keypad = true } run_loop(HunksWindow.new(pad, files)) ensure Curses.close_screen end def self.run_loop(win) loop do c = win.getch next if ACTIONS[c].nil? quit = win.send(ACTIONS[c]) break quit if quit == :quit end end end end
Version data entries
5 entries across 5 versions & 1 rubygems