class GitGutterCommand(sublime_plugin.TextCommand):
    region_names = ['deleted_top', 'deleted_bottom',
                    'deleted_dual', 'inserted', 'changed',
                    'untracked', 'ignored']

    def __init__(self, *args, **kwargs):
        sublime_plugin.TextCommand.__init__(self, *args, **kwargs)
        self.settings = GitGutterSettings()
        self.settings.load_settings()
        self.git_handler = GitGutterHandler(self.view, self.settings)
        self.show_diff_handler = GitGutterShowDiff(self.view, self.git_handler, self.settings)

    def run(self, edit_permit, **kwargs):
        if not self.git_handler.on_disk() or not self.git_handler.git_dir:
            return

        if kwargs and 'action' in kwargs:
            action = kwargs['action']
            if action == 'jump_to_next_change':
                GitGutterJumpToChanges(self.view, self.git_handler, self.settings).jump_to_next_change()
            elif action == 'jump_to_prev_change':
                GitGutterJumpToChanges(self.view, self.git_handler, self.settings).jump_to_prev_change()
            elif action == 'show_compare':
                sublime.message_dialog("GitGutter is comparing against: " + self.settings.get_compare_against(self.git_handler.git_dir))
            elif action == 'compare_against_commit':
                GitGutterCompareCommit(self.view, self.git_handler, self.settings).run()
            elif action == 'compare_against_branch':
                GitGutterCompareBranch(self.view, self.git_handler, self.settings).run()
            elif action == 'compare_against_tag':
                GitGutterCompareTag(self.view, self.git_handler, self.settings).run()
            elif action == 'compare_against_head':
                GitGutterCompareHead(self.view, self.git_handler, self.settings).run()
            elif action == 'compare_against_origin':
                GitGutterCompareOrigin(self.view, self.git_handler, self.settings).run()
        else:
            self.show_diff_handler.run()
 def __init__(self, *args, **kwargs):
     sublime_plugin.TextCommand.__init__(self, *args, **kwargs)
     self.settings = GitGutterSettings()
     self.settings.load_settings()
     self.git_handler = GitGutterHandler(self.view, self.settings)
     self.show_diff_handler = GitGutterShowDiff(self.view, self.git_handler, self.settings)