2021-07-27 00:28:47 +02:00
local M = { }
2022-01-04 09:47:59 +01:00
M.load_default_options = function ( )
2022-05-21 16:48:47 +02:00
local utils = require " lvim.utils "
local join_paths = utils.join_paths
local undodir = join_paths ( get_cache_dir ( ) , " undo " )
if not utils.is_directory ( undodir ) then
vim.fn . mkdir ( undodir , " p " )
end
2021-07-27 00:28:47 +02:00
local default_options = {
backup = false , -- creates a backup file
clipboard = " unnamedplus " , -- allows neovim to access the system clipboard
2022-09-16 05:33:08 +02:00
cmdheight = 1 , -- more space in the neovim command line for displaying messages
2021-07-27 00:28:47 +02:00
completeopt = { " menuone " , " noselect " } ,
conceallevel = 0 , -- so that `` is visible in markdown files
fileencoding = " utf-8 " , -- the encoding written to a file
foldmethod = " manual " , -- folding, set to "expr" for treesitter based folding
foldexpr = " " , -- set to "nvim_treesitter#foldexpr()" for treesitter based folding
guifont = " monospace:h17 " , -- the font used in graphical neovim applications
hidden = true , -- required to keep multiple buffers and open multiple buffers
hlsearch = true , -- highlight all matches on previous search pattern
ignorecase = true , -- ignore case in search patterns
mouse = " a " , -- allow the mouse to be used in neovim
pumheight = 10 , -- pop up menu height
showmode = false , -- we don't need to see things like -- INSERT -- anymore
showtabline = 2 , -- always show tabs
smartcase = true , -- smart case
smartindent = true , -- make indenting smarter again
splitbelow = true , -- force all horizontal splits to go below current window
splitright = true , -- force all vertical splits to go to the right of current window
swapfile = false , -- creates a swapfile
termguicolors = true , -- set term gui colors (most terminals support this)
2022-09-16 05:33:08 +02:00
timeoutlen = 1000 , -- time to wait for a mapped sequence to complete (in milliseconds)
2021-07-27 00:28:47 +02:00
title = true , -- set the title of window to the value of the titlestring
-- opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to
2022-05-21 16:48:47 +02:00
undodir = undodir , -- set an undo directory
2021-07-27 00:28:47 +02:00
undofile = true , -- enable persistent undo
2022-09-16 05:33:08 +02:00
updatetime = 100 , -- faster completion
2021-07-27 00:28:47 +02:00
writebackup = false , -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited
expandtab = true , -- convert tabs to spaces
shiftwidth = 2 , -- the number of spaces inserted for each indentation
tabstop = 2 , -- insert 2 spaces for a tab
cursorline = true , -- highlight the current line
number = true , -- set numbered lines
numberwidth = 4 , -- set number column width to 2 {default 4}
signcolumn = " yes " , -- always show the sign column, otherwise it would shift the text each time
wrap = false , -- display lines as one long line
2022-01-04 09:47:59 +01:00
shadafile = join_paths ( get_cache_dir ( ) , " lvim.shada " ) ,
scrolloff = 8 , -- minimal number of screen lines to keep above and below the cursor.
sidescrolloff = 8 , -- minimal number of screen lines to keep left and right of the cursor.
2022-09-20 22:25:58 +02:00
showcmd = false ,
ruler = false ,
2022-09-21 01:36:15 +02:00
laststatus = 3 ,
2021-09-13 11:10:22 +02:00
}
2021-07-03 17:33:54 +02:00
2021-07-27 00:28:47 +02:00
--- SETTINGS ---
2022-10-16 11:52:40 +02:00
vim.opt . spelllang : append " cjk " -- disable spellchecking for asian characters (VIM algorithm does not support it)
2022-03-10 10:14:15 +01:00
vim.opt . shortmess : append " c " -- don't show redundant messages from ins-completion-menu
vim.opt . shortmess : append " I " -- don't show the default intro message
2022-01-04 09:47:59 +01:00
vim.opt . whichwrap : append " <,>,[,],h,l "
2021-11-15 09:20:45 +01:00
2021-07-27 00:28:47 +02:00
for k , v in pairs ( default_options ) do
vim.opt [ k ] = v
end
end
2021-07-03 17:33:54 +02:00
2022-01-04 09:47:59 +01:00
M.load_headless_options = function ( )
vim.opt . shortmess = " " -- try to prevent echom from cutting messages off or prompting
vim.opt . more = false -- don't pause listing when screen is filled
vim.opt . cmdheight = 9999 -- helps avoiding |hit-enter| prompts.
vim.opt . columns = 9999 -- set the widest screen possible
vim.opt . swapfile = false -- don't use a swap file
end
2021-07-10 08:38:25 +02:00
2022-05-21 16:48:47 +02:00
M.load_defaults = function ( )
2022-01-04 09:47:59 +01:00
if # vim.api . nvim_list_uis ( ) == 0 then
M.load_headless_options ( )
return
2021-07-27 00:28:47 +02:00
end
2022-01-04 09:47:59 +01:00
M.load_default_options ( )
2021-07-10 09:19:32 +02:00
end
2021-07-27 00:28:47 +02:00
return M