311 lines
9 KiB
VimL
311 lines
9 KiB
VimL
|
" plugins
|
||
|
call plug#begin(stdpath('data') . '/plugged')
|
||
|
|
||
|
" color scheme
|
||
|
Plug 'owozsh/amora'
|
||
|
|
||
|
" misc
|
||
|
Plug 'itchyny/vim-gitbranch'
|
||
|
Plug 'andweeb/presence.nvim'
|
||
|
Plug 'ntpeters/vim-better-whitespace'
|
||
|
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
||
|
Plug 'junegunn/fzf.vim'
|
||
|
Plug 'airblade/vim-gitgutter'
|
||
|
Plug 'tpope/vim-fugitive'
|
||
|
Plug 'mg979/vim-visual-multi'
|
||
|
Plug 'rrethy/vim-hexokinase', { 'do': 'make hexokinase' }
|
||
|
Plug 'rhysd/committia.vim'
|
||
|
|
||
|
" interface
|
||
|
Plug 'romgrk/barbar.nvim'
|
||
|
Plug 'kyazdani42/nvim-tree.lua'
|
||
|
|
||
|
" language specific
|
||
|
Plug 'sheerun/vim-polyglot'
|
||
|
"Plug 'ruanyl/vim-fixmyjs'
|
||
|
"Plug 'prettier/vim-prettier', {'build': 'pnpm i'}
|
||
|
Plug 'dense-analysis/ale'
|
||
|
Plug 'neovim/nvim-lspconfig'
|
||
|
Plug 'nvim-lua/completion-nvim'
|
||
|
|
||
|
call plug#end()
|
||
|
|
||
|
" misc
|
||
|
let g:mode = "old_amora"
|
||
|
colorscheme amora
|
||
|
set termguicolors
|
||
|
|
||
|
set fileformat=unix
|
||
|
set fileformats=unix,dos
|
||
|
|
||
|
set number
|
||
|
set cul
|
||
|
|
||
|
set tabstop=2
|
||
|
set shiftwidth=2
|
||
|
set expandtab
|
||
|
|
||
|
set mouse+=nia
|
||
|
|
||
|
au WinEnter * set cul
|
||
|
au WinLeave * set nocul
|
||
|
|
||
|
let g:better_whitespace_enabled = 1
|
||
|
|
||
|
let bufferline = get(g:, 'bufferline', {})
|
||
|
let bufferline.icons = v:false
|
||
|
let bufferline.icon_separator_active = '▎'
|
||
|
let bufferline.icon_separator_inactive = '▎'
|
||
|
let bufferline.icon_close_tab = 'x'
|
||
|
let bufferline.icon_close_tab_modified = '●'
|
||
|
let bufferline.icon_pinned = '▲'
|
||
|
|
||
|
let g:presence_buttons = 0
|
||
|
|
||
|
let g:ale_fixers = {
|
||
|
\ '*': ['trim_whitespace'],
|
||
|
\ 'vim': [],
|
||
|
\ 'javascript': ['eslint', 'prettier'],
|
||
|
\ 'json': ['prettier'],
|
||
|
\ 'css': ['prettier'],
|
||
|
\}
|
||
|
let g:ale_fix_on_save = 1
|
||
|
|
||
|
let g:Hexokinase_highlighters = ['virtual']
|
||
|
|
||
|
set fillchars+=vert:▎
|
||
|
|
||
|
lua << EOF
|
||
|
local lspconfig = require("lspconfig")
|
||
|
local completion_callback = require("completion").on_attach
|
||
|
|
||
|
lspconfig.eslint.setup({on_attach = completion_callback})
|
||
|
lspconfig.tsserver.setup({on_attach = completion_callback})
|
||
|
EOF
|
||
|
|
||
|
set completeopt=menuone,noinsert,noselect
|
||
|
set shortmess+=c
|
||
|
|
||
|
let g:completion_enable_auto_popup = 1
|
||
|
|
||
|
" tre
|
||
|
let g:nvim_tree_git_hl = 1
|
||
|
let g:nvim_tree_symlink_arrow = ' >> '
|
||
|
|
||
|
let g:nvim_tree_icons = {
|
||
|
\ 'default': '',
|
||
|
\ 'symlink': '[S]',
|
||
|
\ 'git': {
|
||
|
\ 'unstaged': "U",
|
||
|
\ 'staged': "A",
|
||
|
\ 'unmerged': "M",
|
||
|
\ 'renamed': "R",
|
||
|
\ 'untracked': "",
|
||
|
\ 'deleted': "D",
|
||
|
\ 'ignored': "I"
|
||
|
\ },
|
||
|
\ 'folder': {
|
||
|
\ 'arrow_open': "-",
|
||
|
\ 'arrow_closed': "+",
|
||
|
\ 'default': "",
|
||
|
\ 'open': "",
|
||
|
\ 'empty': "[E]",
|
||
|
\ 'empty_open': "[E]",
|
||
|
\ 'symlink': "[S]",
|
||
|
\ 'symlink_open': "[S]",
|
||
|
\ }
|
||
|
\ }
|
||
|
|
||
|
let g:nvim_tree_show_icons = {
|
||
|
\ 'git': 1,
|
||
|
\ 'folders': 0,
|
||
|
\ 'files': 0,
|
||
|
\ 'folder_arrows': 1,
|
||
|
\ }
|
||
|
|
||
|
lua << EOF
|
||
|
require("nvim-tree").setup({
|
||
|
git = {
|
||
|
enable = true,
|
||
|
ignore = true,
|
||
|
timeout = 500,
|
||
|
},
|
||
|
})
|
||
|
EOF
|
||
|
|
||
|
" keys
|
||
|
tnoremap <Esc> <C-\><C-n>
|
||
|
|
||
|
nnoremap <S-Up> :m-2<CR>
|
||
|
nnoremap <S-Down> :m+<CR>
|
||
|
inoremap <S-Up> <Esc>:m-2<CR>
|
||
|
inoremap <S-Down> <Esc>:m+<CR>
|
||
|
|
||
|
nnoremap <silent> <C-b> :NvimTreeToggle<CR> :lua require'bufferline.state'.set_offset(require'nvim-tree.view'.win_open() and 30 or 0)<CR>
|
||
|
|
||
|
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
|
||
|
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>": "\<S-Tab>"
|
||
|
imap <tab> <Plug>(completion_smart_tab)
|
||
|
imap <s-tab> <Plug>(completion_smart_s_tab)
|
||
|
|
||
|
" barbar keys
|
||
|
" Move to previous/next
|
||
|
nnoremap <silent> <A-,> :BufferPrevious<CR>
|
||
|
nnoremap <silent> <A-.> :BufferNext<CR>
|
||
|
" Re-order to previous/next
|
||
|
nnoremap <silent> <A-<> :BufferMovePrevious<CR>
|
||
|
nnoremap <silent> <A->> :BufferMoveNext<CR>
|
||
|
" Goto buffer in position...
|
||
|
nnoremap <silent> <A-1> :BufferGoto 1<CR>
|
||
|
nnoremap <silent> <A-2> :BufferGoto 2<CR>
|
||
|
nnoremap <silent> <A-3> :BufferGoto 3<CR>
|
||
|
nnoremap <silent> <A-4> :BufferGoto 4<CR>
|
||
|
nnoremap <silent> <A-5> :BufferGoto 5<CR>
|
||
|
nnoremap <silent> <A-6> :BufferGoto 6<CR>
|
||
|
nnoremap <silent> <A-7> :BufferGoto 7<CR>
|
||
|
nnoremap <silent> <A-8> :BufferGoto 8<CR>
|
||
|
nnoremap <silent> <A-9> :BufferLast<CR>
|
||
|
" Pin/unpin buffer
|
||
|
nnoremap <silent> <A-p> :BufferPin<CR>
|
||
|
" Close buffer
|
||
|
nnoremap <silent> <A-c> :BufferClose<CR>
|
||
|
|
||
|
" Colors
|
||
|
|
||
|
function! s:h(scope, fg, ...) " bg, attr_list, special
|
||
|
let l:fg = copy(a:fg)
|
||
|
let l:bg = get(a:, 1, ['NONE', 'NONE'])
|
||
|
|
||
|
let l:attr_list = filter(get(a:, 2, ['NONE']), 'type(v:val) == 1')
|
||
|
let l:attrs = len(l:attr_list) > 0 ? join(l:attr_list, ',') : 'NONE'
|
||
|
|
||
|
" Falls back to coloring foreground group on terminals because
|
||
|
" nearly all do not support undercurl
|
||
|
let l:special = get(a:, 3, ['NONE', 'NONE'])
|
||
|
if l:special[0] !=# 'NONE' && l:fg[0] ==# 'NONE' && !has('gui_running')
|
||
|
let l:fg[0] = l:special[0]
|
||
|
let l:fg[1] = l:special[1]
|
||
|
endif
|
||
|
|
||
|
let l:hl_string = [
|
||
|
\ 'highlight', a:scope,
|
||
|
\ 'guifg=' . l:fg[0], 'ctermfg=' . l:fg[1],
|
||
|
\ 'guibg=' . l:bg[0], 'ctermbg=' . l:bg[1],
|
||
|
\ 'gui=' . l:attrs, 'cterm=' . l:attrs,
|
||
|
\ 'guisp=' . l:special[0],
|
||
|
\]
|
||
|
|
||
|
execute join(l:hl_string, ' ')
|
||
|
endfunction
|
||
|
|
||
|
hi Normal ctermbg=NONE
|
||
|
hi LineNr ctermfg=7
|
||
|
hi CursorLineNr ctermfg=1 ctermbg=8
|
||
|
hi CursorLine cterm=NONE ctermfg=NONE ctermbg=8
|
||
|
hi StatusLine ctermbg=2 ctermfg=0
|
||
|
hi StatusLineNC ctermbg=7 ctermfg=0
|
||
|
hi VertSplit ctermbg=0 ctermfg=0
|
||
|
hi ExtraWhitespace ctermbg=1
|
||
|
hi SignColumn ctermbg=8
|
||
|
|
||
|
hi BufferCurrent ctermfg=5 ctermbg=NONE
|
||
|
hi BufferCurrentIndex ctermfg=5 ctermbg=NONE
|
||
|
hi BufferCurrentMod ctermfg=9 ctermbg=NONE
|
||
|
hi BufferCurrentSign ctermfg=5 ctermbg=NONE
|
||
|
hi BufferCurrentTarget ctermfg=5 ctermbg=NONE
|
||
|
hi BufferVisible ctermfg=7 ctermbg=NONE
|
||
|
hi BufferVisibleIndex ctermfg=7 ctermbg=NONE
|
||
|
hi BufferVisibleMod ctermfg=9 ctermbg=NONE
|
||
|
hi BufferVisibleSign ctermfg=7 ctermbg=NONE
|
||
|
hi BufferVisibleTarget ctermfg=7 ctermbg=NONE
|
||
|
hi BufferInactive ctermfg=7 ctermbg=0
|
||
|
hi BufferInactiveIndex ctermfg=5 ctermbg=0
|
||
|
hi BufferInactiveMod ctermfg=1 ctermbg=0
|
||
|
hi BufferInactiveSign ctermfg=10 ctermbg=0
|
||
|
hi BufferInactiveTarget ctermfg=11 ctermbg=0
|
||
|
hi BufferTabpages ctermfg=7 ctermbg=0
|
||
|
hi BufferTabpageFill ctermfg=7 ctermbg=0
|
||
|
hi BufferOffset ctermfg=0 ctermbg=0
|
||
|
|
||
|
hi NvimTreeNormal ctermbg=0
|
||
|
|
||
|
call s:h('StatusLine', g:amora#palette.green, g:amora#palette.bgdark)
|
||
|
call s:h('StatusLineNC', g:amora#palette.fg, g:amora#palette.bgdark)
|
||
|
call s:h('VertSplit', g:amora#palette.bg, g:amora#palette.bgdarker)
|
||
|
call s:h('ExtraWhitespace', g:amora#palette.fg, g:amora#palette.red)
|
||
|
|
||
|
call s:h('BufferCurrent', g:amora#palette.pink, g:amora#palette.bg)
|
||
|
call s:h('BufferCurrentIndex', g:amora#palette.pink, g:amora#palette.bg)
|
||
|
call s:h('BufferCurrentSign', g:amora#palette.pink, g:amora#palette.bg)
|
||
|
call s:h('BufferCurrentTarget', g:amora#palette.pink, g:amora#palette.bg)
|
||
|
call s:h('BufferCurrentMod', g:amora#palette.red, g:amora#palette.bg)
|
||
|
call s:h('BufferVisible', g:amora#palette.fg, g:amora#palette.bg)
|
||
|
call s:h('BufferVisibleIndex', g:amora#palette.fg, g:amora#palette.bg)
|
||
|
call s:h('BufferVisibleSign', g:amora#palette.fg, g:amora#palette.bg)
|
||
|
call s:h('BufferVisibleTarget', g:amora#palette.fg, g:amora#palette.bg)
|
||
|
call s:h('BufferVisibleMod', g:amora#palette.pink, g:amora#palette.bg)
|
||
|
call s:h('BufferInactive', g:amora#palette.bglighter, g:amora#palette.bgdarker)
|
||
|
call s:h('BufferInactiveIndex', g:amora#palette.bglighter, g:amora#palette.bgdarker)
|
||
|
call s:h('BufferInactiveSign', g:amora#palette.bglighter, g:amora#palette.bgdarker)
|
||
|
call s:h('BufferInactiveTarget', g:amora#palette.bglighter, g:amora#palette.bgdarker)
|
||
|
call s:h('BufferInactiveMod', g:amora#palette.red, g:amora#palette.bgdarker)
|
||
|
call s:h('BufferTabpages', g:amora#palette.bglighter, g:amora#palette.bgdarker)
|
||
|
call s:h('BufferTabpagesFill', g:amora#palette.bglighter, g:amora#palette.bgdarker)
|
||
|
call s:h('BufferOffset', g:amora#palette.bgdarker, g:amora#palette.bgdarker)
|
||
|
|
||
|
call s:h('NvimTreeNormal', g:amora#palette.fg, g:amora#palette.bgdarker)
|
||
|
|
||
|
" statusline hell
|
||
|
hi StatusLineMode ctermbg=1 ctermfg=0
|
||
|
hi StatusLineGitBranch ctermbg=5 ctermfg=0
|
||
|
hi StatusLineChar ctermbg=4 ctermfg=0
|
||
|
hi StatusLineFormat ctermbg=3 ctermfg=0
|
||
|
hi StatusLineFileType ctermbg=7 ctermfg=0
|
||
|
|
||
|
call s:h('StatusLineMode', g:amora#palette.bgdark, g:amora#palette.red)
|
||
|
call s:h('StatusLineGitBranch', g:amora#palette.bgdark, g:amora#palette.pink)
|
||
|
call s:h('StatusLineChar', g:amora#palette.bgdark, g:amora#palette.purple)
|
||
|
call s:h('StatusLineFormat', g:amora#palette.bgdark, g:amora#palette.yellow)
|
||
|
call s:h('StatusLineFileType', g:amora#palette.bgdark, g:amora#palette.fg)
|
||
|
|
||
|
function! GetMode()
|
||
|
let l:m = mode(1)
|
||
|
|
||
|
if l:m ==# "i"
|
||
|
let l:mode = "INS"
|
||
|
elseif l:m ==# "c"
|
||
|
let l:mode = "CMD"
|
||
|
elseif l:m[0] ==# "R"
|
||
|
let l:mode = "REP"
|
||
|
elseif l:m ==# "Rv"
|
||
|
let l:mode = "REP"
|
||
|
elseif l:m =~# '\v(v|V| |s|S| )'
|
||
|
let l:mode = "VIS"
|
||
|
else
|
||
|
return ""
|
||
|
endif
|
||
|
|
||
|
return ' '.l:mode.' '
|
||
|
endfunction
|
||
|
|
||
|
function! GitBranch()
|
||
|
let l:branch = gitbranch#name()
|
||
|
return strlen(l:branch) ? ' ' . l:branch . ' ' : ''
|
||
|
endfunction
|
||
|
|
||
|
set statusline=
|
||
|
set statusline+=%#StatusLineMode#
|
||
|
set statusline+=%{GetMode()}
|
||
|
set statusline+=%#StatusLineGitBranch#
|
||
|
set statusline+=%{GitBranch()}
|
||
|
set statusline+=%*
|
||
|
set statusline+=\ %f
|
||
|
set statusline+=\ %m%r
|
||
|
set statusline+=%=
|
||
|
set statusline+=%#StatusLineChar#
|
||
|
set statusline+=\ %l,\ %c\
|
||
|
set statusline+=%#StatusLineFormat#
|
||
|
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}\ %{&fileformat}\
|
||
|
set statusline+=%#StatusLineFileType#
|
||
|
set statusline+=\ %{&filetype}\
|