-- Line numbers
vim.wo.number = true

-- Tabs
vim.o.expandtab = true
vim.o.smartindent = true
vim.o.tabstop = 4
vim.o.shiftwidth = 4

-- Clipboard
local function paste()
	return {
		vim.fn.split(vim.fn.getreg(""), "\n"),
		vim.fn.getregtype(""),
	}
end

vim.o.clipboard = "unnamedplus"
-- vim.g.clipboard = {
-- 	name = "OSC 52",
-- 	copy = {
-- 		["+"] = require("vim.ui.clipboard.osc52").copy("+"),
-- 		["*"] = require("vim.ui.clipboard.osc52").copy("*"),
-- 	},
-- 	paste = {
-- 		["+"] = paste,
-- 		["*"] = paste,
-- 	},
-- }
vim.api.nvim_exec(
	[[
        augroup YankHighlight
            autocmd!
            autocmd TextYankPost * silent! lua vim.highlight.on_yank()
        augroup end
    ]],
	false
)

-- Restore cursor
local restore_cursor_augroup = vim.api.nvim_create_augroup("restore_cursor_shape_on_exit", { clear = true })

vim.api.nvim_create_autocmd({ "VimLeave" }, {
	group = restore_cursor_augroup,
	desc = "restore the cursor shape on exit of neovim",
	command = "set guicursor=a:ver20",
})

-- Horizontal Split Line
vim.opt.laststatus = 3

-- Padding around current line
vim.opt.scrolloff = 5

-- Highlight current line
vim.opt.cursorline = true

-- Column limit
vim.opt.colorcolumn = "80"

-- Set signcolumn to prevent lsp flickering
vim.opt.signcolumn = "yes"

-- Always show tabline
vim.opt.laststatus = 2
