------------------------------------------------------------ -- General settings ------------------------------------------------------------ vim.opt.number = true vim.opt.relativenumber = true vim.opt.title = true vim.opt.background = "dark" vim.opt.laststatus = 2 vim.opt.showmode = true vim.opt.showcmd = false vim.opt.ruler = true ------------------------------------------------------------ -- Search and highlighting ------------------------------------------------------------ vim.opt.hlsearch = false vim.opt.ignorecase = true vim.opt.smartcase = true vim.opt.incsearch = true vim.opt.wildignore = { "*.o", "*.obj", "*.bak", "*.exe" } ------------------------------------------------------------ -- Indentation and formatting ------------------------------------------------------------ vim.opt.autoindent = true vim.opt.cindent = true vim.opt.smartindent = true vim.opt.wrap = false vim.opt.scrolloff = 5 vim.opt.completeopt = { "menuone", "noinsert" } ------------------------------------------------------------ -- Clipboard and mouse ------------------------------------------------------------ vim.opt.clipboard:append("unnamedplus") vim.opt.mouse = "a" ------------------------------------------------------------ -- Session and history ------------------------------------------------------------ vim.opt.shada = "'100,<50,s10,h" vim.opt.shadafile = vim.fn.expand("~/.local/state/nvim/shada/main.shada") ------------------------------------------------------------ -- Miscellaneous ------------------------------------------------------------ vim.opt.spelllang = { "en", "pl" } vim.cmd("colorscheme pablo") vim.cmd("syntax on") -- Transparent background vim.api.nvim_set_hl(0, "Normal", { bg = "none" }) vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" }) ------------------------------------------------------------ -- Autocommands ------------------------------------------------------------ local augroup = vim.api.nvim_create_augroup("UserAutocmds", { clear = true }) -- Reload any .lua file on save vim.api.nvim_create_autocmd("BufWritePost", { group = augroup, pattern = vim.fn.stdpath("config") .. "/**/*.lua", callback = function() vim.cmd("source %") vim.notify("Lua config reloaded", vim.log.levels.INFO) end, }) -- Remove trailing whitespace & final newlines, keep cursor vim.api.nvim_create_autocmd("BufWritePre", { group = augroup, pattern = "*", callback = function() local pos = vim.fn.getpos(".") vim.cmd([[%s/\s\+$//e]]) vim.cmd([[%s/\n\+\%$//e]]) vim.fn.setpos(".", pos) end, }) vim.api.nvim_create_autocmd("BufWritePost", { pattern = "*.tex", callback = function() -- Run tex-fmt on the current file vim.cmd("silent !tex-fmt %") -- Reload the buffer to reflect formatting changes vim.cmd("edit!") end, }) ------------------------------------------------------------ -- Key mappings ------------------------------------------------------------ local map = vim.keymap.set local opts = { noremap = true, silent = true } vim.g.mapleader = "\\" map("n", "", "dBx", { noremap = true }) map("n", "s", "okzz", { noremap = true }) map("n", "S", ":%s//g", { noremap = true }) map("n", "Y", "y$", { noremap = true }) map("n", "-", "ddp", { noremap = true }) map("n", "_", "ddkP", { noremap = true }) map("n", "", '"+yy', { noremap = true }) map("n", "", '"+yW', { noremap = true }) map("n", "", '"+p', { noremap = true }) map("n", "", "i ", { noremap = true }) map("v", "", '"+y', { noremap = true }) ------------------------------------------------------------ -- Tabs & indentation ------------------------------------------------------------ vim.opt.tabstop = 4 vim.opt.shiftwidth = 4 vim.opt.expandtab = true ------------------------------------------------------------ -- Filetype-specific mappings ------------------------------------------------------------ vim.api.nvim_create_autocmd("FileType", { group = augroup, pattern = "python", command = "map :w:!python3 %", }) ------------------------------------------------------------ -- lazy.nvim ------------------------------------------------------------ require("config.lazy") ------------------------------------------------------------ -- luasnip ------------------------------------------------------------ require("luasnip").config.set_config({ -- Setting LuaSnip config -- Enable autotriggered snippets enable_autosnippets = true, -- Use Tab (or some other key if you prefer) to trigger visual selection store_selection_keys = "", }) vim.cmd[[ " Use Tab to expand and jump through snippets imap luasnip#expand_or_jumpable() ? 'luasnip-expand-or-jump' : '' smap luasnip#jumpable(1) ? 'luasnip-jump-next' : '' " Use Shift-Tab to jump backwards through snippets imap luasnip#jumpable(-1) ? 'luasnip-jump-prev' : '' smap luasnip#jumpable(-1) ? 'luasnip-jump-prev' : '' ]] -- Load snippets from fiadra/chadsnips require("luasnip.loaders.from_vscode").lazy_load()