-- Minimal settings for bootstrap and Phase 3.2 -- Disable unused language providers early; enable later only if a plugin requires them vim.g.loaded_ruby_provider = 0 vim.g.loaded_perl_provider = 0 vim.g.loaded_node_provider = 0 -- Enable project-local configuration files vim.opt.exrc = true -- Load .nvim.lua from project root vim.opt.secure = true -- Prompt before loading untrusted files -- Phase 3.2: non-plugin settings (legacy values where specified) -- Completion UI for nvim-cmp vim.opt.completeopt = { 'menu', 'menuone', 'noselect' } -- Spelling vim.opt.spelllang = { 'en_gb' } -- Keyword characters (add $ for PHP/shell variables, - for CSS/HTML/config files) vim.opt.iskeyword:append('$') vim.opt.iskeyword:append('-') -- Visuals vim.opt.showbreak = ' ↳' vim.opt.listchars = { eol = '¬', tab = '│ ', trail = '~', extends = '>', precedes = '<', space = '·', } -- Enable line numbers and relative line numbers vim.opt.number = true vim.opt.relativenumber = true -- Phase 6.2: UX settings vim.opt.signcolumn = 'yes' -- Always show sign column (for LSP diagnostics, git signs, etc.) vim.opt.cursorline = true -- Highlight current line vim.opt.colorcolumn = '80,120' -- Visual guides at 80 and 120 characters -- Phase 9.4: Default indentation (per-filetype overrides in after/ftplugin/) vim.opt.tabstop = 4 -- Display tabs as 4 spaces vim.opt.shiftwidth = 4 -- Indent by 4 vim.opt.softtabstop = 4 -- Backspace removes 4 spaces vim.opt.expandtab = true -- Use spaces by default (overridden per-filetype) -- LSP diagnostics configuration vim.diagnostic.config({ virtual_text = { spacing = 4, prefix = '●', -- Show severity (ERROR, WARN, INFO, HINT) format = function(diagnostic) return string.format("%s: %s", diagnostic.source or "", diagnostic.message) end, }, signs = false, -- Disable signs (redundant with background highlights and virtual text) underline = true, -- Use background highlights on problematic text update_in_insert = false, -- Don't update diagnostics while typing severity_sort = true, -- Sort by severity (errors first) float = { border = 'rounded', source = 'always', -- Show diagnostic source header = '', prefix = '', }, })