82 lines
2.3 KiB
Lua
82 lines
2.3 KiB
Lua
-- Highlight On Yank
|
|
vim.api.nvim_create_autocmd("TextYankPost", {
|
|
desc = "Highlight when yanking (copying) text",
|
|
group = vim.api.nvim_create_augroup("kickstart-highlight-yank", { clear = true }),
|
|
callback = function()
|
|
vim.hl.on_yank()
|
|
end,
|
|
})
|
|
|
|
-- python specific
|
|
vim.api.nvim_create_autocmd("FileType", {
|
|
pattern = "python",
|
|
command = "setlocal shiftwidth=4 tabstop=4"
|
|
})
|
|
|
|
-- restore cursor to file position in previous editing session
|
|
vim.api.nvim_create_autocmd("BufReadPost", {
|
|
callback = function(args)
|
|
local mark = vim.api.nvim_buf_get_mark(args.buf, '"')
|
|
local line_count = vim.api.nvim_buf_line_count(args.buf)
|
|
if mark[1] > 0 and mark[1] <= line_count then
|
|
vim.api.nvim_win_set_cursor(0, mark)
|
|
-- defer centering slightly so it's applied after render
|
|
vim.schedule(function()
|
|
vim.cmd("normal! zz")
|
|
end)
|
|
end
|
|
end,
|
|
})
|
|
|
|
-- open help in vertical split
|
|
vim.api.nvim_create_autocmd("FileType", {
|
|
pattern = "help",
|
|
command = "wincmd L",
|
|
})
|
|
|
|
-- auto resize splits when the terminal's window is resized
|
|
vim.api.nvim_create_autocmd("VimResized", {
|
|
command = "wincmd =",
|
|
})
|
|
|
|
-- no auto continue comments on new line
|
|
vim.api.nvim_create_autocmd("FileType", {
|
|
group = vim.api.nvim_create_augroup("no_auto_comment", {}),
|
|
callback = function()
|
|
vim.opt_local.formatoptions:remove({ "c", "r", "o" })
|
|
end,
|
|
})
|
|
|
|
-- ide like highlight when stopping cursor
|
|
vim.api.nvim_create_autocmd("CursorMoved", {
|
|
group = vim.api.nvim_create_augroup("LspReferenceHighlight", { clear = true }),
|
|
desc = "Highlight references under cursor",
|
|
callback = function()
|
|
-- Only run if the cursor is not in insert mode
|
|
if vim.fn.mode() ~= "i" then
|
|
local clients = vim.lsp.get_clients({ bufnr = 0 })
|
|
local supports_highlight = false
|
|
for _, client in ipairs(clients) do
|
|
if client.server_capabilities.documentHighlightProvider then
|
|
supports_highlight = true
|
|
break -- Found a supporting client, no need to check others
|
|
end
|
|
end
|
|
|
|
-- 3. Proceed only if an LSP is active AND supports the feature
|
|
if supports_highlight then
|
|
vim.lsp.buf.clear_references()
|
|
vim.lsp.buf.document_highlight()
|
|
end
|
|
end
|
|
end,
|
|
})
|
|
|
|
-- ide like highlight when stopping cursor
|
|
vim.api.nvim_create_autocmd("CursorMovedI", {
|
|
group = "LspReferenceHighlight",
|
|
desc = "Clear highlights when entering insert mode",
|
|
callback = function()
|
|
vim.lsp.buf.clear_references()
|
|
end,
|
|
})
|