mirror of
https://github.com/windwp/nvim-ts-autotag.git
synced 2024-12-28 23:39:15 -06:00
toggle created
remove cleanup
This commit is contained in:
parent
1cca23c9da
commit
36dbb20189
@ -130,6 +130,7 @@ local Opts = {
|
||||
enable_rename = true,
|
||||
enable_close = true,
|
||||
enable_close_on_slash = false,
|
||||
enable = true,
|
||||
}
|
||||
|
||||
---@class nvim-ts-autotag.PluginSetup
|
||||
@ -171,8 +172,13 @@ end
|
||||
|
||||
--- Do general plugin setup
|
||||
---@param opts nvim-ts-autotag.PluginSetup?
|
||||
function Setup.setup(opts)
|
||||
opts = opts or {}
|
||||
function Setup.setup(config)
|
||||
if config then
|
||||
Setup.opts = config.opts
|
||||
opts = Setup.opts
|
||||
else
|
||||
opts = {}
|
||||
end
|
||||
if Setup.did_setup() then
|
||||
return
|
||||
end
|
||||
@ -197,6 +203,7 @@ function Setup.setup(opts)
|
||||
TagConfigs:add_alias(new_ft, existing_ft)
|
||||
end
|
||||
local augroup = vim.api.nvim_create_augroup("nvim_ts_xmltag", { clear = true })
|
||||
-- initializes autotag
|
||||
vim.api.nvim_create_autocmd("InsertEnter", {
|
||||
group = augroup,
|
||||
once = true,
|
||||
@ -204,6 +211,7 @@ function Setup.setup(opts)
|
||||
require("nvim-ts-autotag.internal").attach(args.buf)
|
||||
end,
|
||||
})
|
||||
-- adds autotag to every new file opened
|
||||
vim.api.nvim_create_autocmd("Filetype", {
|
||||
group = augroup,
|
||||
callback = function(args)
|
||||
|
@ -26,6 +26,9 @@ local buffer_tag = {}
|
||||
local setup_ts_tag = function()
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local tag_pats = TagConfigs:get_patterns(vim.bo.filetype)
|
||||
tag_pats["enable_close"] = Setup.get_opts(vim.bo.filetype).enable_close
|
||||
tag_pats["enable_close_on_slash"] = Setup.get_opts(vim.bo.filetype).enable_close_on_slash
|
||||
tag_pats["enable_rename"] = Setup.get_opts(vim.bo.filetype).enable_rename
|
||||
if tag_pats then
|
||||
buffer_tag[bufnr] = tag_pats
|
||||
else
|
||||
@ -511,5 +514,76 @@ M.detach = function(bufnr)
|
||||
buffer_tag[bufnr] = nil
|
||||
end
|
||||
|
||||
M.enable = function()
|
||||
for bufnr, tag in pairs(buffer_tag) do
|
||||
if tag ~= nil then
|
||||
local group = vim.api.nvim_create_augroup("nvim-ts-autotag-" .. bufnr, { clear = true })
|
||||
if tag.enable_close then
|
||||
vim.keymap.set("i", ">", function()
|
||||
local row, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
vim.api.nvim_buf_set_text(bufnr, row - 1, col, row - 1, col, { ">" })
|
||||
M.close_tag()
|
||||
vim.api.nvim_win_set_cursor(0, { row, col + 1 })
|
||||
end, {
|
||||
noremap = true,
|
||||
silent = true,
|
||||
buffer = bufnr,
|
||||
})
|
||||
end
|
||||
if tag.enable_close_on_slash then
|
||||
vim.keymap.set("i", "/", function()
|
||||
local row, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
vim.api.nvim_buf_set_text(bufnr, row - 1, col, row - 1, col, { "/" })
|
||||
if is_before_arrow() then
|
||||
log.debug("is_before_arrow")
|
||||
M.close_slash_tag()
|
||||
end
|
||||
local new_row, new_col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
vim.api.nvim_win_set_cursor(0, { new_row, new_col + 1 })
|
||||
end, {
|
||||
noremap = true,
|
||||
silent = true,
|
||||
buffer = bufnr,
|
||||
})
|
||||
end
|
||||
if tag.enable_rename then
|
||||
vim.api.nvim_create_autocmd("InsertLeave", {
|
||||
group = group,
|
||||
buffer = bufnr,
|
||||
callback = M.rename_tag,
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
M.disable = function()
|
||||
for bufnr, _ in pairs(buffer_tag) do
|
||||
vim.keymap.set("i", ">", ">", {
|
||||
noremap = true,
|
||||
silent = true,
|
||||
buffer = bufnr,
|
||||
})
|
||||
vim.keymap.set("i", "/", "/", {
|
||||
noremap = true,
|
||||
silent = true,
|
||||
buffer = bufnr,
|
||||
})
|
||||
vim.cmd("autocmd! nvim-ts-autotag-" .. bufnr)
|
||||
end
|
||||
end
|
||||
function M.buffers()
|
||||
end
|
||||
|
||||
M.toggle = function()
|
||||
Setup.opts.enable = not Setup.opts.enable
|
||||
if Setup.opts.enable then
|
||||
M.enable()
|
||||
else
|
||||
M.disable()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- _G.AUTO = M
|
||||
return M
|
||||
|
Loading…
Reference in New Issue
Block a user