local o = vim.opt -- set options o.clipboard = "unnamedplus" -- keep the clipboard in sync with the one provided by the OS o.termguicolors = true -- allows for colour in the terminal o.number = true -- show line numbers o.cursorline = true -- highlight the current line o.cursorcolumn = false -- highlight the current column o.dir = vim.fn.stdpath('cache') .. '/swp' -- swap directory location for recovery o.sessionoptions = 'buffers,curdir,folds,help,localoptions,tabpages,terminal' o.expandtab = false -- whether tabs are expanded to spaces (overridden by .editorconfig) o.diffopt = 'internal,filler,closeoff,linematch:60' -- diff visualisation o.foldenable = true -- whether folding is enabled o.wrap = false -- whether to wrap text to a new line when it goes off-screen o.breakindent = true -- wrapped lines start at the same location as the start of the line o.list = true -- shows invisible characters o.listchars = { -- whitespace characters eol = nil, trail = '~', extends = nil, precedes = '<', tab = '•-', space = '·', nbsp = '␣', } o.mouse = 'nv' -- which modes the mouse is enabled in 'a:all' o.relativenumber = true -- whether line numbers are relative to the cursor o.scrolloff = 10 -- minimal number of screen lines to keep above and below the cursor o.showtabline = 2 -- whether to show the tab line o.signcolumn = 'yes' -- always show the signcolumn, otherwise it shifts text all the time o.tabstop = 8 -- visual spaces per tab o.softtabstop = 8 -- spaces inserted per tab in insert mode o.shiftwidth = 8 -- spaces for auto-indent o.smartindent = true -- behave a bit more nuanced with when to indent o.ignorecase = true -- whether case should be ignored whilst searching o.smartcase = true -- overrides the above option if contains capital letters o.inccommand = 'split' -- split|nosplit whether substitutions should appear whilst typing. o.splitbelow = true -- force all horizontal splits below the current window o.splitright = true -- force all vertical splits to the right of this window o.showmode = false -- don't show mode as this is already in the status line o.undodir = vim.fn.stdpath('cache') .. '/undo' -- directory for undo files o.undofile = true -- for saving the undo history o.undolevels = 1024 -- the amount of changes that can be undone o.timeoutlen = 300 -- number of MS to wait for a mapped sequence to complete o.ttimeoutlen = 0 -- number of MS to wait for a key sequence to complete o.updatetime = 250 -- number of MS of nothing typed to write a swap file to disk. o.spell = true -- whether spell checking is enabled o.spelllang = 'en_gb,nl' -- set the spell languages o.spellfile = vim.fn.stdpath('config') .. '/spell/user.utf-8.add' vim.diagnostic.config({ underline = true, -- use underline for diagnostics virtual_text = true, -- shows diagnostics at the end of the line virtual_lines = false, -- shows one diagnostic per line severity_sort = true, -- sort diagnostics by severity update_in_insert = true, -- update diagnostics whilst in insert mode float = true, -- options for floating windows signs = true, })