nvim/lua/settings.lua

70 lines
2.3 KiB
Lua

-- 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 = '',
},
})