128 lines
3.6 KiB
Lua
128 lines
3.6 KiB
Lua
-- Highlight when yanking (copying) text
|
|
vim.api.nvim_create_autocmd("TextYankPost", {
|
|
callback = function()
|
|
vim.highlight.on_yank()
|
|
end,
|
|
})
|
|
|
|
----------------------------------------------
|
|
|
|
-- Reload ColorScheme by clearing cached modules
|
|
vim.api.nvim_create_user_command("ReloadColorscheme", function()
|
|
local current = vim.g.colors_name
|
|
if not current then
|
|
vim.notify("No colorscheme is currently set", vim.log.levels.WARN)
|
|
return
|
|
end
|
|
|
|
-- clear only the cached modules for this theme
|
|
for k in pairs(package.loaded) do
|
|
if k:match("^themes%." .. current) then
|
|
package.loaded[k] = nil
|
|
end
|
|
end
|
|
|
|
-- reload it
|
|
vim.cmd("colorscheme " .. current)
|
|
vim.notify("Reloaded " .. current .. " colorscheme", vim.log.levels.INFO)
|
|
end, { desc = "Reload the current colorscheme" })
|
|
|
|
----------------------------------------------
|
|
|
|
-- Command `:TSHighlightRoots` (works but uncomment only when used)
|
|
-- Description:
|
|
-- Collects all Tree-sitter highlight groups, resolves their links,
|
|
-- and outputs the unique root groups actually used (for theming/debugging).
|
|
--
|
|
-- Usage:
|
|
-- :TSHighlightRoots → prints roots in the command line
|
|
-- :TSHighlightRoots <filename> → writes roots into <filename> (overwrites)
|
|
-- (filename supports `~` and tab-completion)
|
|
--
|
|
-- local function resolve_link(name)
|
|
-- local seen = {}
|
|
-- while name and not seen[name] do
|
|
-- seen[name] = true
|
|
-- local hl = vim.api.nvim_get_hl(0, { name = name })
|
|
-- if hl.link then
|
|
-- name = hl.link
|
|
-- else
|
|
-- return name
|
|
-- end
|
|
-- end
|
|
-- end
|
|
--
|
|
-- vim.api.nvim_create_autocmd("VimEnter", {
|
|
-- callback = function()
|
|
-- vim.api.nvim_create_user_command("TSHighlightRoots", function(opts)
|
|
-- local roots = {}
|
|
-- for _, group in ipairs(vim.fn.getcompletion("@", "highlight")) do
|
|
-- local root = resolve_link(group)
|
|
-- if root then
|
|
-- roots[root] = true
|
|
-- end
|
|
-- end
|
|
--
|
|
-- local output = { "Unique root highlight groups used by Tree-sitter:" }
|
|
-- for root in pairs(roots) do
|
|
-- table.insert(output, " " .. root)
|
|
-- end
|
|
--
|
|
-- if opts.args ~= "" then
|
|
-- -- write to file
|
|
-- local filename = vim.fn.expand(opts.args)
|
|
-- local fd = assert(io.open(filename, "w"))
|
|
-- fd:write(table.concat(output, "\n"))
|
|
-- fd:close()
|
|
-- print("Wrote roots to " .. filename)
|
|
-- else
|
|
-- -- default: print to command line
|
|
-- for _, line in ipairs(output) do
|
|
-- print(line)
|
|
-- end
|
|
-- end
|
|
-- end, {
|
|
-- nargs = "?", -- allow 0 or 1 argument
|
|
-- complete = "file", -- tab-complete filenames
|
|
-- })
|
|
-- end,
|
|
-- })
|
|
|
|
----------------------------------------------
|
|
----------------------------------------------
|
|
-- Useful tricks that do not fully work
|
|
----------------------------------------------
|
|
|
|
-- -- Show cursorline only in the active window
|
|
--
|
|
-- vim.api.nvim_create_autocmd({ "WinEnter", "BufEnter" }, {
|
|
-- callback = function()
|
|
-- local ft = vim.bo.filetype
|
|
-- vim.notify("enter: " .. ft .. " - " .. vim.bo.buftype)
|
|
-- -- if not ft:match("^Telescope") and ft ~= "NvimTree" then
|
|
-- -- vim.wo.cursorline = true
|
|
-- -- end
|
|
-- end,
|
|
-- })
|
|
|
|
-- vim.api.nvim_create_autocmd({ "WinLeave", "BufLeave" }, {
|
|
-- callback = function()
|
|
-- local ft = vim.bo.filetype
|
|
-- vim.notify("exit: " .. ft .. " - " .. vim.bo.buftype)
|
|
-- -- if not ft:match("^Telescope") and ft ~= "NvimTree" then
|
|
-- -- vim.wo.cursorline = false
|
|
-- -- end
|
|
-- end,
|
|
-- })
|
|
|
|
----------------------------------------------
|
|
|
|
-- -- Associate filetype
|
|
--
|
|
-- vim.api.nvim_create_autocmd("FileType", {
|
|
-- pattern = "text",
|
|
-- callback = function()
|
|
-- vim.bo.filetype = "markdown"
|
|
-- end,
|
|
-- })
|