-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathalign.lua
More file actions
42 lines (37 loc) · 1013 Bytes
/
align.lua
File metadata and controls
42 lines (37 loc) · 1013 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
VERSION = "1.0.0"
local micro = import("micro")
local config = import("micro/config")
function init()
config.MakeCommand("align", align, config.NoComplete)
config.AddRuntimeFile("align", config.RTHelp, "help/align.md")
end
function max(arr)
local largest = 0
for i = 1, #arr do
local x = arr[i]
if x > largest then
largest = x
end
end
return largest
end
function map(arr, f)
local arrNew = {}
for i = 1, #arr do
arrNew[i] = f(arr[i])
end
return arrNew
end
function align(bp)
local cursors = bp.Buf:GetCursors()
if cursors then
local furthestX = max(map(cursors, function(cursor) return cursor:GetVisualX() end))
for i = 1, #cursors do
local cursor = cursors[i]
bp.Buf:insert(-cursor.Loc, string.rep(" ", furthestX - cursor:GetVisualX()))
end
micro.InfoBar():Message("Aligned cursors.")
else
micro.InfoBar():Message("No cursors found.")
end
end