vim.cmd("set tabstop=4") vim.cmd("set shiftwidth=4") vim.wo.relativenumber = true vim.opt.number = true vim.g.mapleader = " " -- Enable line wrapping vim.opt.wrap = true vim.opt.linebreak = true vim.opt.showbreak = "↪ " -- Make 'j' and 'k' navigate visual lines (not logical lines) vim.keymap.set("n", "j", "gj", { noremap = true, silent = true }) vim.keymap.set("n", "k", "gk", { noremap = true, silent = true }) vim.keymap.set("v", "j", "gj", { noremap = true, silent = true }) vim.keymap.set("v", "k", "gk", { noremap = true, silent = true }) -- Spellchecker vim.api.nvim_create_autocmd("FileType", { callback = function() local buftype = vim.api.nvim_buf_get_option(0, "buftype") local filetype = vim.api.nvim_buf_get_option(0, "filetype") local skip_buftypes = { "nofile", "prompt", "terminal" } local skip_filetypes = { "cmp_menu", "cmp_doc", "TelescopePrompt", "NvimTree" } -- If current buffer is in skip list, do nothing for _, bt in ipairs(skip_buftypes) do if buftype == bt then return end end for _, ft in ipairs(skip_filetypes) do if filetype == ft then return end end -- Else, enable spellcheck vim.opt_local.spell = true vim.opt_local.spelllang = "en" end, }) -- Clear search highlights when entering insert mode. vim.api.nvim_create_autocmd("InsertEnter", { callback = function() -- Delay the nohlsearch slightly to ensure it takes effect vim.defer_fn(function() vim.cmd("nohlsearch") end, 10) end, })