-----------------------------------------------------------
-- General Neovim settings and configuration
-----------------------------------------------------------

local g = vim.g       -- Global variables
local opt = vim.opt   -- Set options (global/buffer/windows-scoped)
local cache_dir = os.getenv('HOME') .. '/.cache/nvim/'

-----------------------------------------------------------
-- General
-----------------------------------------------------------
opt.mouse = 'a'                       -- Enable mouse support
opt.clipboard = 'unnamedplus'         -- Copy/paste to system clipboard
opt.swapfile = false                  -- Don't use swapfile
opt.completeopt = 'menuone,noinsert,noselect'  -- Autocomplete options
opt.history = 500                     -- Lines vim should remember
opt.backup = false
opt.writebackup = false
opt.shell = 'zsh'
opt.magic = true                      -- Vim's regular expression magic
opt.mat = 2                           -- How many tenths of seconds ro blink
opt.fileformats = 'unix,mac,dos'      -- Unix as standard file format
opt.encoding = 'utf-8'                -- Encoding
opt.viewoptions = 'folds,cursor,curdir,slash,unix'
opt.wildignorecase = true
opt.wildignore = '.git,.hg,.svn,*.pyc,*.o,*.out,*.jpg,*.jpeg,*.png,*.gif,*.zip,*.DS_Store,**/node_modules/**,**/bower_modules/**'
opt.hlsearch = false        -- No highlight search
opt.incsearch = true
opt.ignorecase = true
opt.backspace = 'indent,eol,start'
opt.exrc = true

-----------------------------------------------------------
-- Tabs, indent
-----------------------------------------------------------
opt.shiftwidth = 4          -- Shift 4 spaces when tab
opt.tabstop = 4             -- 1 tab == 4 spaces
opt.softtabstop = 4         -- 1 tab == 4 spaces
opt.expandtab = false       -- Use spaces instead of tabs
opt.smartindent = true      -- Autoindent new lines
opt.autoindent = true       -- Copy indent from current line when starting new line
opt.cindent = true          -- C programming indentation

-----------------------------------------------------------
-- Memory, CPU
-----------------------------------------------------------
opt.hidden = true           -- Enable background buffers
opt.lazyredraw = true       -- Faster scrolling
opt.synmaxcol = 240         -- Max column for syntax highlight
opt.updatetime = 300        -- ms to wait for trigger an event
opt.timeoutlen = 500        -- ms to wait for a mapped sequence to complete.
opt.foldenable = false

-----------------------------------------------------------
-- Startup
-----------------------------------------------------------
-- Disable nvim intro
opt.shortmess:append "csI"

-- -- Disable builtin plugins
local disabled_built_ins = {
   "2html_plugin",
   "getscript",
   "getscriptPlugin",
   "gzip",
   "logipat",
   "netrw",
   "netrwPlugin",
   "netrwSettings",
   "netrwFileHandlers",
   "matchit",
   "tar",
   "tarPlugin",
   "rrhelper",
   "spellfile_plugin",
   "vimball",
   "vimballPlugin",
   "zip",
   "zipPlugin",
   "tutor",
   "rplugin",
   "synmenu",
   "optwin",
   "compiler",
   "bugreport",
}

for _, plugin in pairs(disabled_built_ins) do
   g["loaded_" .. plugin] = 1
end