-- [[ Setting options ]] -- See `:help vim.opt` -- NOTE: You can change these options as you wish! -- For more options, you can see `:help option-list` ---@diagnostic disable: undefined-global -- Make line numbers default vim.opt.number = true vim.o.relativenumber = true -- You can also add relative line numbers, to help with jumping. -- Experiment for yourself to see if you like it! -- vim.opt.relativenumber = true -- Enable mouse mode, can be useful for resizing splits for example! vim.opt.mouse = 'a' -- Don't show the mode, since it's already in the status line vim.opt.showmode = false -- Sync clipboard between OS and Neovim. -- Schedule the setting after `UiEnter` because it can increase startup-time. -- Remove this option if you want your OS clipboard to remain independent. -- See `:help 'clipboard'` vim.schedule(function() vim.opt.clipboard = 'unnamedplus' end) -- Enable break indent vim.opt.breakindent = true -- Save undo history vim.opt.undofile = true -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term vim.opt.ignorecase = true vim.opt.smartcase = true -- Keep signcolumn on by default vim.opt.signcolumn = 'yes' -- Decrease update time vim.opt.updatetime = 250 -- Decrease mapped sequence wait time vim.opt.timeoutlen = 300 -- Configure how new splits should be opened vim.opt.splitright = true vim.opt.splitbelow = true -- Disable word wrap vim.opt.wrap = false -- Sets how neovim will display certain whitespace characters in the editor. -- See `:help 'list'` -- and `:help 'listchars'` vim.opt.list = true -- Do not set 'tab' in listchars so ibl can show its own indent guides -- Use a vertical bar for tabs so ibl and listchars both show vertical guides vim.opt.listchars = { tab = '│ ', trail = '·', nbsp = '␣' } -- Set tab size and convert tabs to spaces vim.opt.tabstop = 2 -- Number of visual spaces per TAB vim.opt.shiftwidth = 2 -- Number of spaces to use for each step of (auto)indent vim.opt.softtabstop = 2 -- Number of spaces that a counts for while performing editing operations vim.opt.expandtab = true -- Use spaces instead of tabs -- Preview substitutions live, as you type! vim.opt.inccommand = 'split' -- Show which line your cursor is on vim.opt.cursorline = true -- Minimal number of screen lines to keep above and below the cursor. vim.opt.scrolloff = 10 -- Disable winbar vim.opt.winbar = "" -- Set diagnostic signs vim.diagnostic.config({ signs = { text = { [vim.diagnostic.severity.ERROR] = "", [vim.diagnostic.severity.WARN] = "", [vim.diagnostic.severity.INFO] = "", [vim.diagnostic.severity.HINT] = "󰌵", }, texthl = { [vim.diagnostic.severity.ERROR] = "DiagnosticSignError", [vim.diagnostic.severity.WARN] = "DiagnosticSignWarn", [vim.diagnostic.severity.INFO] = "DiagnosticSignInfo", [vim.diagnostic.severity.HINT] = "DiagnosticSignHint", }, }, }) -- Add module interface for settings local M = {} function M.setup() -- Leader keys vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- Ensure swapfile directory exists and configure swapfile settings local swap_dir = vim.fn.stdpath('data') .. '/swapfiles' if vim.fn.isdirectory(swap_dir) == 0 then vim.fn.mkdir(swap_dir, 'p') end vim.opt.directory = swap_dir vim.opt.swapfile = true vim.opt.updatetime = 300 vim.opt.updatecount = 100 end return M