diff options
| author | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2023-07-18 21:25:13 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2023-07-18 21:25:13 +0200 |
| commit | ce3499096aaf5e54830b99f64ecf159e9809c644 (patch) | |
| tree | 2e1a9edcd7657e4bf2637205986853f48bd1dcbb /config/nvim/init.lua | |
| parent | a78545aee0d150b7032e567e92e57fd0d3e83d6d (diff) | |
Replace vimscript config with lua
Diffstat (limited to 'config/nvim/init.lua')
| -rw-r--r-- | config/nvim/init.lua | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/config/nvim/init.lua b/config/nvim/init.lua new file mode 100644 index 0000000..02f5bd5 --- /dev/null +++ b/config/nvim/init.lua @@ -0,0 +1,127 @@ +------------------------------------------------------------------------------- +-- 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') |