+-------------------------------------------------------------------------------
+-- Style
+-------------------------------------------------------------------------------
+-- Editor Style
+vim.opt.number = true -- Show number column
+vim.opt.wrap = false -- Don't wrap text
+vim.opt.list = true -- Display tabs and trailing space
+vim.opt.colorcolumn='80,150' -- Show color columns
+
+-- Color
+vim.opt.termguicolors = true
+vim.cmd.color('rbdr')
+
+-- Tab Style (Always override with editorconfig)
+vim.opt.tabstop = 2 -- 2 Spaces per tab
+vim.opt.shiftwidth = 2 -- Spaces used in Autoindent
+vim.opt.softtabstop = 2 -- Spaces used when soft tabbing
+vim.opt.expandtab = true -- Always use spaces
+
+-------------------------------------------------------------------------------
+-- Behavior
+-------------------------------------------------------------------------------
+-- Search Behavior
+vim.opt.ignorecase = true -- Ignore case when searching
+vim.opt.smartcase = true -- Unless we use both cases in search
+
+-- Autocomplete Behavior
+vim.opt.wildmode = 'list:longest,list:full' -- Autocomplete common matching string
+ -- first, and then the full match.
+
+-- Folding Behavior
+vim.opt.foldmethod = 'syntax' -- Use syntax highlight to define folds
+vim.opt.foldnestmax = 10 -- Max 10 folds
+vim.opt.foldlevelstart = 99 -- Start with all folds open
+
+-- Relative Number Behavior
+vim.api.nvim_create_autocmd({'FocusLost', 'InsertEnter'}, {
+ pattern = '*',
+ callback = function () vim.opt.relativenumber = false end,
+})
+vim.api.nvim_create_autocmd({'InsertLeave', 'CursorMoved'}, {
+ pattern = '*',
+ callback = function () vim.opt.relativenumber = true end,
+})
+
+vim.keymap.set('n', '<C-n>', function()
+ vim.opt.relativenumber = not vim.opt.relativenumber
+end)
+
+-- Move lines / blocks up and down using Ctrl + Shift
+vim.keymap.set('n', '<C-S-j>', ':m .+1<CR>==')
+vim.keymap.set('n', '<C-S-k>', ':m .-2<CR>==')
+vim.keymap.set('i', '<C-S-j>', '<Esc>:m .+1<CR>==gi')
+vim.keymap.set('i', '<C-S-k>', '<Esc>:m .-2<CR>==gi')
+vim.keymap.set('v', '<C-S-j>', ':m \'>+1<CR>gv=gv')
+vim.keymap.set('v', '<C-S-k>', ':m \'<-2<CR>gv=gv')
+
+-------------------------------------------------------------------------------
+-- File Specific Behavior
+-------------------------------------------------------------------------------
+-- Makefiles
+vim.api.nvim_create_autocmd({'FileType'}, {
+ pattern = 'make',
+ callback = function () vim.opt.expandtab = false end
+})
+
+-- SNES files
+vim.api.nvim_create_autocmd({'BufNewFile', 'BufRead'}, {
+ pattern = {'*.asm', '*.s'},
+ callback = function () vim.opt.filetype = 'snes' end
+})
+
+-------------------------------------------------------------------------------
+-- Local Overrides
+-------------------------------------------------------------------------------
+pcall(require, 'init_local')
+
+-------------------------------------------------------------------------------
+-- Plugin Specific Behavior
+-------------------------------------------------------------------------------
+-- FZF
+vim.keymap.set('', '<C-P>', ':FZF <CR>')
+vim.g.fzf_layout = { down = '40%' }
+vim.g.fzf_colors = {
+ fg = {'fg', 'Normal'},
+ bg = {'bg', 'Normal'},
+ hl = {'fg', 'Comment'},
+ ['fg+'] = {'fg', 'CursorLine', 'CursorColumn', 'Normal'},
+ ['bg+'] = {'bg', 'CursorLine', 'CursorColumn'},
+ ['hl+'] = {'fg', 'Statement'},
+ info = {'fg', 'PreProc'},
+ border = {'fg', 'Ignore'},
+ prompt = {'fg', 'Conditional'},
+ pointer = {'fg', 'Exception'},
+ marker = {'fg', 'Keyword'},
+ spinner = {'fg', 'Label'},
+ header = {'fg', 'Comment'}
+}
+
+
+-- Svelte Config
+vim.g.vim_svelte_plugin_use_typescript = true
+
+-- Limelight / Goyo config
+
+vim.g.limelight_conceal_ctermfg = 'gray'
+vim.g.limelight_conceal_guifg = 'DarkGray'
+
+vim.api.nvim_create_autocmd({'User'}, {
+ pattern = 'GoyoEnter',
+ callback = 'Limelight'
+})
+vim.api.nvim_create_autocmd({'User'}, {
+ pattern = 'GoyoLeave',
+ callback = 'Limelight!'
+})
+--[[
+nnoremap <leader>i :Limelight!!<CR>==
+inoremap <leader>i <Esc>:Limelight!!<CR>==gi
+vnoremap <leader>i :<C-u>Limelight!!<CR>gv=gv
+nnoremap <leader>g :Goyo<CR>==
+inoremap <leader>g <Esc>:Goyo<CR>==gi
+vnoremap <leader>g :<C-u>Goyo<CR>gv=gv
+]]--
+
+-- Plugins
+require('plugins')