feat(SublimeText2.GitPackages): cache packages
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import re
|
||||
|
||||
import sublime
|
||||
import sublime_plugin
|
||||
from git import GitTextCommand
|
||||
|
||||
|
||||
class GitBranchStatusListener(sublime_plugin.EventListener):
|
||||
def on_activated(self, view):
|
||||
view.run_command("git_branch_status")
|
||||
|
||||
def on_post_save(self, view):
|
||||
view.run_command("git_branch_status")
|
||||
|
||||
|
||||
class GitBranchStatusCommand(GitTextCommand):
|
||||
def run(self, view):
|
||||
s = sublime.load_settings("Git.sublime-settings")
|
||||
if s.get("statusbar_branch"):
|
||||
self.run_command(['git', 'rev-parse', '--abbrev-ref', 'HEAD'], self.branch_done, show_status=False, no_save=True)
|
||||
else:
|
||||
self.view.set_status("git-branch", "")
|
||||
if (s.get("statusbar_status")):
|
||||
self.run_command(['git', 'status', '--porcelain'], self.status_done, show_status=False, no_save=True)
|
||||
else:
|
||||
self.view.set_status("git-status", "")
|
||||
|
||||
def branch_done(self, result):
|
||||
self.view.set_status("git-branch", "git branch: " + result.strip())
|
||||
|
||||
def status_done(self, result):
|
||||
lines = [line for line in result.splitlines() if re.match(r'^[ MADRCU?!]{1,2}\s+.*', line)]
|
||||
index = [line[0] for line in lines if not line[0].isspace()]
|
||||
working = [line[1] for line in lines if not line[1].isspace()]
|
||||
self.view.set_status("git-status-index", "index: " + self.status_string(index))
|
||||
self.view.set_status("git-status-working", "working: " + self.status_string(working))
|
||||
|
||||
def status_string(self, statuses):
|
||||
s = sublime.load_settings("Git.sublime-settings")
|
||||
symbols = s.get("statusbar_status_symbols")
|
||||
if not statuses:
|
||||
return symbols['clean']
|
||||
status = []
|
||||
if statuses.count('M'):
|
||||
status.append("%d%s" % (statuses.count('M'), symbols['modified']))
|
||||
if statuses.count('A'):
|
||||
status.append("%d%s" % (statuses.count('A'), symbols['added']))
|
||||
if statuses.count('D'):
|
||||
status.append("%d%s" % (statuses.count('D'), symbols['deleted']))
|
||||
if statuses.count('?'):
|
||||
status.append("%d%s" % (statuses.count('?'), symbols['untracked']))
|
||||
if statuses.count('U'):
|
||||
status.append("%d%s" % (statuses.count('U'), symbols['conflicts']))
|
||||
if statuses.count('R'):
|
||||
status.append("%d%s" % (statuses.count('R'), symbols['renamed']))
|
||||
if statuses.count('C'):
|
||||
status.append("%d%s" % (statuses.count('C'), symbols['copied']))
|
||||
return symbols['separator'].join(status)
|
Reference in New Issue
Block a user