nvim/lua/config/options.lua

148 lines
5.3 KiB
Lua

vim.cmd('filetype plugin indent on')
vim.cmd('language en_US.utf-8')
local opt = vim.opt
local indent = 2
opt.termguicolors = true -- Enable colors in terminal
opt.hlsearch = true --Set highlight on search
opt.number = true --Make line numbers default
opt.relativenumber = false --Make relative number default
opt.mouse = 'a' --Enable mouse mode
opt.breakindent = true --Enable break indent
opt.undofile = true --Save undo history
opt.ignorecase = true --Case insensitive searching unless /C or capital in search
opt.smartcase = true -- Smart case
opt.updatetime = 300 --Decrease update time
opt.signcolumn = 'yes' -- Always show sign column
opt.timeoutlen = 300 -- Time in milliseconds to wait for a mapped sequence to complete.
opt.ttimeoutlen = 10
opt.showmode = false -- Do not need to show the mode. We use the statusline instead.
opt.scrolloff = 999 -- Lines of context
opt.joinspaces = false -- No double spaces with join after a dot
opt.showmatch = true -- Show matching braces
opt.wrap = true -- When on, lines longer than the width of the window will wrap and displaying continues on the next line
opt.list = true
opt.hidden = true
opt.winborder = 'rounded'
opt.scrolloff = 4
opt.shiftround = true
opt.relativenumber = false
opt.splitbelow = true
opt.splitright = true
opt.wildmode = 'longest:full,full'
opt.splitbelow = true
opt.splitright = true
opt.shiftwidth = indent
opt.tabstop = indent
if vim.fn.has('wsl') == 1 then
vim.g.clipboard = {
name = 'WslClipboard',
copy = {
['+'] = 'clip.exe',
['*'] = 'clip.exe',
},
paste = {
['+'] = 'powershell.exe -c [Console]::Out.Write($(Get-Clipboard -Raw).tostring().replace("`r", ""))',
['*'] = 'powershell.exe -c [Console]::Out.Write($(Get-Clipboard -Raw).tostring().replace("`r", ""))',
},
cache_enabled = 0,
}
-- opt.guifont = 'Hack Nerd Font Mono:h10'
opt.guifont = 'RobotoMono Nerd Font:h10'
elseif vim.loop.os_uname().sysname == 'Linux' then
opt.guifont = 'Iosevka NFM:h11'
if vim.env.SSH_TTY or vim.env.SSH_CLIENT or vim.env.SSH_CONNECTION then
function no_paste(reg)
return function(lines)
-- Do nothing! We can't paste with OSC52
end
end
vim.g.clipboard = {
name = 'OSC 52',
copy = {
['+'] = require('vim.ui.clipboard.osc52').copy('+'),
['*'] = require('vim.ui.clipboard.osc52').copy('*'),
},
paste = {
-- ['+'] = require('vim.ui.clipboard.osc52').paste('+'),
-- ['*'] = require('vim.ui.clipboard.osc52').paste('*'),
['+'] = no_paste('+'), -- Pasting disabled
['*'] = no_paste('*'), -- Pasting disabled
},
}
end
else
-- opt.guifont = 'Hack Nerd Font:h10'
-- opt.guifont = 'JetBrainsMono Nerd Font:h10'
-- opt.guifont = 'FiraCode Nerd Font:h10'
-- opt.guifont = 'RobotoMono Nerd Font:h10'
opt.guifont = 'IosevkaTerm Nerd Font Mono:h11'
-- opt.guifont = 'Cousine Nerd Font Mono:h10'
-- opt.guifont = 'DroidSansM Nerd Font Propo:h10'
-- opt.guifont = 'AnonymicePro Nerd Font:h11'
-- opt.guifont = 'SauceCodePro Nerd Font:h10'
-- opt.guifont = 'Monoid Nerd Font Propo:h10'
end
opt.swapfile = false
opt.backup = false
opt.spelllang = 'en,de'
opt.completeopt = 'menu,menuone,noselect'
opt.expandtab = true
opt.smartindent = true
opt.title = true
opt.titlestring = '%(%{fnamemodify(getcwd(),":t")}%) Neovim'
opt.laststatus = 3 -- for lualine
opt.background = 'dark'
-- go to previous/next line with h,l,left arrow and right arrow
-- when cursor reaches end/beginning of line
-- opt.whichwrap:append('<>[]hl')
-- disable nvim intro
opt.shortmess:append('sI')
-- Treesitter based folding
opt.foldlevel = 20
opt.foldmethod = 'expr'
opt.foldexpr = 'nvim_treesitter#foldexpr()'
opt.foldexpr = 'nvim_treesitter#foldexpr()'
vim.diagnostic.config({
signs = {
text = {
[vim.diagnostic.severity.ERROR] = '', -- Nerd Font Error Icon
[vim.diagnostic.severity.WARN] = '', -- Nerd Font Warning Icon
[vim.diagnostic.severity.INFO] = '', -- Nerd Font Info Icon
[vim.diagnostic.severity.HINT] = '', -- Nerd Font Hint Icon (example)
},
-- Define the highlight group to use for the sign text for each severity
texthl = {
[vim.diagnostic.severity.ERROR] = 'DiagnosticSignError',
[vim.diagnostic.severity.WARN] = 'DiagnosticSignWarn',
[vim.diagnostic.severity.INFO] = 'DiagnosticSignInfo',
[vim.diagnostic.severity.HINT] = 'DiagnosticSignHint',
},
-- Optional: Highlight the line number column
numhl = {
[vim.diagnostic.severity.ERROR] = 'DiagnosticLineNrError',
-- Add others for WARN, INFO, HINT if desired
},
-- Optional: Highlight the whole line
linehl = {
-- Define highlight groups like 'DiagnosticLineError', 'DiagnosticLineWarn', etc.
[vim.diagnostic.severity.ERROR] = 'DiagnosticLineError',
},
},
-- Other diagnostic configurations (optional examples)
virtual_text = false, -- Disable virtual text (inline messages)
underline = true, -- Enable underlining diagnostics
update_in_insert = false, -- Don't update diagnostics in insert mode
severity_sort = true, -- Sort diagnostics by severity
})
-- Window border for floating windows
require('lspconfig.ui.windows').default_options.border = 'rounded'
require('bamboo').load()