Files
.config/nvim/init.lua
2025-09-08 10:48:06 +02:00

112 lines
2.7 KiB
Lua

-- filter which-key warnings
local orig_notify = vim.notify
vim.notify = function(msg, level, opts)
if msg:match("which%-key") and level == vim.log.levels.WARN then
return
end
orig_notify(msg, level, opts)
end
-- Set leader key
vim.g.mapleader = " "
vim.g.maplocalleader = " "
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
local firstload = not vim.loop.fs_stat(lazypath)
if firstload then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- Set highlight on search
vim.o.hlsearch = false
-- Make line numbers default
vim.wo.number = true
vim.o.tabstop = 4 -- A TAB character looks like 2 spaces
vim.o.expandtab = true -- Pressing the TAB key will insert spaces instead of a TAB character
vim.o.softtabstop = 4 -- Number of spaces inserted instead of a TAB character
vim.o.shiftwidth = 4 -- Number of spaces inserted when indenting
-- Ruler at 100 characters
vim.o.colorcolumn = "100"
-- Relative line numbers
vim.o.number = true
vim.o.relativenumber = true
vim.o.signcolumn = "number"
-- Enable mouse mode
vim.o.mouse = "a"
-- Sync clipboard between OS and Neovim.
-- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'`
vim.o.clipboard = "unnamedplus"
-- Enable break indent
vim.o.breakindent = true
-- Save undo history
vim.o.undofile = true
-- Case-insensitive searching UNLESS \C or capital in search
vim.o.ignorecase = true
vim.o.smartcase = true
-- Keep signcolumn as auto. Set this to 'yes' if you want it enabled
vim.wo.signcolumn = "auto"
-- Decrease update time
vim.o.updatetime = 250
vim.o.timeoutlen = 300
-- Set completeopt to have a better completion experience
vim.o.completeopt = "menuone,noselect"
-- Set terminal gui colors to true
vim.o.termguicolors = true
-- add binaries installed by mason.nvim to path
local is_windows = vim.loop.os_uname().sysname == "Windows_NT"
vim.env.PATH = vim.fn.stdpath("data") .. "/mason/bin" .. (is_windows and ";" or ":") .. vim.env.PATH
require("lazy").setup("plugins")
if firstload then
vim.schedule(function()
vim.cmd("MasonInstallAll")
local packages = {}
for k, v in pairs(vim.g.mason_binaries_list) do
packages[k] = v
end
local installed = {}
require("mason-registry"):on("package:install:success", function(pkg)
table.insert(installed, pkg.name)
if #installed == #packages then
vim.schedule(function()
vim.api.nvim_buf_delete(0, { force = true })
vim.api.nvim_buf_delete(0, { force = true })
vim.cmd("echo '' | redraw")
end)
end
end)
end)
end
-- Transparent background
vim.cmd("hi Normal guibg=NONE ctermbg=NONE")