New to lua. I would like to create an autocmd
in my config.lua that would only apply to .md files. Every time the file is saved it would look for the line that start with Date: *
and change it to Date: strftime("%Y/%M/%d")
. I have been looking at the link and more specifically in the following
:autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s
:fun LastMod()
: if line("$") > 20
: let l = 20
: else
: let l = line("$")
: endif
: exe "1," .. l .. "g/Last modified: /s/Last modified: .*/Last modified: " ..
: \ strftime("%Y %b %d")
:endfun
But I would like to do that in lua.
Would that be possible?
We create an command for the BufWritePre
event. When this event triggers, we retrieve the buffer being written, then loop through its lines. Once we find a line starting with Date:
we replace it with current date and then its saved.
vim.api.nvim_create_autocmd(
"BufWritePre", {
pattern = "*.md",
callback = function()
local bufnr = vim.api.nvim_get_current_buf()
for line_num = 0, vim.api.nvim_buf_line_count(bufnr) - 1 do
local line = vim.api.nvim_buf_get_lines(bufnr, line_num, line_num + 1, false)[1]
if line:match("Date:") then
local new_date = os.date("Date: %Y/%m/%d")
vim.api.nvim_buf_set_lines(bufnr, line_num, line_num + 1, false, { new_date })
break
end
end
end
})