" plugins call plug#begin(stdpath('data') . '/plugged') " color scheme "Plug 'owozsh/amora' " misc Plug 'nvim-lua/plenary.nvim' Plug 'tpope/vim-sensible' 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' Plug 'tpope/vim-sleuth' Plug 'nvim-treesitter/nvim-treesitter' Plug 'm-demare/hlargs.nvim' " interface Plug 'romgrk/barbar.nvim' Plug 'preservim/nerdtree' Plug 'Xuyuanp/nerdtree-git-plugin' Plug 'lukas-reineke/indent-blankline.nvim' Plug 'folke/lsp-colors.nvim' Plug 'nacro90/numb.nvim' Plug 'xiyaowong/nvim-cursorword' Plug 'simrat39/symbols-outline.nvim' Plug 'kevinhwang91/nvim-hlslens' Plug 'SmiteshP/nvim-gps' " 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' Plug 'windwp/nvim-ts-autotag' Plug 'jose-elias-alvarez/null-ls.nvim' Plug 'hrsh7th/nvim-cmp' Plug 'hrsh7th/cmp-nvim-lsp' Plug 'hrsh7th/cmp-cmdline' Plug 'hrsh7th/cmp-buffer' Plug 'dmitmel/cmp-cmdline-history' Plug 'hrsh7th/cmp-nvim-lsp-signature-help' Plug 'hrsh7th/cmp-path' Plug 'hrsh7th/cmp-vsnip' Plug 'hrsh7th/vim-vsnip' call plug#end() " misc set notermguicolors colorscheme lena "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:▎ set completeopt=menuone,noinsert,noselect set shortmess+=c let g:completion_enable_auto_popup = 1 lua << EOF vim.cmd("highlight IndentBlanklineIndent1 ctermfg=11 cterm=nocombine") vim.cmd("highlight IndentBlanklineIndent2 ctermfg=10 cterm=nocombine") vim.cmd("highlight IndentBlanklineIndent3 ctermfg=13 cterm=nocombine") vim.cmd("highlight IndentBlanklineIndent4 ctermfg=12 cterm=nocombine") vim.opt.list = true vim.opt.listchars:append("space:⋅") vim.opt.listchars:append("eol:↴") require("indent_blankline").setup( { char = "▎", space_char_blankline = " ", char_blankline = " ", char_highlight_list = { "IndentBlanklineIndent1", "IndentBlanklineIndent2", "IndentBlanklineIndent3", "IndentBlanklineIndent4", }, show_current_context = true, show_current_context_start = true, } ) EOF :lua require("numb").setup() :lua require("nvim-ts-autotag").setup() lua << EOF require("hlslens").setup( { calm_down = true, nearest_only = true, nearest_float_when = "auto", } ) EOF lua << EOF local null_ls = require("null-ls") null_ls.setup( { sources = { null_ls.builtins.diagnostics.eslint, null_ls.builtins.diagnostics.zsh, null_ls.builtins.formatting.eslint, null_ls.builtins.formatting.prettier, } } ) EOF set completeopt=menu,menuone,noselect lua <'] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), [''] = cmp.mapping.confirm({select = true}), [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() elseif vim.fn["vsnip#available"](1) == 1 then feedkey("(vsnip-expand-or-jump)", "") elseif has_words_before() then cmp.complete() else fallback() -- The fallback function sends a already mapped key. In this case, it's probably ``. end end, { "i", "s" }), [""] = cmp.mapping(function() if cmp.visible() then cmp.select_prev_item() elseif vim.fn["vsnip#jumpable"](-1) == 1 then feedkey("(vsnip-jump-prev)", "") end end, { "i", "s" }), } cmp.setup( { snippet = { expand = function(args) vim.fn["vsnip#anonymous"](args.body) end, }, mapping = cmp.mapping.preset.insert(mapping), sources = cmp.config.sources( { {name = "nvim_lsp"}, {name = "vsnip"}, }, { {name = "buffer"}, } ), } ) cmp.setup.cmdline( ":", { sources = { {name = "cmdline", group_index = 1}, {name = "cmdline_history", group_index = 2}, }, mapping = cmp.mapping.preset.insert(mapping), } ) cmp.setup.cmdline( "/", { sources = { {name = "cmdline_history"}, {name = "buffer"}, }, mapping = cmp.mapping.preset.insert(mapping), } ) local lspconfig = require("lspconfig") local completion_callback = require("completion").on_attach local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()) lspconfig.eslint.setup( { on_attach = completion_callback, capabilities = capabilities, } ) lspconfig.tsserver.setup( { on_attach = completion_callback, capabilities = capabilities, } ) EOF lua < nnoremap :m-2 nnoremap :m+ inoremap :m-2 inoremap :m+ nnoremap :NERDTreeToggle ":lua require'bufferline.state'.set_offset(require'nvim-tree.view'.win_open() and 30 or 0) inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\": "\" imap (completion_smart_tab) imap (completion_smart_s_tab) " barbar keys " Move to previous/next nnoremap :BufferPrevious nnoremap :BufferNext " Re-order to previous/next nnoremap :BufferMovePrevious nnoremap > :BufferMoveNext " Goto buffer in position... nnoremap :BufferGoto 1 nnoremap :BufferGoto 2 nnoremap :BufferGoto 3 nnoremap :BufferGoto 4 nnoremap :BufferGoto 5 nnoremap :BufferGoto 6 nnoremap :BufferGoto 7 nnoremap :BufferGoto 8 nnoremap :BufferLast " Pin/unpin buffer nnoremap :BufferPin " Close buffer nnoremap :BufferClose " 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=0 hi CursorLine cterm=NONE ctermfg=NONE ctermbg=0 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! link SignColumn LineNr hi LspDiagnosticsDefaultHint ctermfg=6 hi LspDiagnosticsDefaultError ctermfg=1 hi LspDiagnosticsDefaultWarning ctermfg=3 hi LspDiagnosticsDefaultInformation ctermfg=7 hi ALEErrorSign ctermfg=1 hi ALEWarningSign ctermfg=3 "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 hi StatusLineBreadcrumbs ctermbg=6 ctermfg=0 hi StatusLineEmpty ctermbg=8 ctermfg=2 "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 function! Breadcrumbs() return luaeval('require("nvim-gps").is_available()') ? ' '.luaeval('require("nvim-gps").get_location()').' ' : '' endfunction set statusline= set statusline+=%#StatusLineMode# set statusline+=%{GetMode()} set statusline+=%#StatusLineGitBranch# set statusline+=%{GitBranch()} set statusline+=%* set statusline+=\ %f set statusline+=%#StatusLineEmpty# set statusline+=\ %m%r set statusline+=%= set statusline+=%#StatusLineBreadcrumbs# set statusline+=%{Breadcrumbs()} set statusline+=%#StatusLineChar# set statusline+=\ %l,\ %c\ set statusline+=%#StatusLineFormat# set statusline+=\ %{&fileencoding?&fileencoding:&encoding}\ %{&fileformat}\ set statusline+=%#StatusLineFileType# set statusline+=\ %{&filetype}\