71 lines
3.5 KiB
Lua
71 lines
3.5 KiB
Lua
-- General
|
|
vim.g.mapleader = ' ' -- Use `<Space>` as <Leader> key
|
|
vim.o.undofile = true -- Enable persistent undo
|
|
vim.o.shada = "'100,<50,s10,:1000,/100,@100,h" -- Limit ShaDa file (for startup)
|
|
|
|
-- UI
|
|
vim.o.breakindent = true -- Indent wrapped lines to match line start
|
|
vim.o.breakindentopt = 'list:-1' -- Add padding for lists (if 'wrap' is set)
|
|
vim.o.cursorline = true -- Enable current line highlighting
|
|
vim.o.linebreak = true -- Wrap lines at 'breakat' (if 'wrap' is set)
|
|
vim.o.list = true -- Show helpful text indicators
|
|
vim.o.number = true -- Show line numbers
|
|
vim.o.pumheight = 10 -- Make popup menu smaller
|
|
vim.o.pummaxwidth = 60 -- Make popup menu not too wide
|
|
vim.o.shortmess = 'CFOSWaco' -- Disable some built-in completion messages
|
|
vim.o.signcolumn = 'yes' -- Always show signcolumn (less flicker)
|
|
vim.o.splitbelow = true -- Horizontal splits will be below
|
|
vim.o.splitkeep = 'screen' -- Reduce scroll during window split
|
|
vim.o.splitright = true -- Vertical splits will be to the right
|
|
vim.o.wrap = false -- Don't visually wrap lines
|
|
vim.o.winborder = 'rounded' -- Use border in floating windows
|
|
vim.o.pumborder = 'rounded' -- Use border in popup menu
|
|
vim.o.cmdheight = 0 -- Hide the command line when not in use
|
|
vim.cmd('syntax off') -- Disable legacy syntax highlighting
|
|
require("vim._core.ui2").enable({ -- Enable new ui (requires nightly)
|
|
msg = { targets = "msg" }
|
|
})
|
|
|
|
-- Editing
|
|
vim.o.expandtab = true -- Convert tabs to spaces
|
|
vim.o.formatoptions = 'rqnl1j' -- Improve comment editing
|
|
vim.o.ignorecase = true -- Ignore case during search
|
|
vim.o.infercase = true -- Infer case in built-in completion
|
|
vim.o.shiftwidth = 2 -- Use this number of spaces for indentation
|
|
vim.o.smartcase = true -- Respect case if search pattern has upper case
|
|
vim.o.spelloptions = 'camel' -- Treat camelCase word parts as separate words
|
|
vim.o.tabstop = 2 -- Show tab as this number of spaces
|
|
vim.o.virtualedit = 'block' -- Allow going past end of line in blockwise mode
|
|
vim.opt.autoread = true -- Do not prompt to reread files on update
|
|
|
|
vim.o.complete = '.,w,b,kspell' -- Use less sources
|
|
vim.o.completeopt = 'menuone,noselect,fuzzy,nosort' -- Use custom behavior
|
|
vim.o.completetimeout = 100 -- Limit sources delay
|
|
|
|
-- Autocommands
|
|
Config.autocmd('TextYankPost', '*', function() vim.hl.hl_op() end, 'Highlight yanked text')
|
|
Config.autocmd('TermOpen', '*', function() vim.cmd('startinsert') end, 'Start insert mode when terminal opens')
|
|
|
|
-- Diagnostics
|
|
Config.later(function()
|
|
vim.diagnostic.config({
|
|
signs = {
|
|
priority = 9999,
|
|
severity = { min = vim.diagnostic.severity.WARN, max = vim.diagnostic.severity.ERROR },
|
|
text = {
|
|
[vim.diagnostic.severity.ERROR] = '',
|
|
[vim.diagnostic.severity.WARN] = '',
|
|
[vim.diagnostic.severity.INFO] = '',
|
|
[vim.diagnostic.severity.HINT] = '',
|
|
},
|
|
},
|
|
underline = { severity = { min = vim.diagnostic.severity.HINT, max = vim.diagnostic.severity.ERROR } },
|
|
virtual_lines = false,
|
|
virtual_text = {
|
|
current_line = true,
|
|
severity = { min = vim.diagnostic.severity.ERROR, max = vim.diagnostic.severity.ERROR },
|
|
},
|
|
update_in_insert = false,
|
|
})
|
|
end)
|