require("vim._core.ui2").enable({}) map = vim.keymap.set vim.o.termguicolors = true vim.o.showmode = true vim.o.laststatus = 3 vim.o.nu = true vim.o.swapfile = false vim.o.winborder = "single" vim.o.scrolloff = 20 vim.o.shiftwidth = 4 vim.o.tabstop = 4 vim.o.softtabstop = 4 vim.o.ignorecase = true vim.o.smartcase = true vim.o.incsearch = true vim.o.hlsearch = true vim.o.mouse = "a" vim.o.path = "**" vim.o.clipboard = "unnamedplus" vim.o.splitright = true vim.o.splitbelow = true vim.o.signcolumn = "yes" vim.o.completeopt = "menu,menuone,noselect,popup,fuzzy" vim.o.autoread = true vim.o.undofile = true vim.o.undodir = vim.fn.stdpath("state") .. "/undo" vim.o.errorformat = "%f(%l:%c) %m,%-G%.%#" -- ----------------------------- -- @BINDS map("t", "", "") map({"t", "n"}, "", "") map({"t", "n"}, "", "") map({"t", "n"}, "", "") map({"t", "n"}, "", "") map({"i", "n"}, "", "") map("n", '', 'noh') map("v", "J", ":m '>+1gv=gv") map("v", "K", ":m '<-2gv=gv") map("v", "", "" , ">gv") -- ----------------------------- -- @PLUGINS require("plugins") -- ----------------------------- -- @EXTRAS require("extra/lsp") require("extra/terminal") require("extra/build") -- ----------------------------- -- @AUTOCMDS -- Terminals should open with insert mode vim.api.nvim_create_autocmd({ "BufEnter", "TermEnter", "WinEnter" }, { pattern = "term://*", callback = function() if vim.bo.buftype == "terminal" then vim.schedule(function() vim.cmd("startinsert") end) end end }) -- highlights yanked text vim.api.nvim_create_autocmd("TextYankPost", { callback = function() vim.highlight.on_yank({ higroup = "IncSearch", timeout = 200, }) end, }) -- removes trailing whitespace on save vim.api.nvim_create_autocmd("BufWritePre", { callback = function() local save_cursor = vim.fn.getpos(".") vim.cmd([[%s/\s\+$//e]]) vim.fn.setpos(".", save_cursor) end, }) -- 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, })