Skip to content

Commit

Permalink
status.lua: Display hash and branch of file
Browse files Browse the repository at this point in the history
Return current commit hash and branch of repository where file in buffer
is located instead of current directory.
  • Loading branch information
niten94 committed Mar 2, 2025
1 parent d992c60 commit 85e2b3b
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 13 deletions.
6 changes: 4 additions & 2 deletions runtime/plugins/status/help/status.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ those options (`> help options`) for more information.

This plugin provides functions that can be used in the status line format:

* `status.branch`: returns the name of the current git branch.
* `status.hash`: returns the hash of the current git commit.
* `status.branch`: returns the name of the current git branch in the repository
where the file is located.
* `status.hash`: returns the hash of the current git commit in the repository
where the file is located.
* `status.paste`: returns "" if the paste option is disabled and "PASTE"
if it is enabled.
* `status.lines`: returns the number of lines in the buffer.
Expand Down
22 changes: 11 additions & 11 deletions runtime/plugins/status/status.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ local micro = import("micro")
local buffer = import("micro/buffer")
local config = import("micro/config")
local shell = import("micro/shell")
local filepath = import("filepath")
local humanize = import("humanize")
local strings = import("strings")

Expand Down Expand Up @@ -34,24 +35,23 @@ function size(b)
return humanize.Bytes(b:Size())
end

function branch(b)
local function parseRevision(b, opt)
if b.Type.Kind ~= buffer.BTInfo then
local branch, err = shell.ExecCommand("git", "rev-parse", "--abbrev-ref", "HEAD")
local dir = filepath.Dir(b.Path)
local str, err = shell.ExecCommand("git", "-C", dir, "rev-parse", opt, "HEAD")
if err == nil then
return strings.TrimSpace(branch)
return strings.TrimSpace(str)
end
return ""
end
return ""
end

function branch(b)
return parseRevision(b, "--abbrev-ref")
end

function hash(b)
if b.Type.Kind ~= 5 then
local hash, err = shell.ExecCommand("git", "rev-parse", "--short", "HEAD")
if err == nil then
return strings.TrimSpace(hash)
end
return ""
end
return parseRevision(b, "--short")
end

function paste(b)
Expand Down

0 comments on commit 85e2b3b

Please sign in to comment.