Criar um comando que permita ao usuário envolver um bloco de código com ```.
exemplo:
Antes: 2 2 sin(x) + cos(x) =1
Depois:
2 2
sin(x) + cos(x) =1
Na pasta ftplugin crio o arquivo markdown.lua, com o seguinte código:
-- Retorna a primeira e última linha do bloco visual.
--
local function get_line_range_of_visual_block()
local _, first_line, _, _ = unpack(vim.fn.getpos("'<"))
local _, last_line, _, _ = unpack(vim.fn.getpos("'>"))
return first_line-1, last_line+1
end
-- Adiciona acima e abaixo do bloco visual o texto definido
-- em t.
local function code_block()
local first, last = get_line_range_of_visual_block()
local t = {"```", ""}
vim.api.nvim_buf_set_text(0, first, 0, first, 0, t)
vim.api.nvim_buf_set_text(0, last, 0, last, 0, t)
end
vim.api.nvim_create_user_command('CodeBlock', code_block, { range = true })
-- Retorna a o dicionário "tabela" com a primeira e última linha
-- do bloco visual.
local function get_line_range_of_visual_block()
local _, first_line, _, _ = unpack(vim.fn.getpos("'<"))
local _, last_line, _, _ = unpack(vim.fn.getpos("'>"))
return {first_line-1, last_line+1}
end
-- Adiciona acima e abaixo do bloco visual o texto definido
-- em t.
local function code_block()
local range = get_line_range_of_visual_block()
local t = {"```", ""}
for line = 1, 2 do
vim.api.nvim_buf_set_text(0, range[line], 0, range[line], 0, t)
end
end
vim.api.nvim_create_user_command('CodeBlock', code_block, { range = true })