| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 | 
							- local M = {}
 
- local Log = require "lvim.core.log"
 
- --- Load the default set of autogroups and autocommands.
 
- function M.load_defaults()
 
-   vim.api.nvim_create_autocmd({ "FileType" }, {
 
-     pattern = {
 
-       "Jaq",
 
-       "qf",
 
-       "help",
 
-       "man",
 
-       "lspinfo",
 
-       "spectre_panel",
 
-       "lir",
 
-       "DressingSelect",
 
-       "tsplayground",
 
-     },
 
-     callback = function()
 
-       vim.cmd [[
 
-       nnoremap <silent> <buffer> q :close<CR>
 
-       set nobuflisted
 
-     ]]
 
-     end,
 
-   })
 
-   local definitions = {
 
-     {
 
-       "TextYankPost",
 
-       {
 
-         group = "_general_settings",
 
-         pattern = "*",
 
-         desc = "Highlight text on yank",
 
-         callback = function()
 
-           require("vim.highlight").on_yank { higroup = "Search", timeout = 100 }
 
-         end,
 
-       },
 
-     },
 
-     {
 
-       "FileType",
 
-       {
 
-         group = "_hide_dap_repl",
 
-         pattern = "dap-repl",
 
-         command = "set nobuflisted",
 
-       },
 
-     },
 
-     {
 
-       "FileType",
 
-       {
 
-         group = "_filetype_settings",
 
-         pattern = "qf",
 
-         command = "set nobuflisted",
 
-       },
 
-     },
 
-     {
 
-       "FileType",
 
-       {
 
-         group = "_filetype_settings",
 
-         pattern = { "gitcommit", "markdown" },
 
-         command = "setlocal wrap spell",
 
-       },
 
-     },
 
-     {
 
-       "FileType",
 
-       {
 
-         group = "_buffer_mappings",
 
-         pattern = { "qf", "help", "man", "floaterm", "lspinfo", "lsp-installer", "null-ls-info" },
 
-         command = "nnoremap <silent> <buffer> q :close<CR>",
 
-       },
 
-     },
 
-     {
 
-       "VimResized",
 
-       {
 
-         group = "_auto_resize",
 
-         pattern = "*",
 
-         command = "tabdo wincmd =",
 
-       },
 
-     },
 
-     {
 
-       "FileType",
 
-       {
 
-         group = "_filetype_settings",
 
-         pattern = "alpha",
 
-         callback = function()
 
-           vim.cmd [[
 
-             nnoremap <silent> <buffer> q :qa<CR>
 
-             nnoremap <silent> <buffer> <esc> :qa<CR>
 
-             set nobuflisted
 
-           ]]
 
-         end,
 
-       },
 
-     },
 
-     {
 
-       "FileType",
 
-       {
 
-         group = "_filetype_settings",
 
-         pattern = "lir",
 
-         callback = function()
 
-           vim.opt_local.number = false
 
-           vim.opt_local.relativenumber = false
 
-         end,
 
-       },
 
-     },
 
-     {
 
-       "ColorScheme",
 
-       {
 
-         group = "_lvim_colorscheme",
 
-         callback = function()
 
-           if lvim.builtin.breadcrumbs.active then
 
-             require("lvim.core.breadcrumbs").get_winbar()
 
-           end
 
-           local statusline_hl = vim.api.nvim_get_hl_by_name("StatusLine", true)
 
-           local cursorline_hl = vim.api.nvim_get_hl_by_name("CursorLine", true)
 
-           local normal_hl = vim.api.nvim_get_hl_by_name("Normal", true)
 
-           vim.api.nvim_set_hl(0, "CmpItemKindCopilot", { fg = "#6CC644" })
 
-           vim.api.nvim_set_hl(0, "CmpItemKindTabnine", { fg = "#CA42F0" })
 
-           vim.api.nvim_set_hl(0, "CmpItemKindCrate", { fg = "#F64D00" })
 
-           vim.api.nvim_set_hl(0, "CmpItemKindEmoji", { fg = "#FDE030" })
 
-           vim.api.nvim_set_hl(0, "SLCopilot", { fg = "#6CC644", bg = statusline_hl.background })
 
-           vim.api.nvim_set_hl(0, "SLGitIcon", { fg = "#E8AB53", bg = cursorline_hl.background })
 
-           vim.api.nvim_set_hl(0, "SLBranchName", { fg = normal_hl.foreground, bg = cursorline_hl.background })
 
-           vim.api.nvim_set_hl(0, "SLSeparator", { fg = cursorline_hl.background, bg = statusline_hl.background })
 
-         end,
 
-       },
 
-     },
 
-   }
 
-   M.define_autocmds(definitions)
 
- end
 
- local get_format_on_save_opts = function()
 
-   local defaults = require("lvim.config.defaults").format_on_save
 
-   -- accept a basic boolean `lvim.format_on_save=true`
 
-   if type(lvim.format_on_save) ~= "table" then
 
-     return defaults
 
-   end
 
-   return {
 
-     pattern = lvim.format_on_save.pattern or defaults.pattern,
 
-     timeout = lvim.format_on_save.timeout or defaults.timeout,
 
-   }
 
- end
 
- function M.enable_format_on_save()
 
-   local opts = get_format_on_save_opts()
 
-   vim.api.nvim_create_augroup("lsp_format_on_save", {})
 
-   vim.api.nvim_create_autocmd("BufWritePre", {
 
-     group = "lsp_format_on_save",
 
-     pattern = opts.pattern,
 
-     callback = function()
 
-       require("lvim.lsp.utils").format { timeout_ms = opts.timeout, filter = opts.filter }
 
-     end,
 
-   })
 
-   Log:debug "enabled format-on-save"
 
- end
 
- function M.disable_format_on_save()
 
-   M.clear_augroup "lsp_format_on_save"
 
-   Log:debug "disabled format-on-save"
 
- end
 
- function M.configure_format_on_save()
 
-   if lvim.format_on_save then
 
-     M.enable_format_on_save()
 
-   else
 
-     M.disable_format_on_save()
 
-   end
 
- end
 
- function M.toggle_format_on_save()
 
-   local exists, autocmds = pcall(vim.api.nvim_get_autocmds, {
 
-     group = "lsp_format_on_save",
 
-     event = "BufWritePre",
 
-   })
 
-   if not exists or #autocmds == 0 then
 
-     M.enable_format_on_save()
 
-   else
 
-     M.disable_format_on_save()
 
-   end
 
- end
 
- function M.enable_reload_config_on_save()
 
-   local user_config_file = require("lvim.config"):get_user_config_path()
 
-   if vim.loop.os_uname().version:match "Windows" then
 
-     -- autocmds require forward slashes even on windows
 
-     user_config_file = user_config_file:gsub("\\", "/")
 
-   end
 
-   vim.api.nvim_create_autocmd("BufWritePost", {
 
-     group = "_general_settings",
 
-     pattern = user_config_file,
 
-     desc = "Trigger LvimReload on saving config.lua",
 
-     callback = function()
 
-       require("lvim.config"):reload()
 
-     end,
 
-   })
 
- end
 
- function M.enable_transparent_mode()
 
-   vim.api.nvim_create_autocmd("ColorScheme", {
 
-     pattern = "*",
 
-     callback = function()
 
-       local hl_groups = {
 
-         "Normal",
 
-         "SignColumn",
 
-         "NormalNC",
 
-         "TelescopeBorder",
 
-         "NvimTreeNormal",
 
-         "EndOfBuffer",
 
-         "MsgArea",
 
-       }
 
-       for _, name in ipairs(hl_groups) do
 
-         vim.cmd(string.format("highlight %s ctermbg=none guibg=none", name))
 
-       end
 
-     end,
 
-   })
 
-   vim.opt.fillchars = "eob: "
 
- end
 
- --- Clean autocommand in a group if it exists
 
- --- This is safer than trying to delete the augroup itself
 
- ---@param name string the augroup name
 
- function M.clear_augroup(name)
 
-   -- defer the function in case the autocommand is still in-use
 
-   Log:debug("request to clear autocmds  " .. name)
 
-   vim.schedule(function()
 
-     pcall(function()
 
-       vim.api.nvim_clear_autocmds { group = name }
 
-     end)
 
-   end)
 
- end
 
- --- Create autocommand groups based on the passed definitions
 
- --- Also creates the augroup automatically if it doesn't exist
 
- ---@param definitions table contains a tuple of event, opts, see `:h nvim_create_autocmd`
 
- function M.define_autocmds(definitions)
 
-   for _, entry in ipairs(definitions) do
 
-     local event = entry[1]
 
-     local opts = entry[2]
 
-     if type(opts.group) == "string" and opts.group ~= "" then
 
-       local exists, _ = pcall(vim.api.nvim_get_autocmds, { group = opts.group })
 
-       if not exists then
 
-         vim.api.nvim_create_augroup(opts.group, {})
 
-       end
 
-     end
 
-     vim.api.nvim_create_autocmd(event, opts)
 
-   end
 
- end
 
- return M
 
 
  |