From 7c1058edb5da4eb145e57e66d78328beb9697085 Mon Sep 17 00:00:00 2001 From: filip <“filip.rabiega@gmail.com”> Date: Wed, 21 Jan 2026 11:26:01 +0100 Subject: lotsa changes too lazy to list then --- .config/nvim/init.lua | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 .config/nvim/init.lua (limited to '.config/nvim') diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..289e1cd --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,157 @@ +------------------------------------------------------------ +-- 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() -- cgit v1.2.3