Files
neovim-config/lua/config/autocmds.lua
T
rootiest 273580f533 ♻️ refactor(full-scope)!: major revision refactoring
Code layout has been changed and improoved. Annotations are added for documentation. Automated through utility functions and data tables

BREAKING CHANGE: Tested from clean. Now properly uses LuaRocks to install dependencies.
2024-09-04 16:07:12 -04:00

73 lines
2.6 KiB
Lua

--- @module "config.autocmds"
--- This module defines the autocommands for the Neovim configuration.
-- ╭─────────────────────────────────────────────────────────╮
-- │ Autocommands │
-- ╰─────────────────────────────────────────────────────────╯
local autogrp = vim.api.nvim_create_augroup
local autocmd = vim.api.nvim_create_autocmd
-- GIT CONFLICT MARKERS
-- if there are conflicts, jump to first conflict, highlight conflict markers,
-- and disable diagnostics (simplified version of `git-conflict.nvim`)
autogrp("GitConflictMarkers", { clear = true })
autocmd({ "BufEnter", "FocusGained" }, {
group = "GitConflictMarkers",
callback = function(ctx)
local hlgroup = "DiagnosticVirtualTextInfo" -- CONFIG
if not vim.api.nvim_buf_is_valid(ctx.buf) then
return
end
vim.system(
{ "git", "diff", "--check", "--", vim.api.nvim_buf_get_name(ctx.buf) },
{},
vim.schedule_wrap(function(out)
local noConflicts = out.code == 0
local noGitRepo =
vim.startswith(out.stdout, "warning: Not a git repository")
if noConflicts or noGitRepo then
return
end
local ns = vim.api.nvim_create_namespace("conflictMarkers")
local firstConflict
for conflictLnum in out.stdout:gmatch("(%d+): leftover conflict marker") do
local lnum = tonumber(conflictLnum)
vim.api.nvim_buf_add_highlight(ctx.buf, ns, hlgroup, lnum - 1, 0, -1)
if not firstConflict then
firstConflict = lnum
end
end
if not firstConflict then
return
end
vim.api.nvim_win_set_cursor(0, { firstConflict, 0 })
vim.diagnostic.enable(false, { bufnr = ctx.buf })
vim.notify_once(
"Conflict markers found.",
nil,
{ title = "Git Conflicts" }
)
end)
)
end,
})
-- TodoFzfLua command override to use Telescope
-- when fzf-lua is not installed
autogrp("TodoFzfLua", { clear = true })
autocmd({ "BufEnter" }, {
group = "TodoFzfLua",
callback = function()
if not pcall(require, "fzf-lua") then
vim.cmd([[command! -nargs=* TodoFzfLua :TodoTelescope]])
end
end,
})
-- Set up autocommands and highlight settings
local load_highlight = require("utils.highlight")
load_highlight.setup_autocommands()
load_highlight.setup_dashboard_highlight()