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
|
local cmd = vim.cmd
local fn = vim.fn
local g = vim.g
local o = vim.o
g.mapleader = ' ' -- <leader> key to <space>
g.maplocalleader = '\\'
require('plugins')
require('hardmode')
local u = require('utils')
-- OPTIONS -- {{{
cmd('set clipboard+=unnamedplus')
u.opt('o', 'shiftround', true)
u.opt('o', 'termguicolors', true)
u.opt('o', 'incsearch', true)
u.opt('o', 'inccommand', 'split')
u.opt('o', 'smartcase', true)
u.opt('o', 'hidden', true)
u.opt('w', 'list', true)
u.opt('w', 'number', true)
u.opt('w', 'wrap', true)
u.opt('o', 'scrolloff', 3)
cmd('set listchars+=trail:¬')
u.opt('o', 'showbreak', '↪ ')
u.opt('b', 'textwidth', 80) -- TODO see if this is annoying
u.opt('w', 'colorcolumn', '+1') -- depends on 'textwidth'
u.opt('w', 'foldenable', true)
u.opt('w', 'foldlevel', 0)
u.opt('w', 'foldmethod', 'marker')
u.opt('o', 'fillchars', 'fold:─')
u.opt('o', 'complete', '.,w,b,u')
u.opt('o', 'completeopt', 'menuone,noinsert,noselect,preview')
cmd('set shortmess+=c')
u.opt('w', 'statusline', '%!luaeval("statusline()")')
u.opt('o', 'cmdheight', 1)
u.opt('o', 'showmode', true)
u.opt('o', 'showcmd', false)
u.opt('o', 'laststatus', 2)
u.opt('o', 'ruler', true)
u.opt('o', 'mouse', 'a')
u.opt('o', 'spell', false)
u.opt('o', 'lazyredraw', true)
u.opt('o', 'backspace', 'indent,eol,start')
u.opt('o', 'undolevels', 1000)
u.opt('o', 'updatetime', 300)
u.opt('o', 'signcolumn', 'yes')
-- }}}
-- COLORS -- {{{
g.nihoncolors_transparent_background = true
cmd('colorscheme nihoncolors')
-- }}}
-- KEY BINDS -- {{{
u.map('n', 'Q', ':quitall', { silent = false })
u.map('n', 'gb', ':bnext<CR>')
u.map('n', 'gB', ':bprevious<CR>')
-- terminal
u.map('t', '<ESC>', '<C-\\><C-n>')
u.map('t', '<Leader>qq', '<C-\\><C-n>:bdelete!<CR>')
-- completion
u.map('i', '<C-n>', 'pumvisible() ? "\\<C-n>" : completion#trigger_completion()', { expr = true })
u.map('i', '<C-p>', 'pumvisible() ? "\\<C-n>" : completion#trigger_completion()', { expr = true })
u.map('i', '<C-j>', '<cmd>lua require("completion.source").nextCompletion()<CR>')
u.map('i', '<C-k>', '<cmd>lua require("completion.source").prevCompletion()<CR>')
-- }}}
-- AUTO GROUPS -- {{{
u.augroup('yank_highlight', {{'TextYankPost', '*', 'silent! lua require("vim.highlight").on_yank()'}})
u.augroup('diagnostics', {{'CursorHold', '*', 'lua vim.lsp.diagnostic.show_line_diagnostics()'}})
-- }}}
-- USER COMMANDS -- {{{
u.def('BalenaDiagnosticsFold', 'call balena_diagnostics_fold#apply()')
u.def('SortLine', 'call setline(".", join(sort(split(getline("."), " ")), " "))')
-- }}}
-- STATUS LINE -- {{{
vim.api.nvim_command('hi StatusLineInsert guifg=#00ffff guibg=None')
vim.api.nvim_command('hi StatusLineCommand guifg=#ff3300 guibg=None')
statusline = function()
local sl = ''
-- left
sl = sl .. statusline_color(vim.fn.mode())
sl = sl .. [[ ⢷ %<%F %-m %-r ]]
-- right
sl = sl .. [[ %= %l:%v %y ]]
return sl
end
statusline_color = function(mode)
if mode == 'i' then
return '%#StatusLineInsert#'
elseif mode == 'c' then
return '%#StatusLineCommand#'
elseif mode == 'v' or mode == 'V' or mode == '' then
return '%#Visual#'
elseif mode == 'R' or mode == 'Rv' then
return '%1*'
-- return '%#Include#'
else
return '%1*'
end
end
-- }}}
|