local opt = vim.opt local M = {} M.setup = function() -- Number settings opt.number = true opt.numberwidth = 2 opt.relativenumber = false -- Scroll Offset opt.scrolloff = 3 -- Disable showmode opt.showmode = false -- Set truecolor support opt.termguicolors = true vim.cmd("highlight Normal guibg=none") -- Enable system clipboard opt.clipboard = "unnamedplus" -- Set mouse support for any mode opt.mouse = "a" -- Allow hidden opt.hidden = true -- Useful defaults for tab, indentation, etc. opt.tabstop = 4 opt.shiftwidth = 4 opt.smartindent = true opt.breakindent = true opt.expandtab = true opt.smarttab = true -- Search settings opt.hlsearch = true opt.incsearch = true opt.ignorecase = true opt.smartcase = true -- Better backspaces opt.backspace = "indent,eol,start" -- Make new splits vertical opt.splitright = true -- Show line & column num of cursor opt.ruler = true -- Set timeouts opt.ttimeoutlen = 20 opt.timeoutlen = 1000 opt.updatetime = 250 opt.signcolumn = "yes" -- Enable persistent undo opt.undodir = vim.fn.stdpath("cache") .. "/undo" opt.undofile = true -- Better folding opt.foldmethod = "expr" opt.foldexpr = "nvim_treesitter#foldexpr()" opt.fillchars = { fold = " " } opt.foldlevel = 20 -- Concealment for nicer rendering opt.conceallevel = 2 opt.concealcursor = "ic" -- Lazy Redraw to Speed Up Macros opt.lazyredraw = true -- Spell Settings opt.spelllang = { "en_us" } -- Better completion experience opt.completeopt = "menuone,noselect" -- Set max text width opt.textwidth = 120 -- Highlight cursor line opt.cursorline = true -- Make statusline global opt.laststatus = 3 -- Set listcharacters opt.list = true opt.listchars:append("tab:⭾⭾") opt.listchars:append("lead:·") opt.listchars:append("trail:·") opt.listchars:append("extends:◣") opt.listchars:append("precedes:◢") opt.listchars:append("nbsp:○") -- Remove end of boundry '~' opt.fillchars:append('eob: ') end return M