Skip to content

Instantly share code, notes, and snippets.

@Shadowfiend
Created August 23, 2013 03:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shadowfiend/6315168 to your computer and use it in GitHub Desktop.
Save Shadowfiend/6315168 to your computer and use it in GitHub Desktop.
(function git-branch-for (document)
(let ((directory (((document fileURL) path) stringByDeletingLastPathComponent))
(manager (NSFileManager defaultManager)))
(let (directory-with-git (directory stringByAppendingPathComponent:".git"))
(if (manager directoryExistsNamed:directory-with-git)
(let (previous-directory (manager currentDirectoryPath))
(manager changeCurrentDirectoryPath:directory)
(let (branches ((NSString stringWithShellCommand:"git branch -l")))
(let (current-branch ((/^\* (.*)$/ findInString:branches) groupAtIndex:1))
(manager changeCurrentDirectoryPath:previous-directory)
current-branch)))))))
(function git-branch-for-event (window document)
(let (branch (git-branch-for document))
(if branch
("[#{branch}]")
(else ""))))
(function git-branch-label ()
(ViStatusEventLabel statusLabelForEvent:"didSelectDocument" withTransformer:git-branch-for-event))
# Set up default status bar.
((NSApp delegate) setStatusSetupBlock:
(do (status-view)
(let ((caret ($vi-status-caret-label))
(mode ($vi-status-mode-label))
(filename ($vi-status-filename-label))
(git-branch (git-branch-label)))
(caret setAlignment:"alignRight")
(git-branch setAlignment:"alignRight")
(status-view
setStatusComponents:((list mode filename git-branch caret) array)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment