115 lines
3.4 KiB
Lua
115 lines
3.4 KiB
Lua
-- true color support
|
|
vim.o.termguicolors = true
|
|
|
|
-- fix transparency issues with alacritty
|
|
local highlights = {
|
|
'Normal',
|
|
'LineNr',
|
|
'Folded',
|
|
'NonText',
|
|
'SpecialKey',
|
|
'VertSplit',
|
|
'SignColumn',
|
|
'EndOfBuffer',
|
|
'TablineFill', -- this is specific to how I like my tabline to look like
|
|
}
|
|
for _, name in pairs(highlights) do
|
|
vim.cmd.highlight(name .. ' guibg=none ctermbg=none')
|
|
end
|
|
|
|
-- disable arrow keys
|
|
local all_modes = { 'n', 'i', 'v', 'o' }
|
|
|
|
vim.keymap.set(all_modes, '<Up>', '<Nop>', { noremap = true, silent = true })
|
|
vim.keymap.set(all_modes, '<Down>', '<Nop>', { noremap = true, silent = true })
|
|
vim.keymap.set(all_modes, '<Left>', '<Nop>', { noremap = true, silent = true })
|
|
vim.keymap.set(all_modes, '<Right>', '<Nop>', { noremap = true, silent = true })
|
|
|
|
vim.o.number = true -- display line numbers
|
|
vim.opt.clipboard:append({ 'unnamedplus', 'unnamed' }) -- always use clipboard in x11
|
|
vim.o.encoding = 'UTF-8' -- sets the character encoding used inside vim
|
|
vim.o.title = true -- when on, the title of the window will be set to the value of 'titlestring'
|
|
vim.o.signcolumn = 'yes'
|
|
local augroup_ec = vim.api.nvim_create_augroup('augroup_ec', { clear = true })
|
|
vim.api.nvim_create_autocmd('BufEnter', {
|
|
group = augroup_ec,
|
|
pattern = '*',
|
|
callback = function(args)
|
|
local ec = vim.b[args.buf].editorconfig
|
|
if not ec then
|
|
return
|
|
end
|
|
|
|
local max_len = ec.max_line_length
|
|
if max_len and max_len ~= 'off' then
|
|
vim.opt_local.colorcolumn = max_len
|
|
else
|
|
vim.opt_local.colorcolumn = ''
|
|
end
|
|
end,
|
|
})
|
|
|
|
-- spell checking
|
|
vim.o.spell = true
|
|
vim.opt.spelllang:append({ 'en_us', 'en_gb', 'pl' })
|
|
vim.opt.spelloptions:append({ 'camel' })
|
|
vim.o.spellcapcheck = ''
|
|
|
|
-- persistent undo
|
|
local undodir = vim.fn.stdpath('state') .. 'undo'
|
|
vim.fn.mkdir(undodir, 'p', '0700')
|
|
vim.o.undodir = undodir
|
|
vim.o.undofile = true
|
|
|
|
-- set proper file types for files in ~/ansible directory
|
|
vim.filetype.add({
|
|
pattern = {
|
|
[os.getenv('HOME') .. '/ansible/.*%.yml'] = 'yaml.ansible',
|
|
},
|
|
})
|
|
|
|
-- neovim terminal configuration
|
|
local augroup_term = vim.api.nvim_create_augroup('augroup_term', { clear = true })
|
|
vim.api.nvim_create_autocmd('TermOpen', { -- enter insert mode automatically
|
|
group = augroup_term,
|
|
pattern = '*',
|
|
callback = vim.cmd.startinsert,
|
|
})
|
|
vim.api.nvim_create_autocmd('TermOpen', { -- disable number lines on terminal buffers
|
|
group = augroup_term,
|
|
pattern = '*',
|
|
callback = function()
|
|
vim.o.number = false
|
|
vim.o.relativenumber = false
|
|
end,
|
|
})
|
|
vim.api.nvim_create_autocmd('TermOpen', { -- allow use ctrl-c on terminal windows
|
|
group = augroup_term,
|
|
pattern = '*',
|
|
callback = function(args)
|
|
vim.keymap.set('n', '<C-c>', 'i<C-c>', { buffer = args.buf })
|
|
end,
|
|
})
|
|
vim.api.nvim_create_autocmd('TermEnter', { -- no sign column
|
|
group = augroup_term,
|
|
pattern = '*',
|
|
callback = function()
|
|
vim.opt_local.signcolumn = false
|
|
end,
|
|
})
|
|
vim.keymap.set('t', '<Esc>', '<C-\\><C-n>') -- esc to exit insert mode
|
|
|
|
-- set default tab width to 4 spaces
|
|
vim.o.tabstop = 4 -- number of spaces that a tab counts for
|
|
vim.o.shiftwidth = 4 -- number of spaces that are inserted during indent operations
|
|
vim.o.softtabstop = 4 -- number of spaces that are inserted after pressing tab
|
|
vim.o.expandtab = true -- use spaces instead of tabs
|
|
|
|
-- c/c++ settings
|
|
vim.opt.cinoptions:append({ 'N-s' })
|
|
|
|
-- web dev settings
|
|
vim.g.html_indent_autotags = 'html,thead,tbody,tfoot'
|
|
vim.g.html_indent_script1 = 'auto'
|
|
vim.g.html_indent_style1 = 'auto'
|