-- 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 = 2 -- 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 = 2 -- Number of spaces inserted instead of a TAB character vim.o.shiftwidth = 2 -- 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")