aboutsummaryrefslogtreecommitdiff
path: root/config/nvim/init.lua
blob: 02f5bd5cbb5f05725364c593bba8ef98d52c9bc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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')