From 3711e4c1438a16e0a4054477128b6839411470ae Mon Sep 17 00:00:00 2001 From: Fernando Schauenburg Date: Wed, 12 Oct 2022 21:49:02 +0200 Subject: [PATCH] vim: simplify option setting --- config/nvim/lua/fs/options.lua | 232 ++++++++++++++++----------------- 1 file changed, 113 insertions(+), 119 deletions(-) diff --git a/config/nvim/lua/fs/options.lua b/config/nvim/lua/fs/options.lua index 80887e2..303ea4a 100644 --- a/config/nvim/lua/fs/options.lua +++ b/config/nvim/lua/fs/options.lua @@ -1,127 +1,121 @@ vim.cmd [[let &t_8f = "\[38:2:%lu:%lu:%lum"]] vim.cmd [[let &t_8b = "\[48:2:%lu:%lu:%lum"]] -local set_options = function(options) - local opt = vim.opt - for k, v in pairs(options) do - opt[k] = v - end -end +local o = vim.opt -set_options { - -- General - belloff = 'all', -- never ring bells - hidden = true, -- hide abandoned buffers - clipboard = 'unnamedplus', -- synchronize with system clipboard - lazyredraw = true, -- don't redraw screen during macros - modelines = 0, -- never use modelines - fileformats = 'unix,mac,dos', -- prioritize unix format - pastetoggle = '', -- toggle paste with P on Moonlander +-- General +o.belloff = 'all' -- never ring bells +o.hidden = true -- hide abandoned buffers +o.clipboard = 'unnamedplus' -- synchronize with system clipboard +o.lazyredraw = true -- don't redraw screen during macros +o.modelines = 0 -- never use modelines +o.fileformats = 'unix,mac,dos' -- prioritize unix format +o.pastetoggle = '' -- toggle paste with P on Moonlander - swapfile = false, -- don't use swap files - writebackup = true, -- Make a backup before writing a file... - backup = false, -- ...but don't keep it around. +o.swapfile = false -- don't use swap files +o.writebackup = true -- Make a backup before writing a file... +o.backup = false -- ...but don't keep it around. - shortmess = vim.opt.shortmess + 'I', -- no intro message when starting Vim - shada = { - "'1000", -- remember marks for this many files - "/1000", -- remember this many search patterns - ":1000", -- remember this many command line items - "<100", -- maximum number of lines to remember per register - "h", -- disable 'hlsearch' while reading shada file - "s100", -- limit size of remembered items to this many KiB - }, - - -- Searching - ignorecase = true, -- Ignore case when searching... - smartcase = true, -- ...unless pattern contains uppercase characters. - - -- Editing - expandtab = true, -- use spaces whe is inserted - tabstop = 4, -- tabs are 4 spaces - shiftwidth = 0, -- (auto)indent using 'tabstop' spaces - smartindent = true, -- use smart autoindenting - inccommand = 'split', -- preview command partial results - joinspaces = false, -- use one space after a period whe joining lines - showmatch = true, -- briefly jump to matching bracket if insert one - virtualedit = 'block', -- position the cursor anywhere in Visual Block mode - formatlistpat = [[^\s*\(\d\+[\]:.)}\t ]\|[-+*]\|[\[(][ x][\])]\)\s*]], - formatoptions = vim.opt.formatoptions - - 't' -- Don't auto-wrap on 'textwidth'... - + 'c' -- ...but do it within comment blocks... - + 'l' -- ...but not if line was already long before entering Insert mode. - + 'r' -- Insert comment leader when pressing Enter... - - 'o' -- ...but not when opening a new line with o & O. - + 'q' -- allow formatting of comments with gq - - 'a' -- don't auto-format every time text is inserted - + 'n' -- indent lists automatically acc. 'formatlistpat' - + 'j' -- remove comment leader when joining lines - + '1', -- don't break lines after a one letter word but rather before it - - -- Appearance - termguicolors = true, -- use "gui" :higlight instead of "cterm" - showmode = false, -- don't show mode (shown in statusline instead) - relativenumber = true, -- Start off with realtive line numbers... - number = true, -- ...but real number for current line. - wrap = false, -- don't wrap long lines initially - textwidth = 79, -- maximum width for text being inserted - colorcolumn = '+1', -- highlight column after 'textwidth' - cursorline = true, -- highlight the line of the cursor... - cursorlineopt = 'number',-- ...but only the line number - showbreak = '⤷ ', -- prefix for wrapped lines - scrolloff = 3, -- min. # of lines above and below cursor - sidescrolloff = 3, -- min. # of columns to left and right of cursor - list = true, -- show invisible characters - listchars = { - eol = '↲', - tab = '» ', - extends = '…', - precedes = '…', - trail = '·', - conceal = '┊', - }, - - -- Wildcard Expansion - wildignore = { - '.git', - '.svn', - '__pycache__', - '**/tmp/**', - '*.DS_Store', - '*.dll', - '*.egg-info', - '*.exe', - '*.gif', - '*.jpeg', - '*.jpg', - '*.o', - '*.obj', - '*.out', - '*.png', - '*.pyc', - '*.so', - '*.zip', - '*~', - }, - wildignorecase = true, -- ignore case when completing file names - wildmode = 'longest:full', -- longest common prefix first, then wildmenu - - -- Window Splitting - splitbelow = true, -- :split below current window - splitright = true, -- :vsplit to the right of current window - equalalways = false, -- don't resize all windows when splitting - - -- Folding - foldenable = true, -- enable folding - foldlevelstart = 100, -- start with all folds open - foldmethod = 'syntax', -- fold based on syntax by default - foldnestmax = 10, -- limit nested folds to 10 levels - - -- Options for diff mode - diffopt = { -- better side-by-side diffs - 'filler', -- show filler lines (so text ins vertically synced) - 'vertical', -- use vertical splits (files side-by-side) - 'closeoff', -- disable diff mode when one window is closed - }, +o.shortmess:append 'I' -- no intro message when starting Vim +o.shada = { + "'1000", -- remember marks for this many files + "/1000", -- remember this many search patterns + ":1000", -- remember this many command line items + "<100", -- maximum number of lines to remember per register + "h", -- disable 'hlsearch' while reading shada file + "s100", -- limit size of remembered items to this many KiB +} + +-- Searching +o.ignorecase = true -- Ignore case when searching... +o.smartcase = true -- ...unless pattern contains uppercase characters. + +-- Editing +o.expandtab = true -- use spaces when is inserted +o.tabstop = 4 -- tabs are 4 spaces +o.shiftwidth = 0 -- (auto)indent using 'tabstop' spaces +o.smartindent = true -- use smart autoindenting +o.inccommand = 'split' -- preview command partial results +o.joinspaces = false -- use one space after a period whe joining lines +o.showmatch = true -- briefly jump to matching bracket if insert one +o.virtualedit = 'block' -- position the cursor anywhere in Visual Block mode +o.formatlistpat = [[^\s*\(\d\+[\]:.)}\t ]\|[-+*]\|[\[(][ x][\])]\)\s*]] + +local fmt = o.formatoptions +fmt:remove 't' -- Don't auto-wrap on 'textwidth'... +fmt:append 'c' -- ...but do it within comment blocks... +fmt:append 'l' -- ...but not if line was already long before entering Insert mode. +fmt:append 'r' -- Insert comment leader when pressing Enter... +fmt:remove 'o' -- ...but not when opening a new line with o & O. +fmt:append 'q' -- allow formatting of comments with gq +fmt:remove 'a' -- don't auto-format every time text is inserted +fmt:append 'n' -- indent lists automatically acc. 'formatlistpat' +fmt:append 'j' -- remove comment leader when joining lines +fmt:append '1' -- don't break lines after a one letter word but rather before it + +-- Appearance +o.termguicolors = true -- use "gui" :higlight instead of "cterm" +o.showmode = false -- don't show mode (shown in statusline instead) +o.relativenumber = true -- Start off with relative line numbers... +o.number = true -- ...but real number for current line. +o.wrap = false -- don't wrap long lines initially +o.textwidth = 80 -- maximum width for text being inserted +o.colorcolumn = '+1' -- highlight column after 'textwidth' +o.cursorline = true -- highlight the line of the cursor... +o.cursorlineopt = 'number'-- ...but only the line number +o.showbreak = '⤷ ' -- prefix for wrapped lines +o.scrolloff = 3 -- min. # of lines above and below cursor +o.sidescrolloff = 3 -- min. # of columns to left and right of cursor +o.list = true -- show invisible characters +o.listchars = { + eol = '↲', + tab = '» ', + extends = '…', + precedes = '…', + trail = '·', + conceal = '┊', +} + +-- Wildcard Expansion +o.wildignore = { + '.git', + '.svn', + '__pycache__', + '**/tmp/**', + '*.DS_Store', + '*.dll', + '*.egg-info', + '*.exe', + '*.gif', + '*.jpeg', + '*.jpg', + '*.o', + '*.obj', + '*.out', + '*.png', + '*.pyc', + '*.so', + '*.zip', + '*~', +} +o.wildignorecase = true -- ignore case when completing file names +o.wildmode = 'longest:full' -- longest common prefix first, then wildmenu + +-- Window Splitting +o.splitbelow = true -- :split below current window +o.splitright = true -- :vsplit to the right of current window +o.equalalways = false -- don't resize all windows when splitting + +-- Folding +o.foldenable = true -- enable folding +o.foldlevelstart = 100 -- start with all folds open +o.foldmethod = 'syntax' -- fold based on syntax by default +o.foldnestmax = 10 -- limit nested folds to 10 levels + +-- Options for diff mode +o.diffopt = { -- better side-by-side diffs + 'filler', -- show filler lines (so text is vertically synced) + 'vertical', -- use vertical splits (files side-by-side) + 'closeoff', -- disable diff mode when one window is closed }