2024-04-27 11:07:41 +00:00
|
|
|
local string_utils = require("codesnap.utils.string")
|
|
|
|
local table_utils = require("codesnap.utils.table")
|
|
|
|
local highlight_module = {}
|
|
|
|
|
|
|
|
function highlight_module.call_cb_with_parsed_config(cb_name, highlight_start_line_number, highlight_end_line_number)
|
|
|
|
vim.api.nvim_buf_delete(0, {})
|
|
|
|
vim.schedule(function()
|
|
|
|
local main = require("codesnap")
|
|
|
|
local config = table_utils.merge(main.highlight_mode_config, {
|
|
|
|
highlight_start_line_number = highlight_start_line_number,
|
|
|
|
highlight_end_line_number = highlight_end_line_number,
|
|
|
|
})
|
|
|
|
|
|
|
|
main[cb_name](config)
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
|
|
|
|
function highlight_module.create_highlight_selector_window(cb_name, code)
|
|
|
|
local width = 100
|
|
|
|
local height = 20
|
|
|
|
local row = vim.fn.winheight(0) / 2 - height / 2
|
|
|
|
local col = vim.fn.winwidth(0) / 2 - width / 2
|
|
|
|
local bufnr = vim.api.nvim_create_buf(false, true)
|
|
|
|
|
|
|
|
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, string_utils.split(code, "\n"))
|
|
|
|
local window_id = vim.api.nvim_open_win(bufnr, false, {
|
|
|
|
relative = "editor",
|
|
|
|
width = width,
|
|
|
|
height = height,
|
|
|
|
col = col,
|
|
|
|
row = row,
|
|
|
|
style = "minimal",
|
|
|
|
border = "rounded",
|
2024-05-04 12:11:45 +00:00
|
|
|
title = "Select highlight lines",
|
2024-04-27 11:07:41 +00:00
|
|
|
title_pos = "center",
|
|
|
|
})
|
|
|
|
|
|
|
|
vim.api.nvim_buf_set_option(bufnr, "modifiable", false)
|
|
|
|
vim.api.nvim_buf_set_option(bufnr, "filetype", vim.bo.filetype)
|
|
|
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "q", ":q<CR>", {})
|
|
|
|
vim.api.nvim_buf_set_keymap(bufnr, "", "<ESC>", ":q<CR>", {})
|
|
|
|
vim.api.nvim_buf_set_keymap(
|
|
|
|
bufnr,
|
|
|
|
"v",
|
|
|
|
"<CR>",
|
|
|
|
":lua require('codesnap.highlight').call_cb_with_parsed_config('"
|
|
|
|
.. cb_name
|
|
|
|
.. "', require('codesnap.utils.visual').get_start_line_number(), require('codesnap.utils.visual').get_end_line_number())<CR>",
|
|
|
|
{ silent = true }
|
|
|
|
)
|
|
|
|
vim.api.nvim_set_current_win(window_id)
|
|
|
|
end
|
|
|
|
|
|
|
|
return highlight_module
|