my demo first config lua
This commit is contained in:
50
current_config/lua/alpha/animations.lua
Normal file
50
current_config/lua/alpha/animations.lua
Normal file
@@ -0,0 +1,50 @@
|
||||
local redraw_buffer = function()
|
||||
local Animation = require "animation"
|
||||
local fps = 45 -- frames per second
|
||||
local easing = require "animation.easing"
|
||||
|
||||
local buffer = 0
|
||||
local len = 0
|
||||
local place_holder = {}
|
||||
|
||||
local lines = vim.api.nvim_buf_get_lines(buffer, 0, -1, true)
|
||||
|
||||
for _, line in ipairs(lines) do
|
||||
len = len + string.len(line)
|
||||
table.insert(place_holder, "")
|
||||
end
|
||||
|
||||
vim.api.nvim_buf_set_lines(buffer, 0, #lines, true, place_holder)
|
||||
|
||||
local duration = math.ceil(len / fps * 1000)
|
||||
|
||||
local i = 1
|
||||
local line_nr = 1
|
||||
local insertLine = ""
|
||||
|
||||
local function callback()
|
||||
if lines[line_nr] == nil then
|
||||
return true
|
||||
end
|
||||
local char = string.sub(lines[line_nr], i, i)
|
||||
if char == nil then
|
||||
return true
|
||||
end
|
||||
insertLine = insertLine .. char
|
||||
i = i + 1
|
||||
vim.api.nvim_buf_set_lines(buffer, line_nr - 1, line_nr, true, { insertLine })
|
||||
|
||||
if insertLine == lines[line_nr] then
|
||||
i = 1
|
||||
line_nr = line_nr + 1
|
||||
insertLine = ""
|
||||
end
|
||||
end
|
||||
|
||||
local animation = Animation(duration, fps, easing.line, callback)
|
||||
animation:run()
|
||||
end
|
||||
|
||||
return {
|
||||
redraw_buffer = redraw_buffer,
|
||||
}
|
||||
Reference in New Issue
Block a user