]> git.lizzy.rs Git - micro.git/blob - runtime/plugins/status/status.lua
Merge
[micro.git] / runtime / plugins / status / status.lua
1 VERSION = "1.0.0"
2
3 local micro = import("micro")
4 local buffer = import("micro/buffer")
5 local config = import("micro/config")
6 local humanize = import("humanize")
7
8 function init()
9     micro.SetStatusInfoFn("status.branch")
10     micro.SetStatusInfoFn("status.hash")
11     micro.SetStatusInfoFn("status.paste")
12     micro.SetStatusInfoFn("status.vcol")
13     micro.SetStatusInfoFn("status.lines")
14     micro.SetStatusInfoFn("status.bytes")
15     micro.SetStatusInfoFn("status.size")
16     config.AddRuntimeFile("status", config.RTHelp, "help/status.md")
17 end
18
19 function lines(b)
20     return tostring(b:LinesNum())
21 end
22
23 function vcol(b)
24     return tostring(b:GetActiveCursor():GetVisualX())
25 end
26
27 function bytes(b)
28     return tostring(b:Size())
29 end
30
31 function size(b)
32     return humanize.Bytes(b:Size())
33 end
34
35 function branch(b)
36     if b.Type.Kind ~= buffer.BTInfo then
37         local shell = import("micro/shell")
38         local strings = import("strings")
39
40         local branch, err = shell.ExecCommand("git", "rev-parse", "--abbrev-ref", "HEAD")
41         if err == nil then
42             return strings.TrimSpace(branch)
43         end
44         return ""
45     end
46 end
47
48 function hash(b)
49     if b.Type.Kind ~= 5 then
50         local shell = import("micro/shell")
51         local strings = import("strings")
52
53         local hash, err = shell.ExecCommand("git", "rev-parse", "--short", "HEAD")
54         if err == nil then
55             return strings.TrimSpace(hash)
56         end
57         return ""
58     end
59 end
60
61 function paste(b)
62     if config.GetGlobalOption("paste") then
63         return "PASTE "
64     end
65     return ""
66 end