aboutsummaryrefslogtreecommitdiff
path: root/lua/startuptools.lua
diff options
context:
space:
mode:
authormax397574 <[email protected]>2021-10-05 20:23:06 +0200
committermax397574 <[email protected]>2021-10-05 20:23:06 +0200
commit24bd3beeb37f9f66978ae4396143b25a0808df3b (patch)
tree5d4cf20b0af61de7d75cee4e24136d13a3acc265 /lua/startuptools.lua
parentdb2f9b522b74390e3cb7a1b299b08a708cc98391 (diff)
feat(plugin): ✨added option for align
Diffstat (limited to 'lua/startuptools.lua')
-rw-r--r--lua/startuptools.lua38
1 files changed, 30 insertions, 8 deletions
diff --git a/lua/startuptools.lua b/lua/startuptools.lua
index dfa456a..32abb12 100644
--- a/lua/startuptools.lua
+++ b/lua/startuptools.lua
@@ -26,11 +26,26 @@ local settings = {
[" New File"] = {"lua require'startuptools'.new_file()", "<leader>nf"},
},
options = {
- align = "center",
+ align = "center", -- center or padding
mapping_names = true,
+ padding = 5, -- only used if align padding
}
}
+local function spaces(amount)
+ return string.rep(" ", amount)
+end
+
+local function longest_line(lines)
+ local longest = 0
+ for _, line in ipairs(lines) do
+ if line:len() > longest then
+ longest = line:len()
+ end
+ end
+ return longest
+end
+
local function create_mappings()
vim.api.nvim_buf_set_keymap(
0,
@@ -58,18 +73,25 @@ function M.check_line()
end
end
-local function center(dict)
- local centered = {}
- local space_left = vim.o.columns - string.len(dict[1])
- for _, line in ipairs(dict) do
- table.insert(centered, string.rep(" ", space_left / 2) .. line)
+local function align(dict)
+ local aligned = {}
+ if settings.options.align == "center" then
+ local max_len = longest_line(dict)
+ local space_left = vim.o.columns - max_len
+ for _, line in ipairs(dict) do
+ table.insert(aligned, spaces(space_left/2).. line)
+ end
+ elseif settings.options.align == "padding" then
+ for _, line in ipairs(dict) do
+ table.insert(aligned, spaces(settings.options.padding).. line)
+ end
end
- return centered
+ return aligned
end
local count = 1
local function set_lines(len, text, hi, pass)
- vim.api.nvim_buf_set_lines(0, count, count + len, false, center(text))
+ vim.api.nvim_buf_set_lines(0, count, count + len, false, align(text))
vim.api.nvim_win_set_cursor(0, { count, 0 })
if pass then
vim.g.section_length = count