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
128
129
130
131
132
133
134
135
136
137
138
139
140
|
-------------------------------------------------------------------------------
-- 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
-- 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',
command = 'Limelight'
})
vim.api.nvim_create_autocmd({'User'}, {
pattern = 'GoyoLeave',
command = 'Limelight!'
})
vim.keymap.set('n', '<leader>i', ':Limelight!!<CR>==')
vim.keymap.set('i', '<leader>i', '<Esc>:Limelight!!<CR>==gi')
vim.keymap.set('v', '<leader>i', ':<C-u>Limelight!!<CR>gv=gv')
vim.keymap.set('n', '<leader>g', ':Goyo<CR>==')
vim.keymap.set('i', '<leader>g', '<Esc>:Goyo<CR>==gi')
vim.keymap.set('v', '<leader>g', ':<C-u>Goyo<CR>gv=gv')
-- CoC
vim.keymap.set('i', '<TAB>', 'pumvisible() ? "\\<C-n>" : "\\<TAB>"', {expr = true, silent = true})
vim.keymap.set('i', '<S-TAB>', 'pumvisible() ? "\\<C-p>" : "\\<C-h>"', {expr = true, silent = true})
vim.keymap.set('i', '<S-TAB>', 'pumvisible() ? "\\<C-p>" : "\\<C-h>"', {expr = true, silent = true})
vim.keymap.set('i', '<C-Space>', 'coc#refresh()', {expr = true, silent = true})
vim.keymap.set('n', 'K', ':call CocActionAsync("doHover")<CR>', {silent = true})
vim.keymap.set('n', '[g', '<Plug>(coc-diagnostic-prev)', {silent = true})
vim.keymap.set('n', ']g', '<Plug>(coc-diagnostic-next)', {silent = true})
vim.keymap.set('n', 'gd', '<Plug>(coc-definition)', {silent = true})
vim.keymap.set('n', 'gy', '<Plug>(coc-type-definition)', {silent = true})
vim.keymap.set('n', 'gi', '<Plug>(coc-implementation)', {silent = true})
vim.keymap.set('n', 'gr', '<Plug>(coc-references)', {silent = true})
-- Plugins
require('plugins')
|