diff options
Diffstat (limited to 'lua')
44 files changed, 17729 insertions, 0 deletions
diff --git a/lua/keys.lua b/lua/keys.lua new file mode 100644 index 0000000..1995976 --- /dev/null +++ b/lua/keys.lua @@ -0,0 +1,483 @@ +--[[ key.lua ]] + +-- Shorten function name +local map = vim.api.nvim_set_keymap + +local function new_desc(d) + return { desc = d } +end + +local d = new_desc + +local opts = { noremap = true, silent = true } + +local term_opts = { silent = true } + +--------------- Standard Operations --------------- +-- Semi-colon as leader key +vim.g.mapleader = ";" +--vim.g.maplocalleader = ";" + +-- "jj" to exit insert-mode +map("i", "jj", "<esc>", opts) + +-- save quickly +map("n", ";w", ":w<CR>", d("Save buffer")) + +--Easier split navigations, just ctrl-j instead of ctrl-w then j +map("n", "<C-J>", "<C-W><C-J>", opts) +map("n", "<C-K>", "<C-W><C-K>", opts) +map("n", "<C-L>", "<C-W><C-L>", opts) +map("n", "<C-H>", "<C-W><C-H>", opts) + +-- Combine buffers list with buffer name +map("n", "<Leader>b", ":buffers<CR>:buffer<Space>", opts) + +-- Map buffer next, prev and delete to <leader+(n/p/d)> +map("n", "<leader>n", ":bn<cr>", opts) +map("n", "<leader>p", ":bp<cr>", opts) +map("n", "<leader>d", ":bd<cr>", opts) + +-- Set alt + j/k to switch lines of texts or simply move them +map("n", "<A-k>", ':let save_a=@a<Cr><Up>"add"ap<Up>:let @a=save_a<Cr>', opts) +map("n", "<A-j>", ':let save_a=@a<Cr>"add"ap:let @a=save_a<Cr>', opts) + +-- move block easily +map("n", "<", "<<", d("Decrease indent")) +map("n", ">", ">>", d("Increase indent")) +map("x", "<", "<gv", d("Increase indent")) +map("x", ">", ">gv", d("Decrease indent")) + +-- Resize Panes +map("n", "<Leader>+", ":resize +5<CR>", opts) +map("n", "<Leader>-", ":resize -5<CR>", opts) +map("n", "<Leader><", ":vertical resize +5<CR>", opts) +map("n", "<Leader>>", ":vertical resize -5<CR>", opts) +map("n", "<Leader>=", "<C-w>=", opts) + +-- New tab +map("n", "<C-T>e", ":tabedit", opts) + +-- create tab like window +map("n", "<C-T>h", ":tabprevious<CR>", d("Goto previous tab")) +map("n", "<C-T>l", ":tabnext<CR>", d("Goto next tab")) +map("n", "<C-T>n", ":tabnew<CR>", d("Create a new tab")) + +-- Vim TABs +map("n", "<leader>1", "1gt<CR>", opts) +map("n", "<leader>2", "2gt<CR>", opts) +map("n", "<leader>3", "3gt<CR>", opts) +map("n", "<leader>4", "4gt<CR>", opts) +map("n", "<leader>5", "5gt<CR>", opts) +map("n", "<leader>6", "6gt<CR>", opts) +map("n", "<leader>7", "7gt<CR>", opts) +map("n", "<leader>8", "8gt<CR>", opts) +map("n", "<leader>9", "9gt<CR>", opts) +map("n", "<leader>0", "10gt<CR>", opts) + +-- Split window +map("n", "<leader>h", ":split<CR>", opts) +map("n", "<leader>v", ":vsplit<CR>", opts) +map("n", "<leader>c", "<C-w>c", opts) + +-- Toggle set number +map("n", "<leader>$", ":NumbersToggle<CR>", opts) +map("n", "<leader>%", ":NumbersOnOff<CR>", opts) + +-- Change mode to executable +map("n", "<leader>x", ":!chmod +x %<CR>", opts) + +-- Paste without replace clipboard +map("v", "p", '"_dP', opts) + +-- Paste end of line +--map("n", ",", "$p", opts) +vim.cmd([[ + nmap , $p +]]) + +-- Select entire buffer +map("v", "<aa>", "gg<S-v>G", opts) + +-- Delete without changing the registers +--map('n', 'x', '"_x', opts) + +-- Select all text in current buffer +--map('n', '<leader>a', ':keepjumps normal! ggVG<cr>') + +-- Swap two pieces of text, use x to cut in visual mode, then use Ctrl-x in +-- visual mode to select text to swap with +map("v", "<C-X>", "<Esc>`.``gvP``P", opts) + +-- Search and replace +map("v", "<leader>sr", 'y:%s/<C-r><C-r>"//g<Left><Left>c', opts) +--vnoremap ; :call Get_visual_selection()<cr> +-- +--function! Get_visual_selection() +-- " Why is this not a built-in Vim script function?! +-- let [lnum1, col1] = getpos("'<")[1:2] +-- let [lnum2, col2] = getpos("'>")[1:2] +-- let lines = getline(lnum1, lnum2) +-- let lines[-1] = lines[-1][: col2 - (&selection == 'inclusive' ? 1 : 2)] +-- let lines[0] = lines[0][col1 - 1:] +-- let selection = join(lines,'\n') +-- let change = input('Change the selection with: ') +-- execute ":%s/".selection."/".change."/g" +--endfunction +vim.cmd([[ +let s:hidden_all = 0 +function! ToggleHiddenAll() + if s:hidden_all == 0 + let s:hidden_all = 1 + set noshowmode + set noruler + set laststatus=0 + set noshowcmd + else + let s:hidden_all = 0 + set showmode + set ruler + set laststatus=2 + set showcmd + endif +endfunction +nnoremap <S-h> :call ToggleHiddenAll()<CR> +]]) + +-------------- Telescope -------------- +--Telescope find_files cwd=.. +map("n", "<leader>fc", "<cmd>lua require('telescope.builtin').commands()<cr>", opts) +map( + "n", + "<leader>ft", + "<cmd>lua require('telescope.builtin').builtin(require('telescope.themes').get_dropdown({}))<cr>", + opts +) + +map("n", "<leader>fg", "<cmd>lua require('telescope.builtin').live_grep()<cr>", opts) +map("n", "<leader>fb", "<cmd>lua require('telescope.builtin').current_buffer_fuzzy_find()<cr>", opts) + +--map("n", "<leader>fz", ":FZF<CR>", opts) +--map("t", [[<Esc><Esc>]], [[<C-\><C-N>]], opts) +--map("n", "ff", ":NvimTreeToggle<CR>", {}) +map("n", "<leader>ff", ":NvimTreeToggle<CR>", {}) +-- This <Esc><Esc> avoids crashing fzf menu running in TERMINAL MODE (:q if you do) +-- Find files in config dirs +--key_map("n", "<leader>e", ":lua require('plugins.telescope').find_configs()<CR>", opts) +map("n", "<leader>f.", "<cmd>lua require('plugins.telescope').find_configs({})<cr>", opts) +map("n", "<leader>ft", "<cmd>lua require('plugins.telescope').file_explorer({})<cr>", opts) +map("n", "<leader>fd", "<cmd>lua require('plugins.telescope').find_notes({})<cr>", opts) +map("n", "<leader>fm", "<cmd>lua require('telescope').extensions.media_files.media_files({})<cr>", opts) +-- registers picker +map("n", "<leader>r", "<cmd>lua require('telescope.builtin').registers({})<CR>", opts) +-- find files including gitignored +--keymap( +-- "n", +-- "<leader>fg", +-- "<cmd>lua require('telescope.builtin').find_files({find_command={'fd','--no-ignore-vcs'}})<CR>", opts) +-- open available commands & run it +map("n", "<leader>fc", "<cmd>lua require('telescope.builtin').commands({results_title='Commands Results'})<CR>", opts) + +-------------- Autopairs -------------- +Toggle_autopairs = function() + local ok, autopairs = pcall(require, "nvim-autopairs") + if ok then + if autopairs.state.disabled then + autopairs.enable() + print("autopairs on") + else + autopairs.disable() + print("autopairs off") + end + else + print("autopairs not available") + end +end +map("n", "<leader>ww", ":lua Toggle_autopairs()<CR>", term_opts) + +-------------- Functions -------------- +-- Toggle transparency +vim.cmd([[ + let t:is_transparent = 0 + function! Toggle_transparent_background() + if t:is_transparent == 0 + hi Normal guibg=#111111 ctermbg=black + let t:is_transparent = 1 + else + hi Normal guibg=NONE ctermbg=NONE + let t:is_transparent = 0 + endif + endfunction + nnoremap <leader>tb :call Toggle_transparent_background()<CR> +]]) +--keymap('n', '<leader>tb', ':Toggle_transparent_background<CR>', opts) + +-- Toggle zoom +vim.cmd([[ + function! s:ZoomToggle() abort + if exists('t:zoomed') && t:zoomed + execute t:zoom_winrestcmd + let t:zoomed = 0 + else + let t:zoom_winrestcmd = winrestcmd() + resize + vertical resize + let t:zoomed = 1 + endif + endfunction + command! ZoomToggle call s:ZoomToggle() + ]]) +map("n", "<leader>z", ":ZoomToggle<CR>", opts) +-- "Zoom" a split window into a tab and/or close it +--keymap('n', '<Leader>,', ':tabnew %<CR>', opts) +--keymap('n', '<Leader>.', ':tabclose<CR>', opts) + +-- Open last closed buffer +vim.cmd([[ + function! OpenLastClosed() + let last_buf = bufname('#') + if empty(last_buf) + echo "No recently closed buffer found" + return + endif + let result = input("Open ". last_buf . " in (n)ormal (v)split, (t)ab or (s)plit ? (n/v/t/s) : ") + if empty(result) || (result !=# 'v' && result !=# 't' && result !=# 's' && result !=# 'n') + return + endif + if result ==# 't' + execute 'tabnew' + elseif result ==# 'v' + execute "vsplit" + elseif result ==# 's' + execute "split" + endif + execute 'b ' . last_buf + endfunction + ]]) +map("n", "<C-t>", ":call OpenLastClosed() <CR>", opts) + +-- Tabularize +vim.cmd([[ + vnoremap <expr> <Leader>mm ':Tabularize /^\s*\S.*\zs' . split(&commentstring, '%s')[0] . "<CR>" + nnoremap <expr> <Leader>mm ':Tabularize /^\s*\S.*\zs' . split(&commentstring, '%s')[0] . "<CR>" + "nnoremap <leader>i mc40A <esc>080lDgelD`cP + "vnoremap <leader>ii mc0f-20i<Space><Esc>`cdt=j +]]) + +vim.cmd([[ + " Start interactive EasyAlign in visual mode (e.g. vipga) + xmap ga <Plug>(EasyAlign) + " Start interactive EasyAlign for a motion/text object (e.g. gaip) + nmap ga <Plug>(EasyAlign) + if !exists('g:easy_align_delimiters') + let g:easy_align_delimiters = {} + endif + let g:easy_align_delimiters['--'] = { 'pattern': '--', 'ignore_groups': ['String'] } + nnoremap <F1> 21A <Esc>d21\| + imap <F1> <Esc><F1>a +]]) +--:'<,'>EasyAlign /--/ +--EasyAlign /--/ +--:'<,'>Tabularize /-- + +map("n", "<leader>,", ":hide<CR>", opts) +map("n", "<leader>.", ":unhide<CR>", opts) + +--" Clean trailing whitespace +--nnoremap <leader>ww mz:%s/\s\+$//<cr>:let @/=''<cr>`z + +-- Save with root permission (not working for now) +--vim.api.nvim_create_user_command('W', 'w !sudo tee > /dev/null %', {}) + +-- Copy and Paste with <C-c> and <C-v> +--keymap('n', '<expr> p', (v:register =--= '"' && &clipboard =~ 'unnamed' ? '"*p' : '"' . v:register . 'p')'', opts) +-- Use command :Vb for Visual Block or <C-q> since <C-v> is used for Copy +--command! Vb normal! <C-v> +-- Map <w!!> to save/edit a root permission/read-only file, only works in +-- traditional vim and not neovim +--keymap('c', 'w!! %!sudo tee > /dev/null', opts) +--" Copying text to the system clipboard. +--" +--" For some reason Vim no longer wants to talk to the OS X pasteboard through "*. +--" Computers are bullshit. +--function! g:FuckingCopyTheTextPlease() +-- let old_z = @z +-- normal! gv"zy +-- call system('pbcopy', @z) +-- let @z = old_z +--endfunction +--noremap <leader>p :silent! set paste<CR>"*p:set nopaste<CR> +--" noremap <leader>p mz:r!pbpaste<cr>`z +--vnoremap <leader>y :<c-u>call g:FuckingCopyTheTextPlease()<cr> + +--" Indent/dedent/autoindent what you just pasted. +--nnoremap <lt>> V`]< +--nnoremap ><lt> V`]> +--nnoremap =- V`]= + +--" Keep the cursor in place while joining lines +--nnoremap J mzJ`z + +--" Toggle [i]nvisible characters +--nnoremap <leader>i :set list!<cr> +-- +--" Unfuck my screen +--nnoremap U :syntax sync fromstart<cr>:redraw!<cr> + +--" Ranger +--nnoremap <leader>r :silent !ranger %:h<cr>:redraw!<cr> +--nnoremap <leader>R :silent !ranger<cr>:redraw!<cr> +-- +--" Insert Mode Completion {{{ +-- +--inoremap <c-f> <c-x><c-f> +--inoremap <c-]> <c-x><c-]> +--inoremap <c-l> <c-x><c-l> +---- Open the current file in the default program (on Mac this should just be just `open`) +--keymap('n', '<leader>x', ':!xdg-open %<cr><cr>') + +--keymap("n", "<leader>ff", "<cmd>lua require('telescope.builtin').find_files()<cr>", opts) +--keymap("n", "<leader>ff", "<cmd>lua require('telescope.builtin').find_files cwd=..()<cr>", opts) +--keymap('n', '<leader>k', ':nohlsearch<CR>') +-- +--"This unsets the "last search pattern" register by hitting return +vim.cmd([[ + nnoremap <silent> <CR> :noh<CR><CR> +]]) + +--keymap('n', '<leader>Q', ':bufdo bdelete<CR>') +-- +---- Allow gf to open non-existent files +--keymap('', 'gf', ':edit <cfile><CR>') +-- +---- Reselect visual selection after indenting +--keymap('v', '<', '<gv') +--keymap('v', '>', '>gv') +-- +---- Maintain the cursor position when yanking a visual selection +---- http://ddrscott.github.io/blog/2016/yank-without-jank/ +--keymap('v', 'y', 'myy`y') +--keymap('v', 'Y', 'myY`y') +--keymap("n", "<C-q>", ":q<cr>", opts) +--keymap("n", "<C-M-q>", ":qa!<cr>", opts) + +--" Sort lines +--nnoremap <leader>s vip:!sort<cr> +--vnoremap <leader>s :!sort<cr> +-- +--" Tabs +--nnoremap <leader>( :tabprev<cr> +--nnoremap <leader>) :tabnext<cr> +-- +--" Wrap +--nnoremap <leader>W :set wrap!<cr> + +--set foldlevelstart=0 +-- +--" Space to toggle folds. +--nnoremap <Space> za +--vnoremap <Space> za +--" Make zO recursively open whatever fold we're in, even if it's partially open. +--nnoremap zO zczO + +-- Packer +--maps.n["<leader>pc"] = { "<cmd>PackerCompile<cr>", desc = "Packer Compile" } +--maps.n["<leader>pi"] = { "<cmd>PackerInstall<cr>", desc = "Packer Install" } +--maps.n["<leader>ps"] = { "<cmd>PackerSync<cr>", desc = "Packer Sync" } +--maps.n["<leader>pS"] = { "<cmd>PackerStatus<cr>", desc = "Packer Status" } +--maps.n["<leader>pu"] = { "<cmd>PackerUpdate<cr>", desc = "Packer Update" } +-- NeoTree +--if is_available "neo-tree.nvim" then +-- keymaps.n["<leader>e"] = { "<cmd>Neotree toggle<cr>", desc = "Toggle Explorer" } +-- keymaps.n["<leader>o"] = { "<cmd>Neotree focus<cr>", desc = "Focus Explorer" } +--end +-- Alpha +--if is_available "alpha-nvim" then maps.n["<leader>d"] = { "<cmd>Alpha<cr>", desc = "Alpha Dashboard" } end + +-- Package Manager +-- TODO: v2 rework these key bindings to be more general +--if is_available "mason.nvim" then maps.n["<leader>lI"] = { "<cmd>Mason<cr>", desc = "LSP installer" } end +-- Telescope +--if is_available "telescope.nvim" then +-- maps.n["<leader>fw"] = { function() require("telescope.builtin").live_grep() end, desc = "Search words" } +-- maps.n["<leader>fW"] = { +-- function() +-- require("telescope.builtin").live_grep { +-- additional_args = function(args) return vim.list_extend(args, { "--hidden", "--no-ignore" }) end, +-- } +-- end, +-- desc = "Search words in all files", +-- } +-- maps.n["<leader>gt"] = { function() require("telescope.builtin").git_status() end, desc = "Git status" } +-- maps.n["<leader>gb"] = { function() require("telescope.builtin").git_branches() end, desc = "Git branches" } +-- maps.n["<leader>gc"] = { function() require("telescope.builtin").git_commits() end, desc = "Git commits" } +-- maps.n["<leader>ff"] = { function() require("telescope.builtin").find_files() end, desc = "Search files" } +-- maps.n["<leader>fF"] = { +-- function() require("telescope.builtin").find_files { hidden = true, no_ignore = true } end, +-- desc = "Search all files", +-- } +-- maps.n["<leader>fb"] = { function() require("telescope.builtin").buffers() end, desc = "Search buffers" } +-- maps.n["<leader>fh"] = { function() require("telescope.builtin").help_tags() end, desc = "Search help" } +-- maps.n["<leader>fm"] = { function() require("telescope.builtin").marks() end, desc = "Search marks" } +-- maps.n["<leader>fo"] = { function() require("telescope.builtin").oldfiles() end, desc = "Search history" } +-- maps.n["<leader>fc"] = +-- { function() require("telescope.builtin").grep_string() end, desc = "Search for word under cursor" } +-- maps.n["<leader>sb"] = { function() require("telescope.builtin").git_branches() end, desc = "Git branches" } +-- maps.n["<leader>sh"] = { function() require("telescope.builtin").help_tags() end, desc = "Search help" } +-- maps.n["<leader>sm"] = { function() require("telescope.builtin").man_pages() end, desc = "Search man" } +-- maps.n["<leader>sn"] = +-- { function() require("telescope").extensions.notify.notify() end, desc = "Search notifications" } +-- maps.n["<leader>sr"] = { function() require("telescope.builtin").registers() end, desc = "Search registers" } +-- maps.n["<leader>sk"] = { function() require("telescope.builtin").keymaps() end, desc = "Search keymaps" } +-- maps.n["<leader>sc"] = { function() require("telescope.builtin").commands() end, desc = "Search commands" } +-- maps.n["<leader>ls"] = { +-- function() +-- local aerial_avail, _ = pcall(require, "aerial") +-- if aerial_avail then +-- require("telescope").extensions.aerial.aerial() +-- else +-- require("telescope.builtin").lsp_document_symbols() +-- end +-- end, +-- desc = "Search symbols", +-- } +-- maps.n["<leader>lR"] = { function() require("telescope.builtin").lsp_references() end, desc = "Search references" } +-- maps.n["<leader>lD"] = { function() require("telescope.builtin").diagnostics() end, desc = "Search diagnostics" } +--end +-- +---- Terminal +--if is_available "toggleterm.nvim" then +-- local toggle_term_cmd = astronvim.toggle_term_cmd +-- maps.n["<C-\\>"] = { "<cmd>ToggleTerm<cr>", desc = "Toggle terminal" } +-- maps.n["<leader>gg"] = { function() toggle_term_cmd "lazygit" end, desc = "ToggleTerm lazygit" } +-- maps.n["<leader>tn"] = { function() toggle_term_cmd "node" end, desc = "ToggleTerm node" } +-- maps.n["<leader>tu"] = { function() toggle_term_cmd "ncdu" end, desc = "ToggleTerm NCDU" } +-- maps.n["<leader>tt"] = { function() toggle_term_cmd "htop" end, desc = "ToggleTerm htop" } +-- maps.n["<leader>tp"] = { function() toggle_term_cmd "python" end, desc = "ToggleTerm python" } +-- maps.n["<leader>tl"] = { function() toggle_term_cmd "lazygit" end, desc = "ToggleTerm lazygit" } +-- maps.n["<leader>tf"] = { "<cmd>ToggleTerm direction=float<cr>", desc = "ToggleTerm float" } +-- maps.n["<leader>th"] = { "<cmd>ToggleTerm size=10 direction=horizontal<cr>", desc = "ToggleTerm horizontal split" } +-- maps.n["<leader>tv"] = { "<cmd>ToggleTerm size=80 direction=vertical<cr>", desc = "ToggleTerm vertical split" } +--end +-- +---- Stay in indent mode +--maps.v["<"] = { "<gv", desc = "unindent line" } +--maps.v[">"] = { ">gv", desc = "indent line" } +-- +---- Improved Terminal Mappings +--maps.t["<esc>"] = { "<C-\\><C-n>", desc = "Terminal normal mode" } +--maps.t["jk"] = { "<C-\\><C-n>", desc = "Terminal normal mode" } +--maps.t["<C-h>"] = { "<c-\\><c-n><c-w>h", desc = "Terminal left window navigation" } +--maps.t["<C-j>"] = { "<c-\\><c-n><c-w>j", desc = "Terminal down window navigation" } +--maps.t["<C-k>"] = { "<c-\\><c-n><c-w>k", desc = "Terminal up window navigation" } +--maps.t["<C-l>"] = { "<c-\\><c-n><c-w>l", desc = "Terminal right window naviation" } +-- LSP Installer +--if is_available "mason-lspconfig.nvim" then maps.n["<leader>li"] = { "<cmd>LspInfo<cr>", desc = "LSP information" } end + +-- ALE: toggle _ALE activity +--keymap('n', '<leader>a',[[:ALEToggle<CR>]]) + +--keymap('n', '<Leader>cd', ':call fzf#run({'source': 'fd -t d -H . ~', 'sink': 'cd'})<CR>', opts) +-- ":lua require('neogen').generate()<CR>", opts) +--keymap("n", "<leader>ww", ":set wrap!<CR>", opts) +-- diff --git a/lua/mods.lua b/lua/mods.lua new file mode 100644 index 0000000..b8866fc --- /dev/null +++ b/lua/mods.lua @@ -0,0 +1,138 @@ +vim.cmd([[ + function RandomColorScheme() + let mycolors = split(globpath(&rtp,"**/colors/*.vim"),"\n") + exe 'so ' . mycolors[localtime() % len(mycolors)] + unlet mycolors + endfunction + + call RandomColorScheme() + + :command NewColor call RandomColorScheme() +]]) + +--vim.cmd([[ +-- function RandomColorSchemeMyPicks() +-- let mypicks = ["pyte", "fokus", "github", "peachpuff", "morning", "simple256", "xcode", "gruvbox"] +-- let mypick = mypicks[localtime() % len(mypicks)] +-- echom mypick +-- execute 'colo' mypick +-- endfunction +-- +-- command NewColor call RandomColorSchemeMyPicks() +-- +-- let s:use_gui = exists('g:neovide') || has('gui_running') || (has('termguicolors') && &termguicolors) +-- if (s:use_gui) +-- call RandomColorSchemeMyPicks() +-- endif +--]]) + +vim.cmd([[ + let g:fzf_history_dir = '~/.local/share/fzf-history' + map <leader>z :FZF<CR> + map <leader>a :Files<CR> + map <leader>l :Lines<CR> + map <leader>L :BLines<CR> + map <leader>B :Buffers<CR> + map <leader>h :History:<CR> + nnoremap <leader>g :Rg<CR> + "nnoremap <leader>t :Tags<CR> + nnoremap <leader>m :Marks<CR> + " This is the default extra key bindings + let g:fzf_action = { + \ 'ctrl-t': 'tab split', + \ 'ctrl-x': 'split', + \ 'ctrl-y': 'vsplit' } + let g:fzf_tags_command = 'ctags -R' + " Border color + let g:fzf_layout = {'up':'~90%', 'window': { 'width': 0.8, 'height': 0.8,'yoffset':0.5,'xoffset': 0.5, 'highlight': 'Todo', 'border': 'sharp' } } + let $FZF_DEFAULT_OPTS = '--layout=reverse --info=inline' + let $FZF_DEFAULT_COMMAND="rg --files --hidden" + " Customize fzf colors to match your color scheme + let 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'] } + " Get Files + command! -bang -nargs=? -complete=dir Files + \ call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse', '--info=inline']}), <bang>0) + " Get text in files with Rg + command! -bang -nargs=* Rg + \ call fzf#vim#grep( + \ 'rg --column --line-number --no-heading --color=always --smart-case '.shellescape(<q-args>), 1, + \ fzf#vim#with_preview(), <bang>0) + " Ripgrep advanced + function! RipgrepFzf(query, fullscreen) + let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case %s || true' + let initial_command = printf(command_fmt, shellescape(a:query)) + let reload_command = printf(command_fmt, '{q}') + let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]} + call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen) + endfunction + command! -nargs=* -bang RG call RipgrepFzf(<q-args>, <bang>0) + " Git grep + command! -bang -nargs=* GGrep + \ call fzf#vim#grep( + \ 'git grep --line-number '.shellescape(<q-args>), 0, + \ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0) + command! -bang FM call fzf#run(fzf#wrap({'source': 'cat ~/.fzf-marks | sed "s/.*: \(.*\)$/\1/" | sed "s#~#${HOME}#"', 'sink': 'lcd'}, <bang>0)) +]]) + +vim.cmd([[ + " Enable mouse scrollback + set mouse=a + tnoremap <Esc> <C-\><C-n> + tnoremap <c-b> <c-\><c-n> + function! ClearTerminal() + set scrollback=1 + let &g:scrollback=1 + echo &scrollback + call feedkeys("\i") + call feedkeys("clear\<CR>") + call feedkeys("\<C-\>\<C-n>") + call feedkeys("\i") + sleep 100m + let &scrollback=s:scroll_value + endfunction +]]) + +vim.cmd([[ + " :Rename {newname} + function! RenameFile() + let old_name = expand('%') + let new_name = input('New file name: ', expand('%'), 'file') + if new_name != '' && new_name != old_name + exec ':saveas ' . new_name + exec ':silent !rm ' . old_name + redraw! + endif + endfunction + map <leader>re :call RenameFile()<cr> +]]) + +--vim.cmd([[ +-- " Markdown Settings +-- autocmd BufNewFile,BufReadPost *.md set filetype=markdown +-- let g:markdown_fenced_languages = ['html', 'python', 'bash=sh', 'sql', 'pug'] +-- let g:markdown_minlines = 100 +-- let g:instant_markdown_autostart = 0 +--]]) +-- +--vim.cmd([[ +-- " On The Fly Table mode +-- function! s:isAtStartOfLine(mapping) +-- let text_before_cursor = getline('.')[0 : col('.')-1] +-- let mapping_pattern = '\V' . escape(a:mapping, '\') +-- let comment_pattern = '\V' . escape(substitute(&l:commentstring, '%s.*$', '', ''), '\') +-- return (text_before_cursor =~? '^' . ('\v(' . comment_pattern . '\v)?') . '\s*\v' . mapping_pattern . '\v$') +-- endfunction +--]]) diff --git a/lua/opts.lua b/lua/opts.lua new file mode 100644 index 0000000..06e15fd --- /dev/null +++ b/lua/opts.lua @@ -0,0 +1,178 @@ +--[[ opts.lua ]] + +vim.cmd([[ + "filetype plugin indent on " Load indent files, to automatically do language-dependent indenting. + "autocmd BufEnter * :syntax sync fromstart + "syntax enable + let g:clipbrdDefaultReg = '+' + "set nocompatible + "autocmd FileType lua set comments=s1:---,m:--,ex:-- +]]) + +-- Environment +vim.opt.shell = "zsh" -- +vim.scriptencoding = "utf-8" -- +vim.opt.encoding = "utf-8" -- +vim.opt.fileencoding = "utf-8" -- +vim.g.python3_host_prog = "/usr/bin/python3" -- +vim.g.loaded_python3_provider = 1 -- +vim.g.sh_noisk = 1 -- iskeyword word boundaries when editing a 'sh' file +--vim.opt.sessionoptions = "buffers,curdir,folds,help,tabpages,winsize,resize,winpos,terminal,globals" -- + +vim.opt.termguicolors = true +-- Behaviour +vim.opt.clipboard:append({ "unnamedplus" }) -- +vim.opt.backspace = { "start", "eol", "indent" } -- Make backspace work as you would expect. +vim.opt.hidden = true -- Switch between buffers without having to save first. +vim.opt.splitbelow = true -- make split put the new buffer below the current buffer +vim.opt.splitright = true -- make vsplit put the new buffer on the right of the current buffer +vim.opt.scrolloff = 8 -- +vim.opt.sidescrolloff = 8 -- how many lines to scroll when using the scrollbar +vim.opt.autoread = true -- reload files if changed externally +vim.opt.display = "lastline" -- Show as much as possible of the last line. +vim.opt.inccommand = "split" -- +vim.opt.ttyfast = true -- Faster redrawing. +vim.opt.lazyredraw = true -- Only redraw when necessary +vim.opt.keywordprg = ":help" -- :help options +--vim.opt.ruler = true -- +vim.opt.errorbells = false -- +vim.opt.list = true -- Show non-printable characters. +vim.opt.showmatch = true -- +vim.opt.matchtime = 3 -- +vim.opt.showbreak = "↪ " -- +vim.opt.linebreak = true -- +vim.opt.exrc = true -- +--vim.opt.autochdir = true -- or use this to use <:e> to create a file in current directory +vim.opt.autoread = true -- if a file is changed outside of vim, automatically reload it without asking +--vim.opt.notimeout = true -- Timeout on keycodes and not mappings +vim.opt.ttimeout = true -- Makes terminal vim work sanely +vim.opt.ttimeoutlen = 10 -- +--vim.opt.timeoutlen = 100 -- time to wait for a mapped sequence to complete (in milliseconds) +--vim.cmd([[set diffopt = vertical = true]]) -- diffs are shown side-by-side not above/below + +-- Indent/tab +vim.opt.breakindent = true -- +vim.opt.autoindent = true -- Indent according to previous line. +vim.opt.smarttab = false -- +vim.opt.tabstop = 2 -- +vim.opt.expandtab = true -- Indent according to previous line. +--vim.opt.expandtab = true -- Use spaces instead of tabs. +vim.opt.softtabstop = 2 -- Tab key indents by 2 spaces. +vim.opt.shiftwidth = 2 -- >> indents by 2 spaces. +vim.opt.shiftround = true -- >> indents to next multiple of 'shiftwidth'. +vim.opt.smartindent = true -- smart indent + +-- Column/statusline/Cl +vim.opt.number = true -- +--vim.opt.title = true -- +--vim.opt.colorcolumn = "+1" -- +--vim.opt.signcolumn = "yes:1" -- always show the sign column +vim.opt.signcolumn = "number" +--vim.opt.signcolumn = "no" -- +vim.opt.laststatus = 3 -- " Always show statusline. +vim.opt.showmode = true -- Show current mode in command-line, example: -- INSERT -- mode +vim.opt.showcmd = true -- Show the command in the status bar +vim.opt.cmdheight = 1 -- +--vim.opt.cmdheight = 0 -- +vim.opt.report = 0 -- Always report changed lines. +--local autocmd = vim.api.nvim_create_autocmd +--autocmd("bufenter", { +-- pattern = "*", +-- callback = function() +-- if vim.bo.ft ~= "terminal" then +-- vim.opt.statusline = "%!v:lua.require'ui.statusline'.run()" +-- else +-- vim.opt.statusline = "%#normal# " +-- end +-- end, +--}) + +-- Backup/undo +vim.opt.backup = false -- +--vim.opt.noswapfile = true -- +--vim.opt.undofile = true -- +vim.opt.backupskip = { "/tmp/*", "/private/tmp/*" } -- + +-- Format +vim.opt.textwidth = 80 -- +vim.cmd([[let &t_Cs = "\e[4:3m"]]) -- Undercurl +vim.cmd([[let &t_Ce = "\e[4:0m"]]) -- +vim.opt.path:append({ "**" }) -- Finding files - Search down into subfolder +vim.cmd("set whichwrap+=<,>,[,],h,l") -- +vim.cmd([[set iskeyword+=-]]) -- +vim.cmd([[set formatoptions-=cro]]) -- TODO: this doesn't seem to work +vim.opt.wrapscan = true -- " Searches wrap around end-of-file. +--vim.wo.number = true -- +--vim.opt.wrap = false -- No Wrap lines +--vim.opt.foldmethod = 'manual' -- +--vim.opt.foldmethod = "expr" -- +vim.opt.modeline = true -- +vim.opt.modelines = 3 -- modelines (comments that set vim options on a per-file basis) +--vim.opt.nofoldenable = true -- turn folding off +vim.opt.foldenable = false -- turn folding off + +-- Highlights +vim.opt.incsearch = true -- Highlight while searching with / or ?. +vim.opt.hlsearch = true -- Keep matches highlighted. +vim.opt.ignorecase = true -- ignore case in search patterns UNLESS /C or capital in search +vim.opt.smartcase = true -- smart case +vim.opt.synmaxcol = 200 -- Only highlight the first 200 columns. +vim.opt.winblend = 0 -- +vim.opt.wildoptions = "pum" -- +vim.opt.pumblend = 5 -- +vim.opt.pumheight = 10 -- pop up menu height + +-- Better Completion +vim.opt.complete = { ".", "w", "b", "u", "t" } -- +vim.opt.completeopt = { "longest,menuone,preview" } -- +--vim.opt.completeopt = { "menuone", "noselect" } -- mostly just for cmp +--vim.opt.completeopt = { "menu", "menuone", "noselect" } -- + +-- Wildmenu completion -- +vim.opt.wildmenu = true -- +vim.opt.wildmode = { "list:longest" } -- +vim.opt.wildignore:append({ ".hg", ".git", ".svn" }) -- Version control +vim.opt.wildignore:append({ "*.aux", "*.out", "*.toc" }) -- LaTeX intermediate files +vim.opt.wildignore:append({ "*.jpg", "*.bmp", "*.gif", "*.png", "*.jpeg" }) -- binary images +vim.opt.wildignore:append({ "*.o", "*.obj", "*.exe", "*.dll", "*.manifest" }) -- compiled object files +vim.opt.wildignore:append({ "*.spl" }) -- compiled spelling word lists +vim.opt.wildignore:append({ "*.sw?" }) -- Vim swap files +vim.opt.wildignore:append({ "*.DS_Store" }) -- OSX bullshit +vim.opt.wildignore:append({ "*.luac" }) -- Lua byte code +vim.opt.wildignore:append({ "migrations" }) -- Django migrations +vim.opt.wildignore:append({ "*.pyc" }) -- Python byte code +vim.opt.wildignore:append({ "*.orig" }) -- Merge resolution files +vim.opt.wildignore:append({ "*/node_modules/*" }) -- + +-- Cursorline +vim.cmd([[ " Only show cursorline in the current window and in normal mode + augroup cline + au! + au WinLeave,InsertEnter * set nocursorline + au WinEnter,InsertLeave * set cursorline + augroup END +]]) +vim.opt.cursorline = true -- +vim.opt.guicursor = "i:ver100,r:hor100" -- + +-- Trailing whitespace +vim.cmd([[ " Only show in insert mode + augroup trailing + au! + au InsertEnter * :set listchars-=trail:⌴ + au InsertLeave * :set listchars+=trail:⌴ + augroup END +]]) +vim.opt.listchars = { tab = "▸ ", trail = "·" } -- +vim.opt.fillchars:append({ eob = " " }) -- remove the ~ from end of buffer + +-- Line Return +vim.cmd([[ " Return to the same line when we reopen a file + augroup line_return + au! + au BufReadPost * + \ if line("'\"") > 0 && line("'\"") <= line("$") | + \ execute 'normal! g`"zvzz' | + \ endif + augroup END +]]) diff --git a/lua/pack.lua b/lua/pack.lua new file mode 100644 index 0000000..b864872 --- /dev/null +++ b/lua/pack.lua @@ -0,0 +1,279 @@ +local utils = require("utils") +local fn = vim.fn + +-- Automatically install packer +local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" +if fn.empty(fn.glob(install_path)) > 0 then + PACKER_BOOTSTRAP = fn.system({ + "git", + "clone", + "--depth", + "1", + "https://github.com/wbthomason/packer.nvim", + install_path, + }) + print("Installing packer close and reopen Neovim...") + vim.cmd([[packadd packer.nvim]]) +end + +-- Autocommand that reloads neovim whenever you save the plugins.lua file +vim.cmd([[ + augroup packer_user_config + autocmd! + autocmd BufWritePost pack.lua source <afile> | PackerSync + augroup end +]]) + +-- Use a protected call so we don't error out on first use +local status_ok, packer = pcall(require, "packer") +if not status_ok then + return +end + +-- Have packer use a popup window +packer.init({ + auto_reload_compiled = true, + display = { + open_fn = function() + return require("packer.util").float({ border = "rounded" }) + end, + }, +}) + +-- Install your plugins here +return packer.startup(function(use) + use("wbthomason/packer.nvim") -- Have packer manage itself + + -- nvimlsp plugins + --use({ + -- "williamboman/mason.nvim", + -- config = function() + -- require("mason").setup() + -- require("mason-lspconfig").setup({ + -- ensure_installed = { "sumneko_lua", "clangd", "rust_analyzer" }, + -- }) + -- end, + --}) + use("williamboman/mason.nvim") + use("williamboman/mason-lspconfig.nvim") + use("neovim/nvim-lspconfig") + use("williamboman/nvim-lsp-installer") + use("glepnir/lspsaga.nvim") + use("nvim-lua/lsp-status.nvim") + --use({ + -- "glepnir/lspsaga.nvim", + -- branch = "main", + -- config = function() + -- local saga = require("lspsaga") + + -- saga.init_lsp_saga({ + -- -- your configuration + -- }) + -- end, + --}) + -- use("nvim-lua/popup.nvim") + use("nvim-lua/plenary.nvim") -- Useful lua functions used ny lots of plugins + use("jose-elias-alvarez/null-ls.nvim") + use({ + "SmiteshP/nvim-navic", + requires = "neovim/nvim-lspconfig", + }) + --use("SmiteshP/nvim-gps") + -- autocomplete plugins + use("hrsh7th/nvim-cmp") + use("hrsh7th/cmp-nvim-lsp") + use("hrsh7th/cmp-buffer") + use("hrsh7th/cmp-path") + use("hrsh7th/cmp-cmdline") + use("onsails/lspkind-nvim") + use("saadparwaiz1/cmp_luasnip") + + -- snippets + use("L3MON4D3/LuaSnip") --snippet engine + use("rafamadriz/friendly-snippets") -- a bunch of snippets to use + --use("github/copilot.vim") + --use({ + --"zbirenbaum/copilot.lua", + --event = { "VimEnter" }, + --config = function() + --vim.defer_fn(function() + --require("plugins.copilot") + --end, 100) + --end, + --}) + --use({ + --"zbirenbaum/copilot-cmp", + --module = "copilot_cmp", + --}) + + -- treesitter plugins + use({ "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" }) --folding, jumping, refactoring... + use("nvim-treesitter/nvim-treesitter-refactor") + use("nvim-treesitter/nvim-treesitter-context") + --use({ + -- "danymat/neogen", + -- config = function() + -- require("neogen").setup({ snippet_engine = "luasnip" }) + -- end, + -- requires = "nvim-treesitter/nvim-treesitter", + --}) + use({ "junegunn/fzf", run = ":call fzf#install()" }) + -- telescope plugins + use("nvim-telescope/telescope.nvim") + use({ "nvim-telescope/telescope-fzf-native.nvim", run = "make" }) + use("tami5/sqlite.lua") + use("nvim-telescope/telescope-frecency.nvim") + use("nvim-telescope/telescope-ui-select.nvim") + use("nvim-telescope/telescope-media-files.nvim") + use("nvim-telescope/telescope-file-browser.nvim") + -- search emoji and other symbols + use({ "nvim-telescope/telescope-symbols.nvim", after = "telescope.nvim" }) + -- statusline plugins + --use("nvim-lualine/lualine.nvim") + use({ + "nvim-lualine/lualine.nvim", + requires = { "kyazdani42/nvim-web-devicons", opt = true }, + }) + --use({ + -- "folke/trouble.nvim", + -- requires = "kyazdani42/nvim-web-devicons", + -- config = function() + -- require("trouble").setup({ + -- -- your configuration comes here + -- -- or leave it empty to use the default settings + -- -- refer to the configuration section below + -- }) + -- end, + --}) + use("rebelot/heirline.nvim") + --use({ "akinsho/bufferline.nvim", tag = "v2.*", requires = "kyazdani42/nvim-web-devicons" }) + --use("itchyny/lightline.vim") + -- debug plugins + --use("puremourning/vimspector") + use("mfussenegger/nvim-dap") + use("rcarriga/nvim-dap-ui") + --use({ + -- "rcarriga/neotest", + -- requires = { + -- "nvim-lua/plenary.nvim", + -- "nvim-treesitter/nvim-treesitter", + -- "antoinemadec/FixCursorHold.nvim", + -- "rcarriga/neotest-python", + -- "rcarriga/neotest-vim-test", + -- "rcarriga/neotest-plenary", + -- "vim-test/vim-test", + -- }, + -- config = function() + -- require("plugins.neotest") + -- end, + --}) + --use("vim-test/vim-test") + --use({ + -- "rcarriga/vim-ultest", + -- requires = { "vim-test/vim-test" }, + -- run = ":UpdateRemotePlugins", + -- config = function() + -- require("plugins.ultest") + -- end, + --}) + -- UI + use("karb94/neoscroll.nvim") + use("folke/which-key.nvim") + use("folke/lsp-colors.nvim") + use("MunifTanjim/prettier.nvim") -- Prettier plugin for Neovim's built-in LSP client + use("norcalli/nvim-colorizer.lua") + use("folke/zen-mode.nvim") + use("romainl/vim-cool") + --use("p00f/nvim-ts-rainbow") + --use("goolord/alpha-nvim") + --use("feline-nvim/feline.nvim") + --use({ "fgheng/winbar.nvim" }) + --use("vim-airline/vim-airline") + --use("kdheepak/tabline.nvim") + -- use({ + -- "kdheepak/tabline.nvim", + -- config = function() + -- require("tabline").setup({ enable = false }) + -- end, + -- requires = { "hoob3rt/lualine.nvim", "kyazdani42/nvim-web-devicons" }, + -- notification plugin + use("rcarriga/nvim-notify") + --use("lukas-reineke/indent-blankline.nvim") + use("kyazdani42/nvim-web-devicons") + -- Colorschemes + use("Mofiqul/vscode.nvim") + use("gruvbox-community/gruvbox") + use("srcery-colors/srcery-vim") + use("tomasr/molokai") + use("ayu-theme/ayu-vim") + --use("sjl/badwolf") + use("joshdick/onedark.vim") + use("folke/tokyonight.nvim") + use("everblush/everblush.nvim") + use("sainnhe/edge") + use("EdenEast/nightfox.nvim") + use("bluz71/vim-nightfly-guicolors") + --use({ "shaunsingh/oxocarbon.nvim", run = "./install.sh" }) + use("jacoborus/tender.vim") + use("sainnhe/sonokai") + use("NTBBloodbath/doom-one.nvim") + + -- Utilities + use("nathom/filetype.nvim") + use("christoomey/vim-tmux-navigator") + --use("preservim/vimux") + use("myusuf3/numbers.vim") + use("windwp/nvim-autopairs") + use("lewis6991/gitsigns.nvim") + use("dinhhuy258/git.nvim") -- For git blame & browse + use("kyazdani42/nvim-tree.lua") + use("numToStr/Comment.nvim") + use("akinsho/toggleterm.nvim") + --use("godlygeek/tabular") + --use("Vonr/align.nvim") + --use("junegunn/vim-easy-align") + --use("dstein64/vim-startuptime") + use("tweekmonster/startuptime.vim") + use("lewis6991/impatient.nvim") + -- use("luukvbaal/stabilize.nvim") + --use({ + -- "ggandor/leap.nvim", + -- config = function() + -- require("leap").set_default_keymaps() + -- end, + --}) + --use("Shatur/neovim-session-manager") + --use("rmagatti/auto-session") + --use("rmagatti/session-lens") + --use("ahmedkhalf/project.nvim") + --use("aserowy/tmux.nvim") + --use("wakatime/vim-wakatime") + --use("tpope/vim-eunuch") + -- Handy unix command inside Vim (Rename, Move etc.) + use({ "tpope/vim-eunuch", cmd = { "Rename", "Delete" } }) + --use("tpope/vim-fugitive") + --use("tpope/vim-surround") + --use("tpope/vim-obsession") + --use("tpope/vim-unimpaired") + --use("voldikss/vim-floaterm") + --use("vimpostor/vim-tpipeline") + --use({ + -- "vimwiki/vimwiki", + -- config = function() + -- vim.g.vimwiki_list = { + -- { + -- path = "~/", + -- syntax = "markdown", + -- ext = ".md", + -- }, + -- } + -- vim.g.vimwiki_ext2syntax = { + -- [".md"] = "markdown", + -- [".markdown"] = "markdown", + -- [".mdown"] = "markdown", + -- Automatically set up your configuration after cloning packer.nvim + -- Put this at the end after all plugins + if PACKER_BOOTSTRAP then + require("packer").sync() + end +end) diff --git a/lua/plugins/airline.lua b/lua/plugins/airline.lua new file mode 100644 index 0000000..76f3655 --- /dev/null +++ b/lua/plugins/airline.lua @@ -0,0 +1,9 @@ +-- airline +vim.cmd([[ + let g:airline#extensions#tabline#enabled = 1 + let g:airline#extensions#tabline#show_buffers = 1 + let g:airline_powerline_fonts = 1 + let g:airline#extensions#tabline#buffer_nr_show = 1 + let g:airline#extensions#tagbar#enabled = 0 + let g:airline_theme='onedark' +]]) diff --git a/lua/plugins/autopairs.lua b/lua/plugins/autopairs.lua new file mode 100644 index 0000000..577e571 --- /dev/null +++ b/lua/plugins/autopairs.lua @@ -0,0 +1,33 @@ +-- Setup nvim-cmp. +local status_ok, npairs = pcall(require, "nvim-autopairs") +if not status_ok then + return +end + +npairs.setup { + check_ts = true, + ts_config = { + lua = { "string", "source" }, + javascript = { "string", "template_string" }, + java = false, + }, + disable_filetype = { "TelescopePrompt", "spectre_panel" }, + fast_wrap = { + map = "<M-e>", + chars = { "{", "[", "(", '"', "'" }, + pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""), + offset = 0, -- Offset from pattern match + end_key = "$", + keys = "qwertyuiopzxcvbnmasdfghjkl", + check_comma = true, + highlight = "PmenuSel", + highlight_grey = "LineNr", + }, +} + +local cmp_autopairs = require "nvim-autopairs.completion.cmp" +local cmp_status_ok, cmp = pcall(require, "cmp") +if not cmp_status_ok then + return +end +cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } }) diff --git a/lua/plugins/bufferline.lua b/lua/plugins/bufferline.lua new file mode 100644 index 0000000..6488f29 --- /dev/null +++ b/lua/plugins/bufferline.lua @@ -0,0 +1,323 @@ +require("bufferline").setup({ + options = { + numbers = "buffer_id", -- | "ordinal" | "buffer_id" | "both" | "none" | function({ ordinal, id, lower, raise }): string, + close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" + right_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" + left_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" + middle_mouse_command = nil, -- can be a string | function, see "Mouse actions" + --indicator = { + -- icon = '', -- this should be omitted if indicator style is not 'icon' + -- style = 'icon', -- | 'underline' | 'none', + --}, + --indicator_icon = " ", + --left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions" + modified_icon = '●', + left_trunc_marker = "", + right_trunc_marker = "", + show_buffer_close_icons = true, + --diagnostics = "nvim_lsp", + diagnostics = false, --"nvim_lsp", --false, -- | "nvim_lsp" | "coc", + diagnostics_update_in_insert = false, + buffer_close_icon = "", + separator_style = "thin", + enforce_regular_tabs = true, + always_show_bufferline = true, + max_name_length = 25, + offsets = { + { + filetype = "NvimTree", + text = "File Explorer", + highlight = "StatusLine", + text_align = "center", + }, + }, + custom_areas = { + right = function() + local result = {} + local error = vim.diagnostic.get_count(0, [[Error]]) + local warning = vim.diagnostic.get_count(0, [[Warning]]) + local info = vim.diagnostic.get_count(0, [[Information]]) + local hint = vim.diagnostic.get_count(0, [[Hint]]) + + if error ~= 0 then + result[1] = { text = " " .. error, fg = "#EC5241" } + end + + if warning ~= 0 then + result[2] = { text = " " .. warning, fg = "#EFB839" } + end + + if hint ~= 0 then + result[3] = { text = " " .. hint, fg = "#A3BA5E" } + end + + if info ~= 0 then + result[4] = { text = " " .. info, fg = "#7EA9A7" } + end + + return result + end, + }, + }, + highlights = { + background = { + fg = "#fdf6e3", + bg = "#002b36", + }, + tab = { + fg = "#fdf6e3", + bg = "#002b36", + }, + tab_selected = { + fg = "#fdf6e3", + bg = "#002b36", + --fg = tabline_sel_bg, + }, + tab_close = { + fg = "#fdf6e3", + bg = "#002b36", + }, + close_button = { + fg = "#fdf6e3", + bg = "#002b36", + }, + close_button_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + close_button_selected = { + fg = "#fdf6e3", + bg = "#002b36", + }, + buffer_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + buffer_selected = { + fg = "002b36", + bg = "#fdf6e3", + bold = true, + italic = true, + }, + numbers = { + fg = "#fdf6e3", + bg = "#002b36", + }, + numbers_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + numbers_selected = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + diagnostic = { + fg = "#fdf6e3", + bg = "#002b36", + }, + diagnostic_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + diagnostic_selected = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + hint = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + hint_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + hint_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + hint_diagnostic = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + hint_diagnostic_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + hint_diagnostic_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + info = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + info_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + info_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + info_diagnostic = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + info_diagnostic_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + info_diagnostic_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + warning = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + warning_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + warning_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + warning_diagnostic = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + warning_diagnostic_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + warning_diagnostic_selected = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + error = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + }, + error_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + error_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + error_diagnostic = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + }, + error_diagnostic_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + error_diagnostic_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + modified = { + fg = "#fdf6e3", + bg = "#002b36", + }, + modified_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + modified_selected = { + fg = "#fdf6e3", + bg = "#002b36", + }, + duplicate_selected = { + fg = "#fdf6e3", + bg = "#002b36", + italic = true, + }, + duplicate_visible = { + fg = "#fdf6e3", + bg = "#002b36", + italic = true + }, + duplicate = { + fg = "#fdf6e3", + bg = "#002b36", + italic = true + }, + separator_selected = { + fg = "#fdf6e3", + bg = "#002b36", + }, + separator_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + separator = { + fg = "#fdf6e3", + bg = "#002b36", + }, + indicator_selected = { + fg = "#fdf6e3", + bg = "#002b36", + }, + pick_selected = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + pick_visible = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + pick = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + --offset_separator = { + -- fg = win_separator_fg, + -- bg = separator_background_color, + --}, + } +}) diff --git a/lua/plugins/bufferline.lua-202209041657.backup b/lua/plugins/bufferline.lua-202209041657.backup new file mode 100644 index 0000000..1d45e5f --- /dev/null +++ b/lua/plugins/bufferline.lua-202209041657.backup @@ -0,0 +1,322 @@ +require("bufferline").setup({ + options = { + numbers = "buffer_id", -- | "ordinal" | "buffer_id" | "both" | "none" | function({ ordinal, id, lower, raise }): string, + close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" + right_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" + left_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" + middle_mouse_command = nil, -- can be a string | function, see "Mouse actions" + --indicator = { + -- icon = '', -- this should be omitted if indicator style is not 'icon' + -- style = 'icon', -- | 'underline' | 'none', + --}, + --indicator_icon = " ", + --left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions" + modified_icon = '●', + left_trunc_marker = "", + right_trunc_marker = "", + show_buffer_close_icons = true, + --diagnostics = "nvim_lsp", + diagnostics = false, --"nvim_lsp", --false, -- | "nvim_lsp" | "coc", + diagnostics_update_in_insert = false, + buffer_close_icon = "", + separator_style = "slant", + enforce_regular_tabs = true, + always_show_bufferline = true, + max_name_length = 25, + offsets = { + { + filetype = "NvimTree", + text = "File Explorer", + highlight = "StatusLine", + text_align = "center", + }, + }, + custom_areas = { + right = function() + local result = {} + local error = vim.diagnostic.get_count(0, [[Error]]) + local warning = vim.diagnostic.get_count(0, [[Warning]]) + local info = vim.diagnostic.get_count(0, [[Information]]) + local hint = vim.diagnostic.get_count(0, [[Hint]]) + + if error ~= 0 then + result[1] = { text = " " .. error, fg = "#EC5241" } + end + + if warning ~= 0 then + result[2] = { text = " " .. warning, fg = "#EFB839" } + end + + if hint ~= 0 then + result[3] = { text = " " .. hint, fg = "#A3BA5E" } + end + + if info ~= 0 then + result[4] = { text = " " .. info, fg = "#7EA9A7" } + end + + return result + end, + }, + }, + highlights = { + background = { + fg = "#fdf6e3", + bg = "#002b36", + }, + tab = { + fg = "#fdf6e3", + bg = "#002b36", + }, + tab_selected = { + fg = tabline_sel_bg, + bg = "#002b36", + }, + tab_close = { + fg = "#fdf6e3", + bg = "#002b36", + }, + close_button = { + fg = "#fdf6e3", + bg = "#002b36", + }, + close_button_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + close_button_selected = { + fg = "#fdf6e3", + bg = "#002b36", + }, + buffer_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + buffer_selected = { + fg = normal_fg, + bg = "#002b36", + bold = true, + italic = true, + }, + numbers = { + fg = "#fdf6e3", + bg = "#002b36", + }, + numbers_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + numbers_selected = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + diagnostic = { + fg = "#fdf6e3", + bg = "#002b36", + }, + diagnostic_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + diagnostic_selected = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + hint = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + hint_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + hint_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + hint_diagnostic = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + hint_diagnostic_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + hint_diagnostic_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + info = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + info_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + info_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + info_diagnostic = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + info_diagnostic_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + info_diagnostic_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + warning = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + warning_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + warning_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + warning_diagnostic = { + fg = "#fdf6e3", + sp = "#002b36", + bg = "#002b36", + }, + warning_diagnostic_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + warning_diagnostic_selected = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + error = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + }, + error_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + error_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + error_diagnostic = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + }, + error_diagnostic_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + error_diagnostic_selected = { + fg = "#fdf6e3", + bg = "#002b36", + sp = "#002b36", + bold = true, + italic = true, + }, + modified = { + fg = "#fdf6e3", + bg = "#002b36", + }, + modified_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + modified_selected = { + fg = "#fdf6e3", + bg = "#002b36", + }, + duplicate_selected = { + fg = "#fdf6e3", + bg = "#002b36", + italic = true, + }, + duplicate_visible = { + fg = "#fdf6e3", + bg = "#002b36", + italic = true + }, + duplicate = { + fg = "#fdf6e3", + bg = "#002b36", + italic = true + }, + separator_selected = { + fg = "#fdf6e3", + bg = "#002b36", + }, + separator_visible = { + fg = "#fdf6e3", + bg = "#002b36", + }, + separator = { + fg = "#fdf6e3", + bg = "#002b36", + }, + indicator_selected = { + fg = "#fdf6e3", + bg = "#002b36", + }, + pick_selected = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + pick_visible = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + pick = { + fg = "#fdf6e3", + bg = "#002b36", + bold = true, + italic = true, + }, + --offset_separator = { + -- fg = win_separator_fg, + -- bg = separator_background_color, + --}, + } +}) diff --git a/lua/plugins/cmp.lua b/lua/plugins/cmp.lua new file mode 100644 index 0000000..39c08d7 --- /dev/null +++ b/lua/plugins/cmp.lua @@ -0,0 +1,134 @@ +local cmp_status_ok, cmp = pcall(require, "cmp") +if not cmp_status_ok then + return +end + +local lspkind = require("lspkind") +cmp.setup({ + formatting = { + format = lspkind.cmp_format({ + mode = "symbol", -- show only symbol annotations + maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) + ellipsis_char = "...", -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) + + -- The function below will be called before any actual modifications from lspkind + -- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30)) + before = function(entry, vim_item) + --... + return vim_item + end, + }), + }, +}) + +require("luasnip/loaders/from_vscode").lazy_load() + +-- פּ ﯟ some other good icons +local kind_icons = { + Text = "", + Method = "", + Function = "", + Constructor = "⚙️", + Field = "", + Variable = "", + Class = "ﴯ", + Interface = "", + Module = "", + Property = "ﰠ", + Unit = "", + Value = "", + Enum = "", + Keyword = "", + Snippet = "", + Color = "", + File = "", + Reference = "", + Folder = "", + EnumMember = "", + Constant = "", + Struct = "", + Event = "", + Operator = "", + TypeParameter = "", +} + +-- find more here: https://www.nerdfonts.com/cheat-sheet + +cmp.setup({ + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + ["<C-d>"] = cmp.mapping.scroll_docs(-4), + ["<C-f>"] = cmp.mapping.scroll_docs(4), + ["<C-Space>"] = cmp.mapping.complete(), + ["<C-e>"] = cmp.mapping.close(), + ["<CR>"] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }), + }), + sources = cmp.config.sources({ + { name = "path" }, + { name = "nvim_lsp", keyword_length = 3 }, + { name = "buffer", keyword_length = 3 }, + { name = "luasnip", keyword_length = 4 }, + { name = "cmdline", keyword_pattern = [=[[^[:blank:]\!]*]=], keyword_length = 3 }, + --{ name = "cmdline", keyword_pattern = [=[[^[:blank:]\!]*]=] }, --exclamation mark hangs a bit without this + --{name = 'luasnip', keyword_length = 2}, + }), + formatting = { + fields = { "kind", "abbr", "menu" }, + format = function(entry, vim_item) + -- Kind icons + vim_item.kind = string.format("%s", kind_icons[vim_item.kind]) + -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind + vim_item.menu = ({ + nvim_lsp = "[LSP]", + luasnip = "[Snippet]", + buffer = "[Buffer]", + path = "[Path]", + })[entry.source.name] + return vim_item + end, + }, + confirm_opts = { + behavior = cmp.ConfirmBehavior.Replace, + select = false, + }, + window = { + documentation = { + border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" }, + }, + }, + experimental = { + ghost_text = true, + native_menu = false, + --view = { + -- entries = "native" + --}, + }, +}) + +vim.cmd([[ + set completeopt=menuone,noinsert,noselect + highlight! default link CmpItemKind CmpItemMenuDefault +]]) + +cmp.setup.cmdline("/", { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = "buffer" }, + }, +}) + +cmp.setup.cmdline(":", { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = "path" }, + }, { + { name = "cmdline" }, + }), +}) diff --git a/lua/plugins/colorizer.lua b/lua/plugins/colorizer.lua new file mode 100644 index 0000000..14d25e2 --- /dev/null +++ b/lua/plugins/colorizer.lua @@ -0,0 +1,6 @@ +local status, colorizer = pcall(require, "colorizer") +if (not status) then return end + +colorizer.setup({ + '*'; +}) diff --git a/lua/plugins/colorscheme.lua b/lua/plugins/colorscheme.lua new file mode 100644 index 0000000..a7653e2 --- /dev/null +++ b/lua/plugins/colorscheme.lua @@ -0,0 +1,29 @@ +-- Colorscheme +-- ayu gruvbox molokai onedark srcery everblush vscode edge nightfly +local colorscheme = "onedark" +local status_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme) +if not status_ok then + vim.notify("colorscheme " .. colorscheme .. " not found!") + return +end + +vim.api.nvim_command("syntax on") +vim.api.nvim_command("highlight Normal guibg=none") +vim.api.nvim_command("highlight SignColumn guibg=none") +vim.api.nvim_command("highlight TabLine guibg=#333842 gui=bold") +--vim.api.nvim_command("highlight TabLine guibg=none gui=bold") +vim.api.nvim_command("highlight StatusLine guibg=#333842 gui=bold") +--vim.api.nvim_command("highlight StatusLine guibg=#333842 guifg=#d6d3ea gui=bold") +--vim.api.nvim_command("highlight StatusLine guibg=none gui=bold") +--vim.api.nvim_command("highlight TabLineNC guibg=none gui=bold") +--vim.api.nvim_command("highlight TabLineSel guibg=#bd93f9 gui=bold") +vim.api.nvim_command("highlight TabLineSel guibg=#333842 gui=bold") +vim.api.nvim_command("highlight TabLineFill guibg=none gui=bold") +vim.api.nvim_command("highlight WinBar guibg=none gui=bold") +--vim.api.nvim_command("highlight StatusLine guibg=none gui=bold") +--vim.api.nvim_command("highlight StatusLineNC guibg=none gui=bold") +--vim.api.nvim_command("highlight StatusLineNC guibg=none ctermfg=Cyan guifg=#80a0ff gui=bold") + +require("notify").setup({ + background_colour = "#000000", +}) diff --git a/lua/plugins/feline.lua b/lua/plugins/feline.lua new file mode 100644 index 0000000..f259108 --- /dev/null +++ b/lua/plugins/feline.lua @@ -0,0 +1,726 @@ +require('feline').setup() +--local lsp = require("feline.providers.lsp") +--local vi_mode_utils = require("feline.providers.vi_mode") +--local navic = require("nvim-navic") +-- +--local force_inactive = { +-- filetypes = {}, +-- buftypes = {}, +-- bufnames = {}, +--} +-- +--local winbar_components = { +-- active = { {}, {}, {} }, +-- inactive = { {}, {}, {} }, +--} +-- +--local components = { +-- active = { {}, {}, {} }, +-- inactive = { {}, {}, {} }, +--} +-- +--local colors = { +-- bg = "#282828", +-- black = "#282828", +-- yellow = "#d8a657", +-- cyan = "#89b482", +-- oceanblue = "#45707a", +-- green = "#a9b665", +-- orange = "#e78a4e", +-- violet = "#d3869b", +-- magenta = "#c14a4a", +-- white = "#a89984", +-- fg = "#a89984", +-- skyblue = "#7daea3", +-- red = "#ea6962", +--} +-- +--local vi_mode_colors = { +-- NORMAL = "green", +-- OP = "green", +-- INSERT = "red", +-- CONFIRM = "red", +-- VISUAL = "skyblue", +-- LINES = "skyblue", +-- BLOCK = "skyblue", +-- REPLACE = "violet", +-- ["V-REPLACE"] = "violet", +-- ENTER = "cyan", +-- MORE = "cyan", +-- SELECT = "orange", +-- COMMAND = "green", +-- SHELL = "green", +-- TERM = "green", +-- NONE = "yellow", +--} +-- +--local vi_mode_text = { +-- NORMAL = "<|", +-- OP = "<|", +-- INSERT = "|>", +-- VISUAL = "<>", +-- LINES = "<>", +-- BLOCK = "<>", +-- REPLACE = "<>", +-- ["V-REPLACE"] = "<>", +-- ENTER = "<>", +-- MORE = "<>", +-- SELECT = "<>", +-- COMMAND = "<|", +-- SHELL = "<|", +-- TERM = "<|", +-- NONE = "<>", +-- CONFIRM = "|>", +--} +-- +--local buffer_not_empty = function() +-- if vim.fn.empty(vim.fn.expand("%:t")) ~= 1 then +-- return true +-- end +-- return false +--end +-- +--local checkwidth = function() +-- local squeeze_width = vim.fn.winwidth(0) / 2 +-- if squeeze_width > 40 then +-- return true +-- end +-- return false +--end +-- +--force_inactive.filetypes = { +-- "NvimTree", +-- "dbui", +-- "packer", +-- "startify", +-- "fugitive", +-- "fugitiveblame", +--} +-- +--force_inactive.buftypes = { +-- "terminal", +--} +-- +---- STATUSLINE +---- LEFT +-- +---- vi-mode +--components.active[1][1] = { +-- provider = " NV-IDE ", +-- hl = function() +-- local val = {} +-- +-- val.bg = vi_mode_utils.get_mode_color() +-- val.fg = "black" +-- val.style = "bold" +-- +-- return val +-- end, +-- right_sep = " ", +--} +---- vi-symbol +--components.active[1][2] = { +-- provider = function() +-- return vi_mode_text[vi_mode_utils.get_vim_mode()] +-- end, +-- hl = function() +-- local val = {} +-- val.fg = vi_mode_utils.get_mode_color() +-- val.bg = "bg" +-- val.style = "bold" +-- return val +-- end, +-- right_sep = " ", +--} +---- filename +--components.active[1][3] = { +-- provider = function() +-- return vim.fn.expand("%:F") +-- end, +-- hl = { +-- fg = "white", +-- bg = "bg", +-- style = "bold", +-- }, +--} +---- MID +-- +---- gitBranch +--components.active[2][1] = { +-- provider = "git_branch", +-- hl = { +-- fg = "yellow", +-- bg = "bg", +-- style = "bold", +-- }, +--} +---- diffAdd +--components.active[2][2] = { +-- provider = "git_diff_added", +-- hl = { +-- fg = "green", +-- bg = "bg", +-- style = "bold", +-- }, +--} +---- diffModfified +--components.active[2][3] = { +-- provider = "git_diff_changed", +-- hl = { +-- fg = "orange", +-- bg = "bg", +-- style = "bold", +-- }, +--} +---- diffRemove +--components.active[2][4] = { +-- provider = "git_diff_removed", +-- hl = { +-- fg = "red", +-- bg = "bg", +-- style = "bold", +-- }, +--} +-- +---- RIGHT +-- +---- fileIcon +--components.active[3][1] = { +-- provider = function() +-- local filename = vim.fn.expand("%:t") +-- local extension = vim.fn.expand("%:e") +-- local icon = require("nvim-web-devicons").get_icon(filename, extension) +-- if icon == nil then +-- icon = "" +-- end +-- return icon +-- end, +-- hl = function() +-- local val = {} +-- local filename = vim.fn.expand("%:t") +-- local extension = vim.fn.expand("%:e") +-- local icon, name = require("nvim-web-devicons").get_icon(filename, extension) +-- if icon ~= nil then +-- val.fg = vim.fn.synIDattr(vim.fn.hlID(name), "fg") +-- else +-- val.fg = "white" +-- end +-- val.bg = "bg" +-- val.style = "bold" +-- return val +-- end, +-- right_sep = " ", +--} +---- fileType +--components.active[3][2] = { +-- provider = "file_type", +-- hl = function() +-- local val = {} +-- local filename = vim.fn.expand("%:t") +-- local extension = vim.fn.expand("%:e") +-- local icon, name = require("nvim-web-devicons").get_icon(filename, extension) +-- if icon ~= nil then +-- val.fg = vim.fn.synIDattr(vim.fn.hlID(name), "fg") +-- else +-- val.fg = "white" +-- end +-- val.bg = "bg" +-- val.style = "bold" +-- return val +-- end, +-- right_sep = " ", +--} +---- fileSize +--components.active[3][3] = { +-- provider = "file_size", +-- enabled = function() +-- return vim.fn.getfsize(vim.fn.expand("%:t")) > 0 +-- end, +-- hl = { +-- fg = "skyblue", +-- bg = "bg", +-- style = "bold", +-- }, +-- right_sep = " ", +--} +---- fileFormat +--components.active[3][4] = { +-- provider = function() +-- return "" .. vim.bo.fileformat:upper() .. "" +-- end, +-- hl = { +-- fg = "white", +-- bg = "bg", +-- style = "bold", +-- }, +-- right_sep = " ", +--} +---- fileEncode +--components.active[3][5] = { +-- provider = "file_encoding", +-- hl = { +-- fg = "white", +-- bg = "bg", +-- style = "bold", +-- }, +-- right_sep = " ", +--} +--components.active[3][6] = { +-- provider = "position", +-- hl = { +-- fg = "white", +-- bg = "bg", +-- style = "bold", +-- }, +-- right_sep = " ", +--} +---- linePercent +--components.active[3][7] = { +-- provider = "line_percentage", +-- hl = { +-- fg = "white", +-- bg = "bg", +-- style = "bold", +-- }, +-- right_sep = " ", +--} +---- scrollBar +--components.active[3][8] = { +-- provider = "scroll_bar", +-- hl = { +-- fg = "yellow", +-- bg = "bg", +-- }, +--} +-- +---- INACTIVE +-- +---- fileType +--components.inactive[1][1] = { +-- provider = "file_type", +-- hl = { +-- fg = "black", +-- bg = "cyan", +-- style = "bold", +-- }, +-- left_sep = { +-- str = " ", +-- hl = { +-- fg = "NONE", +-- bg = "cyan", +-- }, +-- }, +-- right_sep = { +-- { +-- str = " ", +-- hl = { +-- fg = "NONE", +-- bg = "cyan", +-- }, +-- }, +-- " ", +-- }, +--} +-- +---- WINBAR +---- LEFT +-- +---- nvimGps +--winbar_components.active[1][1] = { +-- provider = function() +-- return navic.get_location() +-- end, +-- enabled = function() +-- return navic.is_available() +-- end, +-- hl = { +-- fg = "orange", +-- style = "bold", +-- }, +--} +-- +---- MID +-- +---- RIGHT +-- +---- LspName +--winbar_components.active[3][1] = { +-- provider = "lsp_client_names", +-- hl = { +-- fg = "yellow", +-- style = "bold", +-- }, +-- right_sep = " ", +--} +---- diagnosticErrors +--winbar_components.active[3][2] = { +-- provider = "diagnostic_errors", +-- enabled = function() +-- return lsp.diagnostics_exist(vim.diagnostic.severity.ERROR) +-- end, +-- hl = { +-- fg = "red", +-- style = "bold", +-- }, +--} +---- diagnosticWarn +--winbar_components.active[3][3] = { +-- provider = "diagnostic_warnings", +-- enabled = function() +-- return lsp.diagnostics_exist(vim.diagnostic.severity.WARN) +-- end, +-- hl = { +-- fg = "yellow", +-- style = "bold", +-- }, +--} +---- diagnosticHint +--winbar_components.active[3][4] = { +-- provider = "diagnostic_hints", +-- enabled = function() +-- return lsp.diagnostics_exist(vim.diagnostic.severity.HINT) +-- end, +-- hl = { +-- fg = "cyan", +-- style = "bold", +-- }, +--} +---- diagnosticInfo +--winbar_components.active[3][5] = { +-- provider = "diagnostic_info", +-- enabled = function() +-- return lsp.diagnostics_exist(vim.diagnostic.severity.INFO) +-- end, +-- hl = { +-- fg = "skyblue", +-- style = "bold", +-- }, +--} +-- +---- INACTIVE +-- +---- fileType +--winbar_components.inactive[1][1] = { +-- provider = "file_type", +-- hl = { +-- fg = "black", +-- bg = "cyan", +-- style = "bold", +-- }, +-- left_sep = { +-- str = " ", +-- hl = { +-- fg = "NONE", +-- bg = "cyan", +-- }, +-- }, +-- right_sep = { +-- { +-- str = " ", +-- hl = { +-- fg = "NONE", +-- bg = "cyan", +-- }, +-- }, +-- " ", +-- }, +--} +-- +--require("feline").setup({ +-- theme = colors, +-- default_bg = bg, +-- default_fg = fg, +-- vi_mode_colors = vi_mode_colors, +-- components = components, +-- force_inactive = force_inactive, +--}) +-- +--require("feline").winbar.setup({ +-- components = winbar_components, +-- force_inactive = force_inactive, +--}) +----local M = { vi = {} } +---- +---- +----M.vi.text = { +---- n = "NORMAL", +---- no = "NORMAL", +---- i = "INSERT", +---- v = "VISUAL", +---- V = "V-LINE", +---- [""] = "V-BLOCK", +---- c = "COMMAND", +---- cv = "COMMAND", +---- ce = "COMMAND", +---- R = "REPLACE", +---- Rv = "REPLACE", +---- s = "SELECT", +---- S = "SELECT", +---- [""] = "SELECT", +---- t = "TERMINAL", +----} +---- +----M.vi.colors = { +---- n = "FlnViCyan", +---- no = "FlnViCyan", +---- i = "FlnStatus", +---- v = "FlnViMagenta", +---- V = "FlnViMagenta", +---- [""] = "FlnViMagenta", +---- R = "FlnViRed", +---- Rv = "FlnViRed", +---- r = "FlnViBlue", +---- rm = "FlnViBlue", +---- s = "FlnViMagenta", +---- S = "FlnViMagenta", +---- [""] = "FelnMagenta", +---- c = "FlnViYellow", +---- ["!"] = "FlnViBlue", +---- t = "FlnViBlue", +----} +---- +----M.vi.sep = { +---- n = "FlnCyan", +---- no = "FlnCyan", +---- i = "FlnStatusBg", +---- v = "FlnMagenta", +---- V = "FlnMagenta", +---- [""] = "FlnMagenta", +---- R = "FlnRed", +---- Rv = "FlnRed", +---- r = "FlnBlue", +---- rm = "FlnBlue", +---- s = "FlnMagenta", +---- S = "FlnMagenta", +---- [""] = "FelnMagenta", +---- c = "FlnYellow", +---- ["!"] = "FlnBlue", +---- t = "FlnBlue", +----} +---- +----M.icons = { +---- locker = "", -- #f023 +---- page = "☰", -- 2630 +---- line_number = "", -- e0a1 +---- connected = "", -- f817 +---- dos = "", -- e70f +---- unix = "", -- f17c +---- mac = "", -- f179 +---- mathematical_L = "𝑳", +---- vertical_bar = "┃", +---- vertical_bar_thin = "│", +---- left = "", +---- right = "", +---- block = "█", +---- left_filled = "", +---- right_filled = "", +---- slant_left = "", +---- slant_left_thin = "", +---- slant_right = "", +---- slant_right_thin = "", +---- slant_left_2 = "", +---- slant_left_2_thin = "", +---- slant_right_2 = "", +---- slant_right_2_thin = "", +---- left_rounded = "", +---- left_rounded_thin = "", +---- right_rounded = "", +---- right_rounded_thin = "", +---- circle = "●", +----} +---- +----return M +------ Feline statusline definition. +------ +------ Note: This statusline does not define any colors. Instead the statusline is +------ built on custom highlight groups that I define. The colors for these +------ highlight groups are pulled from the current colorscheme applied. Check the +------ file: `lua/eden/modules/ui/colors.lua` to see how they are defined. +---- +----local u = require("eden.modules.ui.feline.util") +----local fmt = string.format +---- +------ "┃", "█", "", "", "", "", "", "", "●" +---- +----local get_diag = function(str) +---- local count = vim.lsp.diagnostic.get_count(0, str) +---- return (count > 0) and " " .. count .. " " or "" +----end +---- +----local function vi_mode_hl() +---- return u.vi.colors[vim.fn.mode()] or "FlnViBlack" +----end +---- +----local function vi_sep_hl() +---- return u.vi.sep[vim.fn.mode()] or "FlnBlack" +----end +---- +----local c = { +---- vimode = { +---- provider = function() +---- return string.format(" %s ", u.vi.text[vim.fn.mode()]) +---- end, +---- hl = vi_mode_hl, +---- right_sep = { str = " ", hl = vi_sep_hl }, +---- }, +---- gitbranch = { +---- provider = "git_branch", +---- icon = " ", +---- hl = "FlnGitBranch", +---- right_sep = { str = " ", hl = "FlnGitBranch" }, +---- enabled = function() +---- return vim.b.gitsigns_status_dict ~= nil +---- end, +---- }, +---- file_type = { +---- provider = function() +---- return fmt(" %s ", vim.bo.filetype:upper()) +---- end, +---- hl = "FlnAlt", +---- }, +---- fileinfo = { +---- provider = { name = "file_info", opts = { type = "relative" } }, +---- hl = "FlnAlt", +---- left_sep = { str = " ", hl = "FlnAltSep" }, +---- right_sep = { str = "", hl = "FlnAltSep" }, +---- }, +---- file_enc = { +---- provider = function() +---- local os = u.icons[vim.bo.fileformat] or "" +---- return fmt(" %s %s ", os, vim.bo.fileencoding) +---- end, +---- hl = "StatusLine", +---- left_sep = { str = u.icons.left_filled, hl = "FlnAltSep" }, +---- }, +---- cur_position = { +---- provider = function() +---- -- TODO: What about 4+ diget line numbers? +---- return fmt(" %3d:%-2d ", unpack(vim.api.nvim_win_get_cursor(0))) +---- end, +---- hl = vi_mode_hl, +---- left_sep = { str = u.icons.left_filled, hl = vi_sep_hl }, +---- }, +---- cur_percent = { +---- provider = function() +---- return " " .. require("feline.providers.cursor").line_percentage() .. " " +---- end, +---- hl = vi_mode_hl, +---- left_sep = { str = u.icons.left, hl = vi_mode_hl }, +---- }, +---- default = { -- needed to pass the parent StatusLine hl group to right hand side +---- provider = "", +---- hl = "StatusLine", +---- }, +---- lsp_status = { +---- provider = function() +---- return require("lsp-status").status() +---- end, +---- hl = "FlnStatus", +---- left_sep = { str = "", hl = "FlnStatusBg", always_visible = true }, +---- right_sep = { str = "", hl = "FlnErrorStatus", always_visible = true }, +---- }, +---- lsp_error = { +---- provider = function() +---- return get_diag("Error") +---- end, +---- hl = "FlnError", +---- right_sep = { str = "", hl = "FlnWarnError", always_visible = true }, +---- }, +---- lsp_warn = { +---- provider = function() +---- return get_diag("Warning") +---- end, +---- hl = "FlnWarn", +---- right_sep = { str = "", hl = "FlnInfoWarn", always_visible = true }, +---- }, +---- lsp_info = { +---- provider = function() +---- return get_diag("Information") +---- end, +---- hl = "FlnInfo", +---- right_sep = { str = "", hl = "FlnHintInfo", always_visible = true }, +---- }, +---- lsp_hint = { +---- provider = function() +---- return get_diag("Hint") +---- end, +---- hl = "FlnHint", +---- right_sep = { str = "", hl = "FlnBgHint", always_visible = true }, +---- }, +---- +---- in_fileinfo = { +---- provider = "file_info", +---- hl = "StatusLine", +---- }, +---- in_position = { +---- provider = "position", +---- hl = "StatusLine", +---- }, +----} +---- +----local active = { +---- { -- left +---- c.vimode, +---- c.gitbranch, +---- c.fileinfo, +---- c.default, -- must be last +---- }, +---- { -- right +---- c.lsp_status, +---- c.lsp_error, +---- c.lsp_warn, +---- c.lsp_info, +---- c.lsp_hint, +---- c.file_type, +---- c.file_enc, +---- c.cur_position, +---- c.cur_percent, +---- }, +----} +---- +----local inactive = { +---- { c.in_fileinfo }, -- left +---- { c.in_position }, -- right +----} +---- +------ -- Define autocmd that generates the highlight groups from the new colorscheme +------ -- Then reset the highlights for feline +------ edn.aug.FelineColorschemeReload = { +------ { +------ { "SessionLoadPost", "ColorScheme" }, +------ function() +------ require("eden.modules.ui.feline.colors").gen_highlights() +------ -- This does not look like it is required. If this is called I see the ^^^^^^ that +------ -- seperates the two sides of the bar. Since the entire config uses highlight groups +------ -- all that is required is to redefine them. +------ -- require("feline").reset_highlights() +------ end, +------ }, +------ } +---- +----require("feline").setup({ +---- components = { active = active, inactive = inactive }, +---- highlight_reset_triggers = {}, +---- force_inactive = { +---- filetypes = { +---- "NvimTree", +---- "packer", +---- "dap-repl", +---- "dapui_scopes", +---- "dapui_stacks", +---- "dapui_watches", +---- "dapui_repl", +---- "LspTrouble", +---- "qf", +---- "help", +---- }, +---- buftypes = { "terminal" }, +---- bufnames = {}, +---- }, +---- disable = { +---- filetypes = { +---- "dashboard", +---- "startify", +---- }, +---- }, +----}) diff --git a/lua/plugins/floaterm.lua b/lua/plugins/floaterm.lua new file mode 100644 index 0000000..ea554af --- /dev/null +++ b/lua/plugins/floaterm.lua @@ -0,0 +1,6 @@ +vim.cmd([[ + let g:floaterm_keymap_new = '<leader>t' + let g:floaterm_keymap_prev = '<leader>tn' + let g:floaterm_keymap_next = '<leader>tp' + let g:floaterm_keymap_toggle = '<leader>tt' +]]) diff --git a/lua/plugins/fzf.lua b/lua/plugins/fzf.lua new file mode 100644 index 0000000..4195cd6 --- /dev/null +++ b/lua/plugins/fzf.lua @@ -0,0 +1,66 @@ +vim.cmd([[ + " FZF fuzzy finder + "--------------------------------------- + " Enable per-command history. + " CTRL-N and CTRL-P will be automatically bound to next-history and + " previous-history instead of down and up. If you don't like the change, + " explicitly bind the keys to down and up in your $FZF_DEFAULT_OPTS. + let g:fzf_history_dir = '~/.local/share/fzf-history' + map <leader>fz :FZF<CR> + map <leader>a :Files<CR> + map <leader>l :Lines<CR> + map <leader>L :BLines<CR> + map <leader>B :Buffers<CR> + map <leader>h :History:<CR> + nnoremap <leader>g :Rg<CR> + "nnoremap <leader>t :Tags<CR> + nnoremap <leader>m :Marks<CR> + " This is the default extra key bindings + let g:fzf_action = { + \ 'ctrl-t': 'tab split', + \ 'ctrl-x': 'split', + \ 'ctrl-y': 'vsplit' } + let g:fzf_tags_command = 'ctags -R' + " Border color + let g:fzf_layout = {'up':'~90%', 'window': { 'width': 0.8, 'height': 0.8,'yoffset':0.5,'xoffset': 0.5, 'highlight': 'Todo', 'border': 'sharp' } } + let $FZF_DEFAULT_OPTS = '--layout=reverse --info=inline' + let $FZF_DEFAULT_COMMAND="rg --files --hidden" + " Customize fzf colors to match your color scheme + let 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'] } + " Get Files + command! -bang -nargs=? -complete=dir Files + \ call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse', '--info=inline']}), <bang>0) + " Get text in files with Rg + command! -bang -nargs=* Rg + \ call fzf#vim#grep( + \ 'rg --column --line-number --no-heading --color=always --smart-case '.shellescape(<q-args>), 1, + \ fzf#vim#with_preview(), <bang>0) + " Ripgrep advanced + function! RipgrepFzf(query, fullscreen) + let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case %s || true' + let initial_command = printf(command_fmt, shellescape(a:query)) + let reload_command = printf(command_fmt, '{q}') + let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]} + call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen) + endfunction + command! -nargs=* -bang RG call RipgrepFzf(<q-args>, <bang>0) + " Git grep + command! -bang -nargs=* GGrep + \ call fzf#vim#grep( + \ 'git grep --line-number '.shellescape(<q-args>), 0, + \ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0) + command! -bang FM call fzf#run(fzf#wrap({'source': 'cat ~/.fzf-marks | sed "s/.*: \(.*\)$/\1/" | sed "s#~#${HOME}#"', 'sink': 'lcd'}, <bang>0)) +]]) diff --git a/lua/plugins/git.lua b/lua/plugins/git.lua new file mode 100644 index 0000000..963f7f9 --- /dev/null +++ b/lua/plugins/git.lua @@ -0,0 +1,11 @@ +local status, git = pcall(require, "git") +if (not status) then return end + +git.setup({ + keymaps = { + -- Open blame window + blame = "<Leader>gb", + -- Open file/folder in git repository + browse = "<Leader>go", + } +}) diff --git a/lua/plugins/gitsigns.lua b/lua/plugins/gitsigns.lua new file mode 100644 index 0000000..53d1a1e --- /dev/null +++ b/lua/plugins/gitsigns.lua @@ -0,0 +1 @@ +require('gitsigns').setup {} diff --git a/lua/plugins/heirline.backup.lua b/lua/plugins/heirline.backup.lua new file mode 100644 index 0000000..d65de92 --- /dev/null +++ b/lua/plugins/heirline.backup.lua @@ -0,0 +1,733 @@ +local conditions = require("heirline.conditions") +local utils = require("heirline.utils") + +require("nvim-gps").setup({ + icons = { + ["class-name"] = " ", + ["function-name"] = " ", + ["method-name"] = " ", + ["container-name"] = "炙", + ["tag-name"] = "炙", + }, +}) + +vim.o.laststatus = 3 + +local colors = { + bg = "#333842", + brown = "#504945", + white = "#f8f8f0", + grey = "#8F908A", + black = "#000000", + pink = "#f92672", + green = "#a6e22e", + blue = "#66d9ef", + yellow = "#e6db74", + orange = "#fd971f", + purple = "#ae81ff", + red = "#e95678", + diag = { + warn = utils.get_highlight("DiagnosticSignWarn").fg, + error = utils.get_highlight("DiagnosticSignError").fg, + hint = utils.get_highlight("DiagnosticSignHint").fg, + info = utils.get_highlight("DiagnosticSignInfo").fg, + }, + git = { + del = "#e95678", + add = "#a6e22e", + change = "#ae81ff", + }, +} + +local ViMode = { + -- get vim current mode, this information will be required by the provider + -- and the highlight functions, so we compute it only once per component + -- evaluation and store it as a component attribute + init = function(self) + self.mode = vim.fn.mode(1) -- :h mode() + end, + -- Now we define some dictionaries to map the output of mode() to the + -- corresponding string and color. We can put these into `static` to compute + -- them at initialisation time. + static = { + mode_names = { + -- change the strings if you like it vvvvverbose! + ["n"] = "NORMAL ", + ["no"] = "N·OPERATOR PENDING ", + ["v"] = "VISUAL ", + ["V"] = "V·LINE ", + [""] = "V·BLOCK ", + ["s"] = "SELECT ", + ["S"] = "S·LINE ", + [""] = "S·BLOCK ", + ["i"] = "INSERT ", + ["R"] = "REPLACE ", + ["Rv"] = "V·REPLACE ", + ["c"] = "COMMAND ", + ["cv"] = "VIM EX ", + ["ce"] = "EX ", + ["r"] = "PROMPT ", + ["rm"] = "MORE ", + ["r?"] = "CONFIRM ", + ["!"] = "SHELL ", + ["t"] = "TERMINAL ", + }, + mode_colors = { + n = colors.green, + i = colors.pink, + v = colors.blue, + V = colors.blue, + [""] = colors.blue, + c = colors.red, + s = colors.purple, + S = colors.purple, + [""] = colors.purple, + R = colors.orange, + r = colors.orange, + ["!"] = colors.red, + t = colors.red, + }, + }, + -- We can now access the value of mode() that, by now, would have been + -- computed by `init()` and use it to index our strings dictionary. + -- note how `static` fields become just regular attributes once the + -- component is instantiated. + -- To be extra meticulous, we can also add some vim statusline syntax to + -- control the padding and make sure our string is always at least 2 + -- characters long. Plus a nice Icon. + provider = function(self) + return " %2(" .. self.mode_names[self.mode] .. "%)" + end, + -- Same goes for the highlight. Now the foreground will change according to the current mode. + hl = function(self) + local mode = self.mode:sub(1, 1) -- get only the first mode character + return { bg = self.mode_colors[mode], fg = colors.bg, bold = true } + end, +} + +local FileNameBlock = { + -- let's first set up some attributes needed by this component and it's children + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, +} +-- We can now define some children separately and add them later + +local FileIcon = { + init = function(self) + local filename = self.filename + local extension = vim.fn.fnamemodify(filename, ":e") + self.icon, self.icon_color = + require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) + end, + provider = function(self) + return self.icon and (self.icon .. " ") + end, + hl = function(self) + return { fg = self.icon_color, bg = colors.bg } + end, +} + +local FileName = { + provider = function(self) + -- first, trim the pattern relative to the current directory. For other + -- options, see :h filename-modifers + local filename = vim.fn.fnamemodify(self.filename, ":.") + if filename == "" then + return "[No Name]" + end + -- now, if the filename would occupy more than 1/4th of the available + -- space, we trim the file path to its initials + -- See Flexible Components section below for dynamic truncation + if not conditions.width_percent_below(#filename, 0.25) then + filename = vim.fn.pathshorten(filename) + end + return filename + end, + hl = { fg = utils.get_highlight("Directory").fg, bg = colors.bg }, +} + +local FileFlags = { + { + provider = function() + if vim.bo.modified then + return " [+]" + end + end, + hl = { fg = colors.green, bg = colors.bg }, + }, + { + provider = function() + if not vim.bo.modifiable or vim.bo.readonly then + return "" + end + end, + hl = { fg = colors.orange }, + }, +} + +-- Now, let's say that we want the filename color to change if the buffer is +-- modified. Of course, we could do that directly using the FileName.hl field, +-- but we'll see how easy it is to alter existing components using a "modifier" +-- component + +local FileNameModifer = { + hl = function() + if vim.bo.modified then + -- use `force` because we need to override the child's hl foreground + return { fg = colors.cyan, bold = true, force = true, bg = colors.bg } + end + end, +} + +-- let's add the children to our FileNameBlock component +FileNameBlock = utils.insert( + FileNameBlock, + FileIcon, + utils.insert(FileNameModifer, FileName), -- a new table where FileName is a child of FileNameModifier + unpack(FileFlags), -- A small optimisation, since their parent does nothing + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) + +local Diagnostics = { + condition = conditions.has_diagnostics, + static = { + error_icon = vim.fn.sign_getdefined("DiagnosticSignError")[1].text, + warn_icon = vim.fn.sign_getdefined("DiagnosticSignWarn")[1].text, + info_icon = vim.fn.sign_getdefined("DiagnosticSignInfo")[1].text, + hint_icon = vim.fn.sign_getdefined("DiagnosticSignHint")[1].text, + }, + init = function(self) + self.errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }) + self.warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) + self.hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT }) + self.info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO }) + end, + { + provider = function(self) + -- 0 is just another output, we can decide to print it or not! + return self.errors > 0 and (self.error_icon .. self.errors .. " ") + end, + hl = { fg = colors.diag.error, bg = colors.bg }, + }, + { + provider = function(self) + return self.warnings > 0 and (self.warn_icon .. self.warnings .. " ") + end, + hl = { fg = colors.diag.warn, bg = colors.bg }, + }, + { + provider = function(self) + return self.info > 0 and (self.info_icon .. self.info .. " ") + end, + hl = { fg = colors.diag.info, bg = colors.bg }, + }, + { + provider = function(self) + return self.hints > 0 and (self.hint_icon .. self.hints) + end, + hl = { fg = colors.diag.hint, bg = colors.bg }, + }, +} + +local Git = { + condition = conditions.is_git_repo, + init = function(self) + self.status_dict = vim.b.gitsigns_status_dict + self.has_changes = self.status_dict.added ~= 0 or self.status_dict.removed ~= 0 or self.status_dict.changed ~= 0 + end, + hl = { fg = colors.orange, bg = colors.bg }, + { + -- git branch name + provider = function(self) + return " " .. self.status_dict.head + end, + hl = { bold = true, bg = colors.bg }, + }, + -- You could handle delimiters, icons and counts similar to Diagnostics + { + condition = function(self) + return self.has_changes + end, + provider = " ", + }, + { + provider = function(self) + local count = self.status_dict.added or 0 + return count > 0 and (" " .. count) + end, + hl = { fg = colors.git.add, bg = colors.bg }, + }, + { + provider = function(self) + local count = self.status_dict.removed or 0 + return count > 0 and (" " .. count) + end, + hl = { fg = colors.git.del, bg = colors.bg }, + }, + { + provider = function(self) + local count = self.status_dict.changed or 0 + return count > 0 and (" " .. count) + end, + hl = { fg = colors.git.change, bg = colors.bg }, + }, +} + +local WorkDir = { + provider = function() + local icon = " " + local cwd = vim.fn.getcwd(0) + cwd = vim.fn.fnamemodify(cwd, ":~") + if not conditions.width_percent_below(#cwd, 0.25) then + cwd = vim.fn.pathshorten(cwd) + end + local trail = cwd:sub(-1) == "/" and "" or "/" + return icon .. cwd .. trail + end, + hl = { fg = colors.blue, bold = true, bg = colors.bg }, +} + +local TerminalName = { + -- we could add a condition to check that buftype == 'terminal' + -- or we could do that later (see #conditional-statuslines below) + provider = function() + local tname, _ = vim.api.nvim_buf_get_name(0):gsub(".*:", "") + return " " .. tname + end, + hl = { bold = true, bg = colors.bg }, +} + +local Ruler = { + -- %l = current line number + -- %L = number of lines in the buffer + -- %c = column number + -- %P = percentage through file of displayed window + provider = "%7 %p%% Ln %l, Col %c", +} + +local Align = { provider = "%=", hl = { bg = colors.bg } } +local Space = { provider = " " } + +local FileInfoBlock = { + -- let's first set up some attributes needed by this component and it's children + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, +} + +local FileType = { + provider = function() + return vim.bo.filetype + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +local FileEncoding = { + provider = function() + local enc = (vim.bo.fenc ~= "" and vim.bo.fenc) or vim.o.enc -- :h 'enc' + return enc:upper() + end, +} + +FileInfoBlock = utils.insert( + FileInfoBlock, + FileEncoding, + Space, + FileIcon, + FileType, + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) + +local FileNameShort = { + provider = function(self) + -- first, trim the pattern relative to the current directory. For other + -- options, see :h filename-modifers + local filename = vim.fn.fnamemodify(self.filename, ":t") + if filename == "" then + return "[No Name]" + end + return filename + end, + hl = { fg = colors.gray, bg = colors.bg }, +} + +local FileNameShortBlock = { + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, +} + +FileNameShortBlock = utils.insert( + FileNameShortBlock, + FileIcon, + FileNameShort, + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) + +local Gps = { + condition = require("nvim-gps").is_available, + provider = function() + local loc = require("nvim-gps").get_location() + if loc == "" then + return "" + end + return "> " .. loc + end, + hl = { fg = colors.gray, bg = colors.bg }, +} + +local DefaultStatusline = { + ViMode, + Space, + FileNameBlock, + Space, + Diagnostics, + Align, + Ruler, + Space, + FileInfoBlock, + Space, + Git, +} + +local SpecialStatusline = { + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + FileType, + Space, + Align, +} + +local TerminalStatusline = { + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + TerminalName, + Align, +} + +local StatusLines = { + fallthrough = false, + SpecialStatusline, + TerminalStatusline, + DefaultStatusline, +} + +local GSpace = { provider = " ", hl = { bg = colors.bg } } + +local WinBars = { + fallthrough = false, + { + -- Hide the winbar for special buffers + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix", "nofile", "promt" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + provider = "", + }, + { + -- An inactive winbar for regular files + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) and not conditions.is_active() + end, + utils.surround( + { "", "" }, + colors.bright_bg, + { hl = { fg = "gray", force = true }, GSpace, TerminalName, Align } + ), + }, + { + -- A special winbar for terminals + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + utils.surround({ "", "" }, colors.dark_red, { + GSpace, + TerminalName, + Align, + }), + }, + { + -- An inactive winbar for regular files + condition = function() + return not conditions.is_active() + end, + utils.surround( + { "", "" }, + colors.bright_bg, + { hl = { fg = "gray", force = true }, GSpace, FileNameShortBlock, Align } + ), + }, + -- A winbar for regular files + { GSpace, FileNameShortBlock, GSpace, Gps, Align }, +} + +vim.api.nvim_create_autocmd("User", { + pattern = "HeirlineInitWinbar", + callback = function(args) + local buf = args.buf + local buftype = vim.tbl_contains({ "prompt", "nofile", "help", "quickfix" }, vim.bo[buf].buftype) + local filetype = vim.tbl_contains({ "gitcommit", "fugitive" }, vim.bo[buf].filetype) + if buftype or filetype then + vim.opt_local.winbar = nil + end + end, +}) + +-- we redefine the filename component, as we probably only want the tail and not the relative path +local TablineFileName = { + provider = function(self) + -- self.filename will be defined later, just keep looking at the example! + local filename = self.filename + filename = filename == "" and "[No Name]" or vim.fn.fnamemodify(filename, ":t") + return filename + end, + hl = function(self) + return { bold = self.is_active or self.is_visible, italic = true } + end, +} + +local TablineFileFlags = { + { + provider = function(self) + if vim.bo[self.bufnr].modified then + return " [+]" + end + end, + hl = { fg = colors.green }, + }, + { + provider = function(self) + if not vim.bo[self.bufnr].modifiable or vim.bo[self.bufnr].readonly then + return "" + end + end, + hl = { fg = "orange" }, + }, +} + +local TablineDiagnostics = { + static = { + error_icon = " " .. vim.fn.sign_getdefined("DiagnosticSignError")[1].text, + warn_icon = " " .. vim.fn.sign_getdefined("DiagnosticSignWarn")[1].text, + info_icon = " " .. vim.fn.sign_getdefined("DiagnosticSignInfo")[1].text, + hint_icon = " " .. vim.fn.sign_getdefined("DiagnosticSignHint")[1].text, + }, + init = function(self) + self.errors = #vim.diagnostic.get(self.bufnr, { severity = vim.diagnostic.severity.ERROR }) + self.warnings = #vim.diagnostic.get(self.bufnr, { severity = vim.diagnostic.severity.WARN }) + self.hints = #vim.diagnostic.get(self.bufnr, { severity = vim.diagnostic.severity.HINT }) + self.info = #vim.diagnostic.get(self.bufnr, { severity = vim.diagnostic.severity.INFO }) + end, + { + provider = function(self) + return self.errors > 0 and (self.error_icon .. self.errors .. " ") + end, + hl = { fg = colors.diag.error }, + }, + { + provider = function(self) + return self.warnings > 0 and (self.warn_icon .. self.warnings .. " ") + end, + hl = { fg = colors.diag.warn }, + }, + { + provider = function(self) + return self.info > 0 and (self.info_icon .. self.info .. " ") + end, + hl = { fg = colors.diag.info }, + }, + { + provider = function(self) + return self.hints > 0 and (self.hint_icon .. self.hints) + end, + hl = { fg = colors.diag.hint }, + }, +} + +local TablineFileIcon = { + init = function(self) + local filename = self.filename + local extension = vim.fn.fnamemodify(filename, ":e") + self.icon, self.icon_color = + require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) + end, + provider = function(self) + return self.icon and (" " .. self.icon .. " ") + end, + hl = function(self) + return { fg = self.icon_color } + end, +} + +-- Here the filename block finally comes together +local TablineFileNameBlock = { + init = function(self) + self.filename = vim.api.nvim_buf_get_name(self.bufnr) + end, + hl = function(self) + if self.is_active then + return "TabLineSel" + else + return "TabLine" + end + end, + on_click = { + callback = function(_, minwid, _, button) + if button == "m" then -- close on mouse middle click + vim.api.nvim_buf_delete(minwid, { force = true }) + else + vim.api.nvim_win_set_buf(0, minwid) + end + end, + minwid = function(self) + return self.bufnr + end, + name = "heirline_tabline_buffer_callback", + }, + TablineFileIcon, + TablineFileName, + TablineFileFlags, + TablineDiagnostics, +} + +-- a nice "x" button to close the buffer +local TablineCloseButton = { + condition = function(self) + return not vim.bo[self.bufnr].modified + end, + { provider = " " }, + { + provider = "", + hl = { fg = "gray" }, + on_click = { + callback = function(_, minwid) + vim.api.nvim_buf_delete(minwid, { force = false }) + end, + minwid = function(self) + return self.bufnr + end, + name = "heirline_tabline_close_buffer_callback", + }, + }, +} + +-- The final touch! +local TablineBufferBlock = utils.surround({ "", "" }, function(self) + if self.is_active then + return utils.get_highlight("TabLineSel").bg + else + return utils.get_highlight("TabLine").bg + end +end, { TablineFileNameBlock, TablineCloseButton }) + +-- and here we go +local BufferLine = utils.make_buflist( + TablineBufferBlock, + { provider = "", hl = { fg = "gray" } }, -- left truncation, optional (defaults to "<") + { provider = "", hl = { fg = "gray" } } -- right trunctation, also optional (defaults to ...... yep, ">") + -- by the way, open a lot of buffers and try clicking them ;) +) + +local TabLineOffset = { + condition = function(self) + local win = vim.api.nvim_tabpage_list_wins(0)[1] + local bufnr = vim.api.nvim_win_get_buf(win) + self.winid = win + + if vim.bo[bufnr].filetype == "NvimTree" then + self.title = "NvimTree" + return true + -- elseif vim.bo[bufnr].filetype == "TagBar" then + -- ... + end + end, + provider = function(self) + local title = self.title + local width = vim.api.nvim_win_get_width(self.winid) + local pad = math.ceil((width - #title) / 2) + return string.rep(" ", pad) .. title .. string.rep(" ", pad) + end, + hl = function(self) + if vim.api.nvim_get_current_win() == self.winid then + return "TablineSel" + else + return "Tabline" + end + end, +} + +local Tabpage = { + provider = function(self) + return "%" .. self.tabnr .. "T " .. self.tabnr .. " %T" + end, + hl = function(self) + if not self.is_active then + return "TabLine" + else + return "TabLineSel" + end + end, +} + +local TabpageClose = { + provider = "%999X %X", + hl = "TabLine", +} + +local TabPages = { + -- only show this component if there's 2 or more tabpages + condition = function() + return #vim.api.nvim_list_tabpages() >= 2 + end, + { provider = "%=" }, + utils.make_tablist(Tabpage), + TabpageClose, +} + +local TabLine = { TabLineOffset, BufferLine, TabPages } + +require("heirline").setup(StatusLines, WinBars, TabLine) + +vim.cmd([[au FileType * if index(['wipe', 'delete', 'unload'], &bufhidden) >= 0 | set nobuflisted | endif]]) + +vim.api.nvim_create_augroup("Heirline", { clear = true }) +vim.api.nvim_create_autocmd("ColorScheme", { + callback = function() + local colors = setup_colors() + utils.on_colorscheme(colors) + end, + group = "Heirline", +}) + +local function get_bufs() + return vim.tbl_filter(function(bufnr) + return vim.api.nvim_buf_is_loaded(bufnr) and vim.bo[bufnr].buflisted + end, vim.api.nvim_list_bufs()) +end + +local function goto_buf(index) + local bufs = get_bufs() + if index > #bufs then + index = #bufs + end + vim.api.nvim_win_set_buf(0, bufs[index]) +end + +local function addKey(key, index) + vim.keymap.set("", "<A-" .. key .. ">", function() + goto_buf(index) + end, { noremap = true, silent = true }) +end + +for i = 1, 9 do + addKey(i, i) +end +addKey("0", 10) diff --git a/lua/plugins/heirline.backup2.lua b/lua/plugins/heirline.backup2.lua new file mode 100644 index 0000000..9f5c4ca --- /dev/null +++ b/lua/plugins/heirline.backup2.lua @@ -0,0 +1,1921 @@ +local conditions = require("heirline.conditions") +local utils = require("heirline.utils") + +-- Colors +--local colors = { +-- bright_bg = utils.get_highlight("Folded").bg, +-- bright_fg = utils.get_highlight("Folded").fg, +-- red = utils.get_highlight("DiagnosticError").fg, +-- dark_red = utils.get_highlight("DiffDelete").bg, +-- green = utils.get_highlight("String").fg, +-- blue = utils.get_highlight("Function").fg, +-- gray = utils.get_highlight("NonText").fg, +-- orange = utils.get_highlight("Constant").fg, +-- purple = utils.get_highlight("Statement").fg, +-- cyan = utils.get_highlight("Special").fg, +-- diag_warn = utils.get_highlight("DiagnosticWarn").fg, +-- diag_error = utils.get_highlight("DiagnosticError").fg, +-- diag_hint = utils.get_highlight("DiagnosticHint").fg, +-- diag_info = utils.get_highlight("DiagnosticInfo").fg, +-- git_del = utils.get_highlight("diffDeleted").fg, +-- git_add = utils.get_highlight("diffAdded").fg, +-- git_change = utils.get_highlight("diffChanged").fg, +--} + +--local colors = { +-- gray = '#23232e', +-- lightgray = '#5f6a8e', +-- orange = '#ffb86c', +-- purple = '#bd93f9', +-- red = '#ff5555', +-- yellow = '#f1fa8c', +-- green = '#50fa7b', +-- white = '#f8f8f2', +-- black = '#282a36', +--} +local colors = { + bg = "#333842", + nobg = nil, + bright_fg = "#ffffff", + bright_bg = "#000000", + brown = "#504945", + white = "#f8f8f0", + grey = "#8F908A", + pink = "#f92672", + --green = "#a6e22e", + green = "#AAD94C", + --blue = "#66d9ef", + blue = "#39BAE6", + yellow = "#e6db74", + --orange = "#fd971f", + orange = "#FA8D3F", + purple = "#ae81ff", + --red = "#e95678", + red = "#F07171", + cyan = "#66d9eC", + mode_fg = "#242424", + diag = { + warn = utils.get_highlight("DiagnosticSignWarn").fg, + error = utils.get_highlight("DiagnosticSignError").fg, + hint = utils.get_highlight("DiagnosticSignHint").fg, + info = utils.get_highlight("DiagnosticSignInfo").fg, + }, + git = { + del = "#e95678", + add = "#a6e22e", + change = "#ae81ff", + }, +} + +require("heirline").load_colors(colors) + +--local mode_lable = { +-- n = 'NORMAL', +-- no = 'OPPEND', +-- nov = 'N?', +-- noV = 'N?', +-- ['no\22'] = 'N?', +-- niI = 'Ni', +-- niR = 'Nr', +-- niV = 'Nv', +-- nt = 'N-TERM', +-- v = 'VISUAL', +-- vs = 'Vs', +-- V = 'V-LINE', +-- Vs = 'Vs', +-- ['\22'] = 'V-BLCK', +-- ['\22s'] = '^V', +-- s = 'SELECT', +-- S = 'S-LINE', +-- ['\19'] = 'S-BLCK', +-- i = 'INSERT', +-- ic = 'ICOMPL', +-- ix = 'Ix', +-- R = 'REPLACE', +-- Rc = 'Rc', +-- Rx = 'Rx', +-- Rv = 'VRPLCE', +-- Rvc = 'Rv', +-- Rvx = 'Rv', +-- c = 'CMMAND', +-- cv = 'PROMPT', +-- r = '...', +-- rm = 'MORE', +-- ['r?'] = 'CNFIRM', +-- ['!'] = 'SHELL', +-- t = 'TERM', +--} +-- +--local mode_colors_table = { +-- n = 'red', +-- no = 'blue', +-- nov = 'blue', +-- noV = 'blue', +-- niI = 'red', +-- niR = 'red', +-- niV = 'red', +-- nt = 'red', +-- v = 'cyan', +-- vs = 'cyan', +-- V = 'cyan', +-- Vs = 'cyan', +-- ['\22'] = 'cyan', +-- ['\22s'] = 'cyan', +-- s = 'purple', +-- S = 'purple', +-- ['\19'] = 'purple', +-- i = 'blue', +-- ic = 'blue', +-- ix = 'blue', +-- R = 'orange', +-- Rc = 'orange', +-- Rx = 'orange', +-- Rv = 'orange', +-- Rvc = 'orange', +-- Rvx = 'orange', +-- c = 'green', +-- cv = 'green', +-- r = 'green', +-- rm = 'green', +-- ['r?'] = 'green', +-- ['!'] = 'red', +-- t = 'red', +--} +-- +--local mode_colors = setmetatable({ +-- n = { fg = 'red' } +--}, { +-- __index = function(_, mode) +-- return { +-- fg = 'mode_fg', +-- bg = mode_colors_table[mode], +-- } +-- end +--}) +-- +-- +--local VimModeNormal = { +-- condition = function(self) +-- return self.mode == 'n' +-- end, +-- provider = ' ●', +--} +-- +--local VimModeOthers = { +-- condition = function(self) +-- return self.mode ~= 'n' +-- end, +-- +-- utils.surround({ '', '' }, +-- function(self) +-- return mode_colors[self.mode].bg +-- end, +-- { +-- { +-- provider = function(self) +-- return '● ' .. mode_lable[self.mode] +-- end, +-- }, +-- hl = function(self) +-- return mode_colors[self.mode] +-- end +-- } +-- ), +--} +-- +--local ViMode = { +-- init = function(self) +-- self.mode = vim.fn.mode(1) +-- end, +-- +-- VimModeNormal, VimModeOthers, +-- +-- update = { 'ModeChanged' } +--} +--local colors = require'kanagawa.colors'.setup() -- wink + +--utils.surround({ "", "" }, function(self) return self:mode_color() end, {Ruler, hl = {fg = 'black'}} ), +-- we are surrounding the component and adjusting the foreground in one go! + +-- ViMode truemode +--local ViMode = { +-- -- get vim current mode, this information will be required by the provider +-- -- and the highlight functions, so we compute it only once per component +-- -- evaluation and store it as a component attribute +-- init = function(self) +-- self.mode = vim.fn.mode(1) -- :h mode() +-- +-- -- execute this only once, this is required if you want the ViMode +-- -- component to be updated on operator pending mode +-- if not self.once then +-- vim.api.nvim_create_autocmd("ModeChanged", { +-- pattern = "*:*o", +-- command = "redrawstatus", +-- }) +-- self.once = true +-- end +-- end, +-- -- Now we define some dictionaries to map the output of mode() to the +-- -- corresponding string and color. We can put these into `static` to compute +-- -- them at initialisation time. +-- static = { +-- mode_names = { -- change the strings if you like it vvvvverbose! +-- ["n"] = "NORMAL ", +-- ["no"] = "N·OPERATOR PENDING ", +-- ["v"] = "VISUAL ", +-- ["V"] = "V·LINE ", +-- [""] = "V·BLOCK ", +-- ["s"] = "SELECT ", +-- ["S"] = "S·LINE ", +-- [""] = "S·BLOCK ", +-- ["i"] = "INSERT ", +-- ["R"] = "REPLACE ", +-- ["Rv"] = "V·REPLACE ", +-- ["c"] = "COMMAND ", +-- ["cv"] = "VIM EX ", +-- ["ce"] = "EX ", +-- ["r"] = "PROMPT ", +-- ["rm"] = "MORE ", +-- ["r?"] = "CONFIRM ", +-- ["!"] = "SHELL ", +-- ["t"] = "TERMINAL ", +-- }, +-- mode_colors = { +-- n = colors.blue, +-- i = colors.green, +-- v = colors.purple, +-- V = colors.purple, +-- [""] = colors.purple, +-- c = colors.red, +-- s = colors.purple, +-- S = colors.purple, +-- [""] = colors.purple, +-- R = colors.orange, +-- r = colors.orange, +-- ["!"] = colors.red, +-- t = colors.red, +-- --n = "blue" , +-- --i = "green", +-- --v = "cyan", +-- --V = "cyan", +-- --["\22"] = "cyan", +-- --c = "orange", +-- --s = "purple", +-- --S = "purple", +-- --["\19"] = "purple", +-- --R = "orange", +-- --r = "orange", +-- --["!"] = "red", +-- --t = "red", +-- }, +-- }, +-- -- We can now access the value of mode() that, by now, would have been +-- -- computed by `init()` and use it to index our strings dictionary. +-- -- note how `static` fields become just regular attributes once the +-- -- component is instantiated. +-- -- To be extra meticulous, we can also add some vim statusline syntax to +-- -- control the padding and make sure our string is always at least 2 +-- -- characters long. Plus a nice Icon. +-- provider = function(self) +-- return " %2(" .. self.mode_names[self.mode] .. "%)" +-- --return " %2("..self.mode_names[self.mode].."%)" +-- -- +-- -- +-- -- +-- end, +-- -- Same goes for the highlight. Now the foreground will change according to the current mode. +-- hl = function(self) +-- local mode = self.mode:sub(1, 1) -- get only the first mode character +-- --return { fg = self.mode_colors[mode], bold = true, } +-- return { bg = self.mode_colors[mode], fg = colors.bg, bold = true } +-- end, +-- -- Re-evaluate the component only on ModeChanged event! +-- -- This is not required in any way, but it's there, and it's a small +-- -- performance improvement. +-- update = { +-- "ModeChanged", +-- }, --optional +--} +local ViMode = { + static = { + mode_names = { -- change the strings if you like it vvvvverbose! + ["n"] = "NORMAL ", + ["no"] = "N·OPERATOR PENDING ", + ["v"] = "VISUAL ", + ["V"] = "V·LINE ", + [""] = "V·BLOCK ", + ["s"] = "SELECT ", + ["S"] = "S·LINE ", + [""] = "S·BLOCK ", + ["i"] = "INSERT ", + ["R"] = "REPLACE ", + ["Rv"] = "V·REPLACE ", + ["c"] = "COMMAND ", + ["cv"] = "VIM EX ", + ["ce"] = "EX ", + ["r"] = "PROMPT ", + ["rm"] = "MORE ", + ["r?"] = "CONFIRM ", + ["!"] = "SHELL ", + ["t"] = "TERMINAL ", + }, + }, + provider = function(self) + return " %2(" .. self.mode_names[vim.fn.mode(1)] .. "%)" + end, + hl = function(self) + local color = self:mode_color() -- here! + return { bg = color, fg = colors.bg, bold = true } + end, +} + +local ViModeColor = { + static = { + mode_colors_map = { + n = colors.blue, + i = colors.green, + v = colors.purple, + V = colors.purple, + [""] = colors.purple, + c = colors.red, + s = colors.purple, + S = colors.purple, + [""] = colors.purple, + R = colors.orange, + r = colors.orange, + ["!"] = colors.red, + t = colors.red, + }, + mode_color = function(self) + local mode = conditions.is_active() and vim.fn.mode() or "n" + return self.mode_colors_map[mode] + end, + }, +} + +-- LSP + +--local LSPActive = { +-- condition = conditions.lsp_attached, +-- update = {'LspAttach', 'LspDetach'}, +-- +-- -- You can keep it simple, +-- -- provider = " [LSP]", +-- +-- -- Or complicate things a bit and get the servers names +-- provider = function() +-- local names = {} +-- for i, server in pairs(vim.lsp.buf_get_clients(0)) do +-- table.insert(names, server.name) +-- end +-- return " [" .. table.concat(names, " ") .. "]" +-- end, +-- hl = { fg = "green", bold = true }, +-- on_click = { +-- callback = function() +-- vim.defer_fn(function() +-- vim.cmd("LspInfo") +-- end, 100) +-- end, +-- name = "heirline_LSP", +-- }, +--} +-- +---- lsp status +---- I personally use it only to display progress messages! +---- See lsp-status/README.md for configuration options. +-- +---- Note: check "j-hui/fidget.nvim" for a nice statusline-free alternative. +--local LSPMessages = { +-- provider = require("lsp-status").status, +-- hl = { fg = "gray" }, +--} + +-- Nvim Navic +--local Navic = { +-- condition = require("nvim-navic").is_available, +-- provider = require("nvim-navic").get_location, +--} +--local Navic = utils.make_flexible_component(3, Navic, { provider = "" }) + +-- Full nerd (with icon colors)! +local Navic = { + condition = require("nvim-navic").is_available, + static = { + -- create a type highlight map + type_hl = { + File = "Directory", + Module = "Include", + Namespace = "TSNamespace", + Package = "Include", + Class = "Struct", + Method = "Method", + Property = "TSProperty", + Field = "TSField", + Constructor = "TSConstructor ", + Enum = "TSField", + Interface = "Type", + Function = "Function", + Variable = "TSVariable", + Constant = "Constant", + String = "String", + Number = "Number", + Boolean = "Boolean", + Array = "TSField", + Object = "Type", + Key = "TSKeyword", + Null = "Comment", + EnumMember = "TSField", + Struct = "Struct", + Event = "Keyword", + Operator = "Operator", + TypeParameter = "Type", + }, + }, + init = function(self) + local data = require("nvim-navic").get_data() or {} + local children = {} + -- create a child for each level + for i, d in ipairs(data) do + local child = { + { + provider = d.icon, + hl = self.type_hl[d.type], + }, + { + provider = d.name, + -- highlight icon only or location name as well + -- hl = self.type_hl[d.type], + }, + } + -- add a separator only if needed + if #data > 1 and i < #data then + table.insert(child, { + provider = " > ", + hl = { fg = "bright_fg" }, + }) + end + table.insert(children, child) + end + -- instantiate the new child, overwriting the previous one + self[1] = self:new(children, 1) + end, + hl = { fg = "gray" }, +} + +-- Diagnostics +local Diagnostics = { + + condition = conditions.has_diagnostics, + + static = { + error_icon = vim.fn.sign_getdefined("DiagnosticSignError")[1].text, + warn_icon = vim.fn.sign_getdefined("DiagnosticSignWarn")[1].text, + info_icon = vim.fn.sign_getdefined("DiagnosticSignInfo")[1].text, + hint_icon = vim.fn.sign_getdefined("DiagnosticSignHint")[1].text, + }, + + init = function(self) + self.errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }) + self.warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) + self.hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT }) + self.info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO }) + end, + + update = { "DiagnosticChanged", "BufEnter" }, + + { + provider = function(self) + -- 0 is just another output, we can decide to print it or not! + return self.errors > 0 and (self.error_icon .. self.errors .. " ") + end, + hl = { fg = colors.diag.error, bg = colors.bg }, + }, + { + provider = function(self) + return self.warnings > 0 and (self.warn_icon .. self.warnings .. " ") + end, + hl = { fg = colors.diag.warn, bg = colors.bg }, + }, + { + provider = function(self) + return self.info > 0 and (self.info_icon .. self.info .. " ") + end, + hl = { fg = colors.diag.info, bg = colors.bg }, + }, + { + provider = function(self) + return self.hints > 0 and (self.hint_icon .. self.hints) + end, + hl = { fg = colors.diag.hint, bg = colors.bg }, + }, + --{ + -- provider = "]", + --}, + on_click = { + callback = function() + require("trouble").toggle({ mode = "document_diagnostics" }) + -- or + -- vim.diagnostic.setqflist() + end, + name = "heirline_diagnostics", + }, +} + +-- Git +-- For the ones who're not (too) afraid of changes! Uses gitsigns. +local Git = { + condition = conditions.is_git_repo, + + init = function(self) + self.status_dict = vim.b.gitsigns_status_dict + self.has_changes = self.status_dict.added ~= 0 or self.status_dict.removed ~= 0 or self.status_dict.changed ~= 0 + end, + --hl = { fg = "orange" }, + hl = { fg = colors.orange, bg = colors.bg }, + { -- git branch name + provider = function(self) + return " " .. self.status_dict.head + end, + --hl = { bold = true }, + hl = { bold = true, bg = colors.bg }, + }, + -- You could handle delimiters, icons and counts similar to Diagnostics + { + condition = function(self) + return self.has_changes + end, + --provider = "(" + provider = " ", + }, + { + provider = function(self) + local count = self.status_dict.added or 0 + --return count > 0 and ("+" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_add" }, + hl = { fg = colors.git.add, bg = colors.bg }, + }, + { + provider = function(self) + local count = self.status_dict.removed or 0 + --return count > 0 and ("-" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_del" }, + hl = { fg = colors.git.del, bg = colors.bg }, + }, + { + provider = function(self) + local count = self.status_dict.changed or 0 + --return count > 0 and ("~" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_change" }, + hl = { fg = colors.git.change, bg = colors.bg }, + }, + --{ + -- condition = function(self) + -- return self.has_changes + -- end, + -- provider = ")", + --}, + on_click = { + callback = function() + -- If you want to use Fugitive: + -- vim.cmd("G") + + -- If you prefer Lazygit + -- use vim.defer_fn() if the callback requires + -- opening of a floating window + -- (this also applies to telescope) + vim.defer_fn(function() + vim.cmd("Lazygit") + end, 100) + end, + name = "heirline_git", + }, +} + +-- Debugger +-- Display informations from nvim-dap! +local DAPMessages = { + -- display the dap messages only on the debugged file + condition = function() + local session = require("dap").session() + if session then + local filename = vim.api.nvim_buf_get_name(0) + if session.config then + local progname = session.config.program + return filename == progname + end + end + return false + end, + provider = function() + return " " .. require("dap").status() + end, + hl = { fg = utils.get_highlight("Debug").fg }, + -- Debugger on_click: step-over, step-into, next, previous, stop buttons + -- coming soon! +} + +-- Tests +-- This requires the great ultest. +--local UltTest = { +-- condition = function() +-- return vim .api.nvim_call_function("ultest#is_test_file", {}) ~= 0 +-- end, +-- static = { +-- passed_icon = vim.fn.sign_getdefined("test_pass")[1].text, +-- failed_icon = vim.fn.sign_getdefined("test_fail")[1].text, +-- passed_hl = { fg = utils.get_highlight("UltestPass").fg }, +-- failed_hl = { fg = utils.get_highlight("UltestFail").fg }, +-- }, +-- init = function(self) +-- self.status = vim.api.nvim_call_function("ultest#status", {}) +-- end, +-- +-- -- again, if you'd like icons and numbers to be colored differently, +-- -- just split the component in two +-- { +-- provider = function(self) +-- return self.passed_icon .. self.status.passed .. " " +-- end, +-- hl = function(self) +-- return self.passed_hl +-- end, +-- }, +-- { +-- provider = function(self) +-- return self.failed_icon .. self.status.failed .. " " +-- end, +-- hl = function(self) +-- return self.failed_hl +-- end, +-- }, +-- { +-- provider = function(self) +-- return "of " .. self.status.tests - 1 +-- end, +-- }, +--} + +-- FileName and Friends + +--local Align = { provider = "%=" } +local Align = { provider = "%=", hl = { bg = colors.bg } } +local Space = { provider = " ", hl = { bg = colors.bg } } +local fill = { provider = "%=", hl = { bg = colors.nobg } } +--local LeftSep = { provider = "" hl = { fg = colors.bg } } +--local RightSep = { provider = "" hl = { fg = colors.bg }} + +local FileNameBlock = { + -- let's first set up some attributes needed by this component and it's children + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { bg = colors.bg }, +} +-- We can now define some children separately and add them later +-- + +local FileIcon = { + init = function(self) + local filename = self.filename + local extension = vim.fn.fnamemodify(filename, ":e") + self.icon, self.icon_color = + require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) + end, + provider = function(self) + return self.icon and (self.icon .. " ") + end, + hl = function(self) + --return { fg = self.icon_color } + return { fg = self.icon_color, bg = colors.bg } + end, +} + +local FileName = { + provider = function(self) + -- first, trim the pattern relative to the current directory. For other + -- options, see :h filename-modifers + local filename = vim.fn.fnamemodify(self.filename, ":.") + if filename == "" then + return "[No Name]" + end + -- now, if the filename would occupy more than 1/4th of the available + -- space, we trim the file path to its initials + -- See Flexible Components section below for dynamic truncation + if not conditions.width_percent_below(#filename, 0.25) then + filename = vim.fn.pathshorten(filename) + end + return filename + end, + --hl = { fg = utils.get_highlight("Directory").fg, bg = colors.bg }, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +local FileFlags = { + { + provider = function() + if vim.bo.modified then + return " [+]" + end + end, + hl = { fg = colors.green, bg = colors.bg }, + }, + { + provider = function() + if not vim.bo.modifiable or vim.bo.readonly then + return "" + end + end, + --hl = { fg = colors.orange }, + hl = { fg = colors.orange, bold = true, bg = colors.bg }, + }, +} +-- Now, let's say that we want the filename color to change if the buffer is +-- modified. Of course, we could do that directly using the FileName.hl field, +-- but we'll see how easy it is to alter existing components using a "modifier" +-- component + +local FileNameModifer = { + hl = function() + if vim.bo.modified then + -- use `force` because we need to override the child's hl foreground + --return { fg = "cyan", bold = true, force = true } + return { fg = "blue", bold = true, force = true, bg = colors.bg } + end + end, +} + +-- FileType, FileEncoding and FileFormat +local FileType = { + provider = function() + -- return string.upper(vim.bo.filetype) + --end, + ----hl = { fg = utils.get_highlight("Type").fg, bold = true }, + --hl = { fg = utils.get_highlight("Type").fg, bold = true, bg = colors.bg }, + return vim.bo.filetype + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +--local FileEncoding = { +-- provider = function() +-- local enc = (vim.bo.fenc ~= "" and vim.bo.fenc) or vim.o.enc -- :h 'enc' +-- return enc ~= "utf-8" and enc:upper() +-- end, +--} +local FileEncoding = { + Space, + provider = function() + local enc = (vim.bo.fenc ~= "" and vim.bo.fenc) or vim.o.enc -- :h 'enc' + return enc:upper() + end, + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { bg = colors.bg }, +} + +local FileFormat = { + provider = function() + local fmt = vim.bo.fileformat + return fmt ~= "unix" and fmt:upper() + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +-- FileSize and FileLastModified +local FileSize = { + provider = function() + -- stackoverflow, compute human readable file size + local suffix = { "b", "k", "M", "G", "T", "P", "E" } + local fsize = vim.fn.getfsize(vim.api.nvim_buf_get_name(0)) + fsize = (fsize < 0 and 0) or fsize + if fsize < 1024 then + return fsize .. suffix[1] + end + local i = math.floor((math.log(fsize) / math.log(1024))) + return string.format("%.2g%s", fsize / math.pow(1024, i), suffix[i + 1]) + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +local FileLastModified = { + -- did you know? Vim is full of functions! + provider = function() + local ftime = vim.fn.getftime(vim.api.nvim_buf_get_name(0)) + return (ftime > 0) and os.date("%c", ftime) + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +-- Spell +-- Add indicator when spell is set! +local Spell = { + condition = function() + return vim.wo.spell + end, + provider = "SPELL ", + hl = { bold = true, fg = "orange" }, +} + +-- Cursor position: Ruler and ScrollBar +-- We're getting minimalists here! +local Ruler = { + -- We're getting minimalists here! + -- %l = current line number + -- %L = number of lines in the buffer + -- %c = column number + -- %P = percentage through file of displayed window + provider = "%3(%2l%):%c %P", + --provider = "%7(%l/%3L%):%2c %P", + --provider = "%3(%P%)", + --provider = "%7(%l/%3L%):%2c %P", + --provider = "%7 %p%% Ln %l, Col %c", + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} +--local ScrollBar = { +-- static = { +-- --sbar = { "▁", "▂", "▃", "▄", "▅", "▆", "▇", "█" }, +-- sbar = { "🭶", "🭷", "🭸", "🭹", "🭺", "🭻" }, +-- }, +-- provider = function(self) +-- local curr_line = vim.api.nvim_win_get_cursor(0)[1] +-- local lines = vim.api.nvim_buf_line_count(0) +-- local i = math.floor((curr_line - 1) / lines * #self.sbar) + 1 +-- return string.rep(self.sbar[i], 2) +-- end, +-- --hl = { fg = "blue", bg = "bright_bg" }, +-- hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +--} +local WordCount = { + condition = function() + return conditions.buffer_matches({ + filetype = { + "markdown", + "txt", + "vimwiki", + }, + }) + end, + Space, + { + provider = function() + return "W:" .. vim.fn.wordcount().words + end, + }, +} + +local Position = { + Space, + { provider = "%l:%c" }, + hl = { bg = colors.bg }, +} + +local Percentage = { + Space, + { provider = "%p%%" }, + hl = { bg = colors.bg }, +} +-- Working Directory +local WorkDir = { + provider = function(self) + self.icon = (vim.fn.haslocaldir(0) == 1 and "l" or "g") .. " " .. " " + local cwd = vim.fn.getcwd(0) + self.cwd = vim.fn.fnamemodify(cwd, ":~") + end, + --hl = { fg = "blue", bold = true }, + hl = { fg = colors.blue, bold = true, bg = colors.bg }, + + utils.make_flexible_component(1, { + -- evaluates to the full-lenth path + provider = function(self) + local trail = self.cwd:sub(-1) == "/" and "" or "/" + return self.icon .. self.cwd .. trail .. " " + end, + }, { + -- evaluates to the shortened path + provider = function(self) + local cwd = vim.fn.pathshorten(self.cwd) + local trail = self.cwd:sub(-1) == "/" and "" or "/" + return self.icon .. cwd .. trail .. " " + end, + }, { + -- evaluates to "", hiding the component + provider = "", + }), +} + +-- Terminal Name +-- Special handling of the built-in terminal bufname. See conditional statuslines below to see an example of dedicated statusline for terminals! + +local TerminalName = { + -- we could add a condition to check that buftype == 'terminal' + -- or we could do that later (see #conditional-statuslines below) + provider = function() + local tname, _ = vim.api.nvim_buf_get_name(0):gsub(".*:", "") + return " " .. tname + end, + --hl = { fg = "blue", bold = true }, + hl = { bold = true, bg = colors.bg }, +} + +-- Snippets Indicator +-- This requires ultisnips +--local Snippets = { +-- -- check that we are in insert or select mode +-- condition = function() +-- return vim.tbl_contains({'s', 'i'}, vim.fn.mode()) +-- end, +-- provider = function() +-- local forward = (vim.fn["UltiSnips#CanJumpForwards"]() == 1) and "" or "" +-- local backward = (vim.fn["UltiSnips#CanJumpBackwards"]() == 1) and " " or "" +-- return backward .. forward +-- end, +-- hl = { fg = "red", bold = true }, +--} + +-- let's add the children to our FileNameBlock component +--FileNameBlock = utils.insert( +-- FileNameBlock, +--FileEncoding, +--Space, +--FileIcon, +--FileType, +--FileLastModified, +--FileSize, +--FileFormat, +--FileNameModifer, +-- unpack(FileFlags), +-- { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +--) +-- let's add the children to our FileNameBlock component +FileNameBlock = utils.insert( + FileNameBlock, + FileIcon, + utils.insert(FileNameModifer, FileName), -- a new table where FileName is a child of FileNameModifier + unpack(FileFlags), -- A small optimisation, since their parent does nothing + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) + +local FileInfoBlock = { + -- let's first set up some attributes needed by this component and it's children + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, +} + +FileInfoBlock = utils.insert( + FileInfoBlock, + FileEncoding, + Space, + FileIcon, + FileType, + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) +--FileNameBlock = utils.insert( +-- FileNameBlock, +-- FileIcon, +-- utils.insert(FileNameModifer, FileName), -- a new table where FileName is a child of FileNameModifier +-- unpack(FileFlags), -- A small optimisation, since their parent does nothing +-- { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +--) + +-- Statusline + +local Surrr = { + utils.surround({ "", "" }, "red", { + utils.surround({ "", "" }, "green", utils.surround({ "", "" }, "blue", { provider = "heyya" })), + { provider = "Normal" }, + }), +} +--ViMode = utils.surround({ "", "" }, "bright_bg", { ViMode, Snippets }) +ViMode = utils.surround({ "", "" }, function(self) + return self:mode_color() +end, { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) + +--ViMode = utils.surround({ "◥", "" }, function(self) return self:mode_color() end, { +-- utils.surround({ "█", "" }, function(self) return self:mode_color() end, utils.surround({ "", "" }, function(self) return self:mode_color() end, { {provider = "normal" }, ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } } )), +-- { provider = "heyya" }, +-- }) + +--utils.surround({ "█", "█" }, function(self) return self:mode_color() end, { FileNameBlock, hl = { fg = colors.bg, force = true } } ), +local DefaultStatusline = { + ViMode, + Space, + FileNameBlock, + Space, + Git, + Space, + Diagnostics, + Align, + Navic, + DAPMessages, + Align, + Space, + FileInfoBlock, + Space, + WordCount, + Ruler, + Space, + --Position, + --Percentage, + --ScrollBar, + --Space, + --LSPActive, Space, LSPMessages, Space, UltTest, Space, FileType, Space, Ruler, Space, ScrollBar +} + +--local InactiveStatusline = { +-- condition = conditions.is_not_active, +-- FileType, +-- Space, +-- FileName, +-- Align, +--} + +local SpecialStatusline = { + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + + FileType, + Space, + Align, + --FileType, Space, HelpFileName, Align +} + +local TerminalStatusline = { + + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + + hl = { bg = "dark_red" }, + + -- Quickly add a condition to the ViMode to only show it when buffer is active! + { condition = conditions.is_active, ViMode, Space }, + FileType, + Space, + TerminalName, + Align, +} + +--local StatusLines = { +-- +-- hl = function() +-- if conditions.is_active() then +-- return "StatusLine" +-- else +-- return "StatusLineNC" +-- end +-- end, +-- +-- -- the first statusline with no condition, or which condition returns true is used. +-- -- think of it as a switch case with breaks to stop fallthrough. +-- fallthrough = false, +-- +-- SpecialStatusline, +-- TerminalStatusline, +-- --InactiveStatusline, +-- DefaultStatusline, +--} +local StatusLines = { + + hl = function() + if conditions.is_active() then + return "StatusLine" + else + return "StatusLineNC" + end + end, + + static = { + mode_colors_map = { + n = colors.blue, + i = colors.green, + v = colors.purple, + V = colors.purple, + [""] = colors.purple, + c = colors.red, + s = colors.purple, + S = colors.purple, + [""] = colors.purple, + R = colors.orange, + r = colors.orange, + ["!"] = colors.red, + t = colors.red, + }, + mode_color = function(self) + local mode = conditions.is_active() and vim.fn.mode() or "n" + return self.mode_colors_map[mode] + end, + }, + fallthrough = false, + + SpecialStatusline, + TerminalStatusline, + --InactiveStatusline, + DefaultStatusline, +} +--hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +-- hl = { bg = colors.bg }, +--require("heirline").setup(StatusLines) +-- we're done. + +--local FelineStyle = { +-- +-- -- stop at child where buftype/filetype/bufname matches +-- fallthrough = false, +-- +-- { -- Identify the buftype/filetype/bufname first +-- condtion = function() +-- return conditions.buffer_matches({...}) +-- end, +-- +-- -- Evaluate only the "active" or "inactive" child +-- fallthrough = false, +-- +-- { -- If it's the current window, display some components +-- condition = conditions.is_active +-- {...} -- +-- }, +-- { -- Otherwise, display some other components +-- {...} -- +-- } +-- }, +-- { -- this block can be exactly as the one above for a different kind of +-- -- buffer +-- ... +-- } +--} + +-- WinBar + +vim.api.nvim_create_autocmd("User", { + pattern = "HeirlineInitWinbar", + callback = function(args) + local buf = args.buf + local buftype = vim.tbl_contains({ "prompt", "nofile", "help", "quickfix" }, vim.bo[buf].buftype) + local filetype = vim.tbl_contains({ "gitcommit", "fugitive" }, vim.bo[buf].filetype) + if buftype or filetype then + vim.opt_local.winbar = nil + end + end, +}) +local active_middle_segment = { --{{{ + -- provider = "%999X %X", + + --provider = function(self) + -- --return " %999X %999X " + -- return " %2("..self.mode_names[self.mode].."%)" + -- -- + -- -- + -- -- + --end, + fallthrough = false, + { -- Hide the winbar for special buffers + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + init = function() + vim.opt_local.winbar = nil + end, + }, + static = { + mode_colors_map = { + n = colors.blue, + i = colors.green, + v = colors.purple, + V = colors.purple, + [""] = colors.purple, + c = colors.red, + s = colors.purple, + S = colors.purple, + [""] = colors.purple, + R = colors.orange, + r = colors.orange, + ["!"] = colors.red, + t = colors.red, + }, + mode_color = function(self) + local mode = conditions.is_active() and vim.fn.mode() or "n" + return self.mode_colors_map[mode] + end, + provider = "%f", + hl = function(self) + local color = self:mode_color() -- here! + return { fg = color } + end, + -- self.filename will be defined later, just keep looking at the example! + }, + { -- A special winbar for terminals + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + utils.surround({ "", "" }, "dark_red", { + FileType, + Space, + TerminalName, + }), + }, + { -- An inactive winbar for regular files + condition = function() + return not conditions.is_active() + end, + --utils.surround({ "", "" }, "bright_bg", { hl = { fg = "gray", force = true }, FileNameBlock }), + --utils.surround({ "", "" }, function(self) return self:mode_color() end, { FileNameBlock, hl = { fg = colors.bg, force = true } } ), + }, + -- A winbar for regular files + --utils.surround({ "", "" }, "bright_bg", FileNameBlock), + --█🙼🙽🙼█⮘██⮚ + --utils.surround({ "", "" }, function(self) return self:mode_color() end, { FileNameBlock, hl = function(self) + -- local color = self:mode_color() -- here! + -- return { bg = color, bold = true, force = true } + --end, + --}), + --utils.surround({ "", "" }, function(self) return self:mode_color() end, FileNameBlock), +} + +--utils.surround({ "", "" }, function(self) return self:mode_color() end, { active_middle_segment, hl = { fg = colors.bg, force = true } }) + +local WinBars = { + fill, + active_middle_segment, + fill, +} +-- --utils.surround({ " ", " " }, colors.nobg, { fill, active_middle_segment, fill }) +-- --static = { +-- -- mode_colors_map = { +-- -- n = colors.blue, +-- -- i = colors.green, +-- -- v = colors.purple, +-- -- V = colors.purple, +-- -- [""] = colors.purple, +-- -- c = colors.red, +-- -- s = colors.purple, +-- -- S = colors.purple, +-- -- [""] = colors.purple, +-- -- R = colors.orange, +-- -- r = colors.orange, +-- -- ["!"] = colors.red, +-- -- t = colors.red, +-- -- }, +-- -- mode_color = function(self) +-- -- local mode = conditions.is_active() and vim.fn.mode() or "n" +-- -- return self.mode_colors_map[mode] +-- -- end, +-- --}, +-- --utils.surround({ " ", " " }, colors.nobg, { active_middle_segment, hl = function(self) +-- -- local color = self:mode_color() -- here! +-- -- return { bg = color, bold = true, force = true } +-- --end, +-- --}) +--} +on_click = { + -- get the window id of the window in which the component was evaluated + minwid = function() + return vim.api.nvim_get_current_win() + end, + callback = function(_, minwid) + -- winid is the window id of the window the component was clicked from + local winid = minwid + -- do something with the window id, e.g.: + local buf = vim.api.nvim_win_get_buf(winid) + -- ... + end, +} + +local CloseButton = { + condition = function(self) + return not vim.bo.modified + end, + -- a small performance improvement: + -- re register the component callback only on layout/buffer changes. + update = { "WinNew", "WinClosed", "BufEnter" }, + { provider = " " }, + { + provider = "", + hl = { fg = "gray" }, + on_click = { + minwid = function() + return vim.api.nvim_get_current_win() + end, + callback = function(_, minwid) + vim.api.nvim_win_close(minwid, true) + end, + name = "heirline_winbar_close_button", + }, + }, +} + +-- Use it anywhere! +--local WinBarFileName = utils.surround({ "", "" }, "bright_bg", { +-- hl = function() +-- if not conditions.is_active() then +-- return { fg = "gray", force = true } +-- end +-- end, +-- FileNameBlock, +-- Space, +-- CloseButton, +--}) + +--local WinBars = { +-- -- init = utils.pick_child_on_condition, +-- fallthrough = false, +-- { +-- condition = function() +-- return conditions.buffer_matches({ +-- buftype = { "nofile", "prompt", "help", "quickfix" }, +-- filetype = { "^git.*", "fugitive" }, +-- }) +-- end, +-- init = function() +-- vim.opt_local.winbar = nil +-- end, +-- }, +-- { +-- condition = function() +-- return conditions.buffer_matches({ buftype = { "terminal" } }) +-- end, +-- utils.surround({ "", "" }, "dark_red", { +-- FileType, +-- Space, +-- TerminalName, +-- CloseButton, +-- }), +-- }, +-- utils.surround({ "", "" }, "bright_bg", { +-- hl = function() +-- if conditions.is_not_active() then +-- return { fg = "gray", force = true } +-- end +-- end, +-- +-- FileNameBlock, +-- CloseButton, +-- }), +--} + +-- TabLine +--local TabLine ={ +-- hl = { bg = colors.bg }, +--} +local TablineBufnr = { + provider = function(self) + return tostring(self.bufnr) .. ". " + end, + --hl = "Comment", + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true }, +} + +-- we redefine the filename component, as we probably only want the tail and not the relative path +local TablineFileName = { + provider = function(self) + -- self.filename will be defined later, just keep looking at the example! + local filename = self.filename + filename = filename == "" and "[No Name]" or vim.fn.fnamemodify(filename, ":t") + return filename + end, + hl = function(self) + return { bold = self.is_active or self.is_visible, italic = true } + end, +} + +-- this looks exactly like the FileFlags component that we saw in +-- #crash-course-part-ii-filename-and-friends, but we are indexing the bufnr explicitly +-- also, we are adding a nice icon for terminal buffers. +--local TablineFileFlags = { +-- { +-- condition = function(self) +-- return vim.api.nvim_buf_get_option(self.bufnr, "modified") +-- end, +-- provider = "[+]", +-- --hl = { fg = colors.green }, +-- hl = { fg = colors.green, bold = true, bg = colors.bg }, +-- }, +-- { +-- condition = function(self) +-- return not vim.api.nvim_buf_get_option(self.bufnr, "modifiable") +-- or vim.api.nvim_buf_get_option(self.bufnr, "readonly") +-- end, +-- provider = function(self) +-- if vim.api.nvim_buf_get_option(self.bufnr, "buftype") == "terminal" then +-- return " " +-- else +-- return "" +-- end +-- end, +-- hl = { fg = "orange", bg = colors.bg }, +-- }, +--} + +local TablineFileFlags = { + { + provider = function(self) + if vim.bo[self.bufnr].modified then + return " [+]" + end + end, + hl = { fg = colors.green }, + }, + { + provider = function(self) + if not vim.bo[self.bufnr].modifiable or vim.bo[self.bufnr].readonly then + return "" + end + end, + hl = { fg = "orange" }, + }, +} + +local TablineFileIcon = { + init = function(self) + local filename = self.filename + local extension = vim.fn.fnamemodify(filename, ":e") + self.icon, self.icon_color = + require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) + end, + provider = function(self) + return self.icon and (" " .. self.icon .. " ") + end, + hl = function(self) + return { fg = self.icon_color } + end, +} + +-- Here the filename block finally comes together +local TablineFileNameBlock = { + init = function(self) + self.filename = vim.api.nvim_buf_get_name(self.bufnr) + end, + hl = function(self) + if self.is_active then + return "TabLineSel" + -- why not? + --elseif not vim.api.nvim_buf_is_loaded(self.bufnr) then + --return { fg = "gray", bg = colors.bg } + else + return "TabLine" + end + end, + on_click = { + callback = function(_, minwid, _, button) + if button == "m" then -- close on mouse middle click + vim.api.nvim_buf_delete(minwid, { force = false }) + else + vim.api.nvim_win_set_buf(0, minwid) + end + end, + minwid = function(self) + return self.bufnr + end, + name = "heirline_tabline_buffer_callback", + }, + TablineBufnr, + --FileIcon, -- turns out the version defined in #crash-course-part-ii-filename-and-friends can be reutilized as is here! + TablineFileIcon, + TablineFileName, + TablineFileFlags, +} + +-- a nice "x" button to close the buffer +local TablineCloseButton = { + condition = function(self) + return not vim.api.nvim_buf_get_option(self.bufnr, "modified") + end, + { provider = " " }, + { + provider = " ", + --hl = { fg = "red", bg = colors.bg }, + hl = { fg = "red" }, + on_click = { + callback = function(_, minwid) + vim.api.nvim_buf_delete(minwid, { force = false }) + end, + minwid = function(self) + return self.bufnr + end, + name = "heirline_tabline_close_buffer_callback", + }, + }, +} + +-- The final touch! +--local TablineBufferBlock = utils.surround({ "", "", hl = { bg =colors.bg } }, function(self) +-- if self.is_active then +-- return utils.get_highlight("TabLineSel").fg, utils.get_highlight("TabLineSel").bg +-- else +-- return utils.get_highlight("TabLine").fg, utils.get_highlight("TabLine").bg +-- end +----end, { TabLine, TablineFileNameBlock, TablineCloseButton }) +--end, { TablineFileNameBlock, TablineCloseButton }) + +--local TablineBufferBlock = utils.surround({ "█", "█" }, "bg", { +-- hl = function() +-- if not conditions.is_active() then +-- return { fg = "gray", force = true, bg = colors.bg } +-- end +-- end, +-- TablineFileNameBlock, +-- TablineCloseButton, +--}) +--local TablineBufferBlock = utils.surround({ "█", "█" }, +-- { hl = function(self) +-- local mode = self.mode:sub(1, 1) -- get only the first mode character +-- --return { fg = self.mode_colors[mode], bold = true, } +-- return { bg = self.mode_colors[mode], fg = colors.bg, bold = true } +-- end, }, +--{ TablineFileNameBlock, TablineCloseButton, { hl = ViMode }, }) + +--local TablineBufferBlock = { +-- init = function(self) +-- +-- self.mode = vim.fn.mode(1) -- :h mode() +-- +-- vim.api.nvim_create_autocmd("ModeChanged", { +-- pattern = "*:*o", +-- command = "redrawstatus", +-- }) +-- self.once = true +-- end, +-- static = { +-- mode_colors = { +-- n = colors.blue, +-- i = colors.green, +-- v = colors.purple, +-- V = colors.purple, +-- [""] = colors.purple, +-- c = colors.red, +-- s = colors.purple, +-- S = colors.purple, +-- [""] = colors.purple, +-- R = colors.orange, +-- r = colors.orange, +-- ["!"] = colors.red, +-- t = colors.red, +-- }, +-- }, +-- hl = function(self) +-- if self.is_active then +-- local mode = self.mode:sub(1, 1) -- get only the first mode character +-- --return { fg = self.mode_colors[mode], bold = true, } +-- return { bg = self.mode_colors[mode], fg = colors.bg, bold = true } +-- else +-- return utils.get_highlight("TabLine").bg +-- end +-- end, +-- update = { +-- "ModeChanged", +-- }, --optional +-- { TablineFileNameBlock, TablineCloseButton } +--} + +--local TabLineSel = { +-- hl = { bg = self.mode_colors[mode], fg = colors.bg, bold = true } +--} +--local ViMode2 = { +-- init = function(self) +-- self.mode = vim.fn.mode() +-- end, +-- static = { +-- mode_colors = { +-- n = "red", +-- i = "green", +-- v = "blue", +-- c = "orange" +-- +-- } +-- }, +-- provider = function(self) +-- return string.upper(self.mode) +-- end, +-- hl = function(self) +-- return { fg = self.mode_colors[self.mode], bold = true, } +-- end +--} +--local surrr = { +-- utils.surround({ "", "" }, "red", { +-- utils.surround({ "", "" }, "green", utils.surround({ "", "" }, "blue", { provider = "heyya" })), +-- { provider = "Normal" }, +-- }), +--} +--local statusline = ViMode + +--local TablineBufferBlock = utils.surround({ "", "" }, function(self) +-- if self.is_active then +-- --self.mode = vim.fn.mode(1) -- :h mode() +-- +-- --return utils.get_highlight(vim.api.nvim_get_mode().mode).bg +-- return utils.get_highlight("TabLineSel").bg +-- --return utils.get_highlight("Normal").bg +-- --local mode = self.mode:sub(1, 1) -- get only the first mode character +-- --return { bg = TabLineSel, fg = colors.bg, bold = true } +-- else +-- return utils.get_highlight("TabLine").bg +-- end +--end, { TablineFileNameBlock, TablineCloseButton }) + +local TablineBufferBlock = utils.surround({ "█", "▎" }, function(self) + --local TablineBufferBlock = utils.surround({ "█", "█" }, function(self) + if self.is_active then + return utils.get_highlight("TabLineSel").bg + else + return utils.get_highlight("TabLine").bg + end +end, { TablineFileNameBlock, TablineCloseButton }) +--█ +--local TablineBufferBlock = { +-- init = function(self) +-- self.mode = vim.fn.mode() +-- end, +-- static = { +-- mode_colors = { +-- n = colors.blue, +-- i = colors.green, +-- v = colors.purple, +-- V = colors.purple, +-- [""] = colors.purple, +-- c = colors.red, +-- s = colors.purple, +-- S = colors.purple, +-- [""] = colors.purple, +-- R = colors.orange, +-- r = colors.orange, +-- ["!"] = colors.red, +-- t = colors.red, +-- }, +-- }, +-- hl = function(self) +-- if conditions.is_active() then +-- return { bg = self.mode_colors[self.mode], fg = colors.bg, bold = true } +-- else +-- return utils.get_highlight("Tabline").bg +-- end +-- end, +-- update = { +-- "ModeChanged", +-- }, --optional +-- { TablineFileNameBlock, TablineCloseButton }, +--} + +--local TablineBufferBlock = { +-- static = { +-- mode_colors_map = { +-- n = colors.blue, +-- i = colors.green, +-- v = colors.purple, +-- V = colors.purple, +-- [""] = colors.purple, +-- c = colors.red, +-- s = colors.purple, +-- S = colors.purple, +-- [""] = colors.purple, +-- R = colors.orange, +-- r = colors.orange, +-- ["!"] = colors.red, +-- t = colors.red, +-- }, +-- mode_color = function(self) +-- local mode = conditions.is_active() and vim.fn.mode() or "n" +-- return self.mode_colors_map[mode] +-- end, +-- }, +-- { -- A special winbar for terminals +-- condition = function() +-- return conditions.buffer_matches({ buftype = { "terminal" } }) +-- end, +-- utils.surround({ "", "" }, "dark_red", { +-- FileType, +-- Space, +-- TerminalName, +-- }), +-- }, +-- { -- An inactive winbar for regular files +-- condition = function() +-- return conditions.is_not_active() +-- end, +-- utils.surround({ "█", "█" }, function() return utils.get_highlight("TabLine").bg end, { TablineFileNameBlock, TablineCloseButton } ) +-- }, +-- { +-- condition = function() +-- return conditions.is_active() +-- end, +-- utils.surround({ "█", "█" }, function(self) return self:mode_color() end, { TablineFileNameBlock, TablineCloseButton, hl = { fg = colors.bg, force = true } } ) +-- }, +--function() +--if self.is_active then +--utils.surround({ "", "" }, "bright_bg", { hl = { fg = "gray", force = true }, FileNameBlock }), +--utils.surround({ "", "" }, function(self) return self:mode_color() end, { FileNameBlock, hl = { fg = colors.bg, force = true } } ), +--utils.surround({ "█", "█" }, function() return utils.get_highlight("TabLine").bg end, { TablineFileNameBlock, TablineCloseButton, hl = { fg = colors.bg, force = true } } ), +--} +--ViMode = utils.surround({ "", "" }, function(self) +-- if self.is_active then +-- return self:mode_color() +-- else +-- return utils.get_highlight("TabLine").bg +-- end +-- end, { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } } ) +-- +----} +--local TablineBufferBlock = { +-- ViMode, +-- TablineFileName, +-- TablineCloseButton, +--} +-- A winbar for regular files +--utils.surround({ "", "" }, "bright_bg", FileNameBlock), +--utils.surround({ "", "" }, function(self) return self:mode_color() end, FileNameBlock), +local BufferLine = utils.make_buflist( + TablineBufferBlock, + { provider = "", hl = { fg = "gray" } }, -- left truncation, optional (defaults to "<") + { provider = "", hl = { fg = "gray" } } -- right trunctation, also optional (defaults to ...... yep, ">") + --{ provider = "", hl = { fg = "gray" } }, -- left truncation, optional (defaults to "<") + --{ provider = "", hl = { fg = "gray" } } -- right trunctation, also optional (defaults to ...... yep, ">") + -- by the way, open a lot of buffers and try clicking them ;) +) + +-- if self.is_active then +-- return utils.get_highlight("TabLineSel").bg +-- else +-- return utils.get_highlight("TabLine").bg +-- end +--end, { TablineFileNameBlock, TablineCloseButton, } ) +-- TabList +local Tabpage = { + provider = function(self) + return "%" .. self.tabnr .. "T " .. self.tabnr .. " %T" + end, + hl = function(self) + if not self.is_active then + return "TabLine" + else + return "TabLineSel" + end + end, +} + +local TabpageClose = { + provider = "%999X %X", + --hl = "TabLine", + hl = { fg = colors.red, bg = colors.bg }, +} + +local TabPages = { + -- only show this component if there's 2 or more tabpages + condition = function() + return #vim.api.nvim_list_tabpages() >= 2 + end, + { provider = "%=" }, + utils.make_tablist(Tabpage), + TabpageClose, +} + +-- TabLineOffset +local TabLineOffset = { + condition = function(self) + local win = vim.api.nvim_tabpage_list_wins(0)[1] + local bufnr = vim.api.nvim_win_get_buf(win) + self.winid = win + + if vim.bo[bufnr].filetype == "NvimTree" then + self.title = "NvimTree" + return true + -- elseif vim.bo[bufnr].filetype == "TagBar" then + -- ... + end + end, + + provider = function(self) + local title = self.title + local width = vim.api.nvim_win_get_width(self.winid) + local pad = math.ceil((width - #title) / 2) + return string.rep(" ", pad) .. title .. string.rep(" ", pad) + end, + + hl = function(self) + if vim.api.nvim_get_current_win() == self.winid then + return "TablineSel" + else + return "Tabline" + end + end, +} + +local TabLine = { + --hl = { bg = colors.bg }, + fallthrough = false, + TabLineOffset, + BufferLine, + TabPages, +} + +vim.cmd([[au FileType * if index(['wipe', 'delete', 'unload'], &bufhidden) >= 0 | set nobuflisted | endif]]) +--local StatusLines = { +-- +-- hl = function() +-- if conditions.is_active() then +-- return "StatusLine" +-- else +-- return "StatusLineNC" +-- end +-- end, +-- +-- -- the first statusline with no condition, or which condition returns true is used. +-- -- think of it as a switch case with breaks to stop fallthrough. +-- fallthrough = false, +-- +-- SpecialStatusline, +-- TerminalStatusline, +-- --InactiveStatusline, +-- DefaultStatusline, +--} +-- +-- --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +-- hl = { bg = colors.bg }, +--local TabLine ={ +-- hl = { bg = colors.bg }, +--} +-- Window Close button: Let the callback know from which window it was clicked from! +-- The following is the recommended way of achieving that: +require("heirline").setup(StatusLines, WinBars, TabLine) + +-- Yep, with heirline we're driving manual! +vim.cmd([[au FileType * if index(['wipe', 'delete', 'unload'], &bufhidden) >= 0 | set nobuflisted | endif]]) + +vim.api.nvim_create_augroup("Heirline", { clear = true }) +vim.api.nvim_create_autocmd("ColorScheme", { + callback = function() + local colors = setup_colors() + utils.on_colorscheme(colors) + end, + group = "Heirline", +}) + +local function get_bufs() + return vim.tbl_filter(function(bufnr) + return vim.api.nvim_buf_is_loaded(bufnr) and vim.bo[bufnr].buflisted + end, vim.api.nvim_list_bufs()) +end + +local function goto_buf(index) + local bufs = get_bufs() + if index > #bufs then + index = #bufs + end + vim.api.nvim_win_set_buf(0, bufs[index]) +end + +local function addKey(key, index) + vim.keymap.set("", "<A-" .. key .. ">", function() + goto_buf(index) + end, { noremap = true, silent = true }) +end + +for i = 1, 9 do + addKey(i, i) +end +addKey("0", 10) +-- Theming +--local function setup_colors() +-- return { +-- bright_bg = utils.get_highlight("Folded").bg, +-- bright_fg = utils.get_highlight("Folded").fg, +-- red = utils.get_highlight("DiagnosticError").fg, +-- dark_red = utils.get_highlight("DiffDelete").bg, +-- green = utils.get_highlight("String").fg, +-- blue = utils.get_highlight("Function").fg, +-- gray = utils.get_highlight("NonText").fg, +-- orange = utils.get_highlight("Constant").fg, +-- purple = utils.get_highlight("Statement").fg, +-- cyan = utils.get_highlight("Special").fg, +-- diag_warn = utils.get_highlight("DiagnosticWarn").fg, +-- diag_error = utils.get_highlight("DiagnosticError").fg, +-- diag_hint = utils.get_highlight("DiagnosticHint").fg, +-- diag_info = utils.get_highlight("DiagnosticInfo").fg, +-- git_del = utils.get_highlight("diffDeleted").fg, +-- git_add = utils.get_highlight("diffAdded").fg, +-- git_change = utils.get_highlight("diffChanged").fg, +-- } +--end +--require('heirline').load_colors(setup_colors()) +-- +--vim.api.nvim_create_augroup("Heirline", { clear = true }) +--vim.api.nvim_create_autocmd("ColorScheme", { +-- callback = function() +-- local colors = setup_colors() +-- utils.on_colorscheme(colors) +-- end, +-- group = "Heirline", +--}) diff --git a/lua/plugins/heirline.lua b/lua/plugins/heirline.lua new file mode 100644 index 0000000..ae2bf41 --- /dev/null +++ b/lua/plugins/heirline.lua @@ -0,0 +1,1124 @@ +local conditions = require("heirline.conditions") +local utils = require("heirline.utils") + +local colors = { + --bg = "#23232e", + bg = nil, + nobg = nil, + white = "#f8f8f2", + darkgray = "#23232e", + gray = "#2d2b3a", + lightgray = "#d6d3ea", + pink = "#f92672", + green = "#50fa7b", + blue = "#39BAE6", + yellow = "#f1fa8c", + orange = "#ffb86c", + purple = "#BF40BF", + violet = "#7F00FF", + red = "#ff5555", + cyan = "#66d9eC", + diag = { + warn = utils.get_highlight("DiagnosticSignWarn").fg, + error = utils.get_highlight("DiagnosticSignError").fg, + hint = utils.get_highlight("DiagnosticSignHint").fg, + info = utils.get_highlight("DiagnosticSignInfo").fg, + }, + git = { + del = "#e95678", + add = "#a6e22e", + change = "#ae81ff", + }, +} + +require("heirline").load_colors(colors) + +local Align = { provider = "%=", hl = { bg = colors.bg } } +local Space = { provider = " ", hl = { bg = colors.bg } } +local Tab = { provider = " " } +local Fill = { provider = "%=", hl = { bg = colors.nobg } } +local LeftSep = { provider = "", hl = { fg = colors.bg } } +local RightSep = { provider = "", hl = { fg = colors.bg } } + +local ViMode = { + init = function(self) + self.mode = vim.fn.mode(1) + if not self.once then + vim.cmd("au ModeChanged *:*o redrawstatus") + end + self.once = true + end, + static = { + mode_names = { + n = "NORMAL ", + no = "N·OPERATOR PENDING ", + nov = "N?", + noV = "N?", + ["no\22"] = "N? ", + niI = "Ni", + niR = "Nr", + niV = "Nv", + nt = "Nt", + v = "VISUAL ", + vs = "Vs", + V = "V·LINE ", + ["\22"] = "V·BLOCK ", + ["\22s"] = "V·BLOCK ", + s = "SELECT ", + S = "S·LINE ", + ["\19"] = "S·BLOCK ", + i = "INSERT ", + ix = "insert x ", + ic = "insert c ", + R = "REPLACE ", + Rc = "Rc", + Rx = "Rx", + Rv = "V·REPLACE ", + Rvc = "Rv", + Rvx = "Rv", + c = "COMMAND ", + cv = "VIM EX ", + ce = "EX ", + r = "PROMPT ", + rm = "MORE ", + ["r?"] = "CONFIRM ", + ["!"] = "SHELL ", + t = "TERMINAL ", + }, + }, + provider = function(self) + return " %2(" .. self.mode_names[self.mode] .. "%)" + end, + hl = function(self) + local color = self:mode_color() + return { fg = color, bold = true } + end, + update = { + "ModeChanged", + }, +} + +-- LSP +local LSPActive = { + condition = conditions.lsp_attached, + update = { "LspAttach", "LspDetach" }, + + provider = function() + local buf_clients = vim.lsp.buf_get_clients() + local buf_client_names = {} + + -- add client + for _, client in pairs(buf_clients) do + if client.name ~= "null-ls" then + table.insert(buf_client_names, client.name) + end + end + return "⚙️ " .. table.concat(buf_client_names, "") + end, + hl = { fg = colors.lightgray, bold = false }, +} + +-- Navic +local Navic = { + condition = require("nvim-navic").is_available, + static = { + -- create a type highlight map + type_hl = { + File = "Directory", + Module = "Include", + Namespace = "TSNamespace", + Package = "Include", + Class = "Struct", + Method = "Method", + Property = "TSProperty", + Field = "TSField", + Constructor = "TSConstructor ", + Enum = "TSField", + Interface = "Type", + Function = "Function", + Variable = "TSVariable", + Constant = "Constant", + String = "String", + Number = "Number", + Boolean = "Boolean", + Array = "TSField", + Object = "Type", + Key = "TSKeyword", + Null = "Comment", + EnumMember = "TSField", + Struct = "Struct", + Event = "Keyword", + Operator = "Operator", + TypeParameter = "Type", + }, + }, + init = function(self) + local data = require("nvim-navic").get_data() or {} + local children = {} + -- create a child for each level + for i, d in ipairs(data) do + local child = { + { + provider = d.icon, + hl = self.type_hl[d.type], + }, + { + provider = d.name, + -- highlight icon only or location name as well + -- hl = self.type_hl[d.type], + }, + } + -- add a separator only if needed + if #data > 1 and i < #data then + table.insert(child, { + provider = " > ", + hl = { fg = colors.white }, + }) + end + table.insert(children, child) + end + -- instantiate the new child, overwriting the previous one + self[1] = self:new(children, 1) + end, + hl = { fg = colors.white }, +} + +-- Diagnostics +local Diagnostics = { + + condition = conditions.has_diagnostics, + + static = { + error_icon = vim.fn.sign_getdefined("DiagnosticSignError")[1].text, + warn_icon = vim.fn.sign_getdefined("DiagnosticSignWarn")[1].text, + info_icon = vim.fn.sign_getdefined("DiagnosticSignInfo")[1].text, + hint_icon = vim.fn.sign_getdefined("DiagnosticSignHint")[1].text, + }, + + init = function(self) + self.errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }) + self.warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) + self.hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT }) + self.info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO }) + end, + + update = { "DiagnosticChanged", "BufEnter" }, + + { + provider = function(self) + -- 0 is just another output, we can decide to print it or not! + return self.errors > 0 and (self.error_icon .. self.errors .. " ") + end, + hl = { fg = colors.diag.error, bg = colors.bg }, + }, + { + provider = function(self) + return self.warnings > 0 and (self.warn_icon .. self.warnings .. " ") + end, + hl = { fg = colors.diag.warn, bg = colors.bg }, + }, + { + provider = function(self) + return self.info > 0 and (self.info_icon .. self.info .. " ") + end, + hl = { fg = colors.diag.info, bg = colors.bg }, + }, + { + provider = function(self) + return self.hints > 0 and (self.hint_icon .. self.hints) + end, + hl = { fg = colors.diag.hint, bg = colors.bg }, + }, + on_click = { + callback = function() + require("trouble").toggle({ mode = "document_diagnostics" }) + -- or + -- vim.diagnostic.setqflist() + end, + name = "heirline_diagnostics", + }, +} + +-- Git +-- For the ones who're not (too) afraid of changes! Uses gitsigns. +local Git = { + condition = conditions.is_git_repo, + + init = function(self) + self.status_dict = vim.b.gitsigns_status_dict + self.has_changes = self.status_dict.added ~= 0 or self.status_dict.removed ~= 0 or self.status_dict.changed ~= 0 + end, + --hl = { fg = "orange" }, + hl = { fg = colors.orange, bg = colors.bg }, + { -- git branch name + provider = function(self) + return " " .. self.status_dict.head + end, + --hl = { bold = true }, + hl = { bold = true, bg = colors.bg }, + }, + -- You could handle delimiters, icons and counts similar to Diagnostics + { + condition = function(self) + return self.has_changes + end, + --provider = "(" + provider = " ", + }, + { + provider = function(self) + local count = self.status_dict.added or 0 + --return count > 0 and ("+" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_add" }, + hl = { fg = colors.git.add, bg = colors.bg }, + }, + { + provider = function(self) + local count = self.status_dict.removed or 0 + --return count > 0 and ("-" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_del" }, + hl = { fg = colors.git.del, bg = colors.bg }, + }, + { + provider = function(self) + local count = self.status_dict.changed or 0 + --return count > 0 and ("~" .. count) + return count > 0 and (" 柳" .. count) + end, + --hl = { fg = "git_change" }, + hl = { fg = colors.git.change, bg = colors.bg }, + }, + --{ + -- condition = function(self) + -- return self.has_changes + -- end, + -- provider = ")", + --}, + on_click = { + callback = function() + -- If you want to use Fugitive: + -- vim.cmd("G") + + -- If you prefer Lazygit + -- use vim.defer_fn() if the callback requires + -- opening of a floating window + -- (this also applies to telescope) + vim.defer_fn(function() + vim.cmd("Lazygit") + end, 100) + end, + name = "heirline_git", + }, +} + +-- Debugger +-- Display informations from nvim-dap! +local DAPMessages = { + -- display the dap messages only on the debugged file + condition = function() + local session = require("dap").session() + if session then + local filename = vim.api.nvim_buf_get_name(0) + if session.config then + local progname = session.config.program + return filename == progname + end + end + return false + end, + provider = function() + return " " .. require("dap").status() + end, + hl = { fg = utils.get_highlight("Debug").fg }, + -- Debugger on_click: step-over, step-into, next, previous, stop buttons + -- coming soon! +} + +-- Tests +-- This requires the great ultest. +--local UltTest = { +-- condition = function() +-- return vim .api.nvim_call_function("ultest#is_test_file", {}) ~= 0 +-- end, +-- static = { +-- passed_icon = vim.fn.sign_getdefined("test_pass")[1].text, +-- failed_icon = vim.fn.sign_getdefined("test_fail")[1].text, +-- passed_hl = { fg = utils.get_highlight("UltestPass").fg }, +-- failed_hl = { fg = utils.get_highlight("UltestFail").fg }, +-- }, +-- init = function(self) +-- self.status = vim.api.nvim_call_function("ultest#status", {}) +-- end, +-- +-- -- again, if you'd like icons and numbers to be colored differently, +-- -- just split the component in two +-- { +-- provider = function(self) +-- return self.passed_icon .. self.status.passed .. " " +-- end, +-- hl = function(self) +-- return self.passed_hl +-- end, +-- }, +-- { +-- provider = function(self) +-- return self.failed_icon .. self.status.failed .. " " +-- end, +-- hl = function(self) +-- return self.failed_hl +-- end, +-- }, +-- { +-- provider = function(self) +-- return "of " .. self.status.tests - 1 +-- end, +-- }, +--} + +-- FileNameBlock: FileIcon, FileName and friends +local FileNameBlock = { + -- let's first set up some attributes needed by this component and it's children + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { bg = colors.bg }, +} + +-- FileIcon, FileName, FileFlags and FileNameModifier +local FileIcon = { + init = function(self) + local filename = self.filename + local extension = vim.fn.fnamemodify(filename, ":e") + self.icon, self.icon_color = + require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) + end, + provider = function(self) + return self.icon and (self.icon .. " ") + end, + hl = function(self) + return { fg = self.icon_color, bg = colors.bg } + end, +} + +local FileName = { + provider = function(self) + -- first, trim the pattern relative to the current directory. For other + -- options, see :h filename-modifers + local filename = vim.fn.fnamemodify(self.filename, ":.") + if filename == "" then + return "No Name" + end + -- now, if the filename would occupy more than 1/4th of the available + -- space, we trim the file path to its initials + -- See Flexible Components section below for dynamic truncation + if not conditions.width_percent_below(#filename, 0.25) then + filename = vim.fn.pathshorten(filename) + end + return filename + end, + --hl = { fg = utils.get_highlight("Statusline").fg, bold = false, bg = colors.bg }, + hl = { fg = colors.white, bold = false, bg = colors.bg }, +} + +local FileFlags = { + { + provider = function() + if vim.bo.modified then + return " [+]" -- ±[+] + end + end, + hl = { fg = colors.green, bg = colors.bg }, + }, + { + provider = function() + if not vim.bo.modifiable or vim.bo.readonly then + return " " + end + end, + --hl = { fg = colors.orange }, + hl = { fg = colors.orange, bold = true, bg = colors.bg }, + }, +} + +local FileNameModifier = { + hl = function() + if vim.bo.modified then + return { fg = colors.green, bold = false, force = true } + end + end, +} + +-- FileType, FileEncoding and FileFormat +local FileType = { + provider = function() + return vim.bo.filetype + end, + hl = { fg = colors.white, bold = false, bg = colors.bg }, +} + +local FileEncoding = { + Space, + provider = function() + local enc = (vim.bo.fenc ~= "" and vim.bo.fenc) or vim.o.enc -- :h 'enc' + return enc:lower() + end, + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { bg = colors.bg, bold = false }, +} + +local FileFormat = { + provider = function() + local fmt = vim.bo.fileformat + --return fmt ~= "unix" and fmt:upper() + return fmt ~= "unix" and fmt:lower() + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +-- FileSize and FileLastModified +local FileSize = { + provider = function() + -- stackoverflow, compute human readable file size + local suffix = { "b", "k", "M", "G", "T", "P", "E" } + local fsize = vim.fn.getfsize(vim.api.nvim_buf_get_name(0)) + fsize = (fsize < 0 and 0) or fsize + if fsize < 1024 then + return fsize .. suffix[1] + end + local i = math.floor((math.log(fsize) / math.log(1024))) + return string.format("%.2g%s", fsize / math.pow(1024, i), suffix[i + 1]) + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +local FileLastModified = { + -- did you know? Vim is full of functions! + provider = function() + local ftime = vim.fn.getftime(vim.api.nvim_buf_get_name(0)) + return (ftime > 0) and os.date("%c", ftime) + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +-- Spell +-- Add indicator when spell is set! +local Spell = { + condition = function() + return vim.wo.spell + end, + provider = " 暈", + hl = { bold = true, fg = colors.yellow }, +} + +local help_file_name = { + condition = function() + return vim.bo.filetype == "help" + end, + provider = function() + local filename = vim.api.nvim_buf_get_name(0) + return vim.fn.fnamemodify(filename, ":t") + end, + hl = { fg = colors.blue }, +} + +-- Cursor position: Ruler +local Ruler = { + -- %l = current line number + -- %L = number of lines in the buffer + -- %c = column number + -- %P = percentage through file of displayed window + --provider = "%P %(%l/%L%):%c ", + --provider = "%3(%2l%):%c %P ", + --provider = "%7(%l/%3L%):%2c%P ", + --provider = "%3(%P%)", + --provider = "%7(%l/%3L%):%2c %P", + --provider = "%7 %p%% Ln %l, Col %c", + --provider = "%9( %P %2l/%L :%2c %)", + --provider = "%9(%2l%2( : %c%)/%L %P %)", + --provider = "%7(%l:%c/%L%) ", + --provider = "%6(%l:%1.5c/%L%) %P ", + --provider = "%6(%l:%1.5c/%L%) ", + --provider = "%3(%l:%1.5c/%L%) ", + --provider = "%7(%l/%3L%):%2c ", + provider = "%7(%l:%c%) ", + --provider = "%l:%c ", + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true }, + hl = { fg = colors.darkgray, bold = true }, +} + +local cursor_location = { + { provider = "%l/%L|%c ", hl = { bold = true } }, + { + provider = " %P ", + hl = function(self) + local color = self:mode_color() + return { fg = color, bold = true } + end, + }, +} + +local WordCount = { + condition = function() + return conditions.buffer_matches({ + filetype = { + "markdown", + "txt", + "vimwiki", + }, + }) + end, + Space, + { + provider = function() + return "W:" .. vim.fn.wordcount().words + end, + }, +} + +-- Working Directory +local WorkDir = { + provider = function(self) + self.icon = (vim.fn.haslocaldir(0) == 1 and "l" or "g") .. " " .. " " + local cwd = vim.fn.getcwd(0) + self.cwd = vim.fn.fnamemodify(cwd, ":~") + end, + hl = { fg = colors.blue, bold = true, bg = colors.bg }, + + utils.make_flexible_component(1, { + -- evaluates to the full-lenth path + provider = function(self) + local trail = self.cwd:sub(-1) == "/" and "" or "/" + return self.icon .. self.cwd .. trail .. " " + end, + }, { + -- evaluates to the shortened path + provider = function(self) + local cwd = vim.fn.pathshorten(self.cwd) + local trail = self.cwd:sub(-1) == "/" and "" or "/" + return self.icon .. cwd .. trail .. " " + end, + }, { + -- evaluates to "", hiding the component + provider = "", + }), +} + +-- Snippets Indicator +-- This requires ultisnips +--local Snippets = { +-- -- check that we are in insert or select mode +-- condition = function() +-- return vim.tbl_contains({'s', 'i'}, vim.fn.mode()) +-- end, +-- provider = function() +-- local forward = (vim.fn["UltiSnips#CanJumpForwards"]() == 1) and "" or "" +-- local backward = (vim.fn["UltiSnips#CanJumpBackwards"]() == 1) and " " or "" +-- return backward .. forward +-- end, +-- hl = { fg = "red", bold = true }, +--} + +-- let's add the children to our FileNameBlock component +FileNameBlock = utils.insert( + FileNameBlock, + FileIcon, + utils.insert(FileNameModifier, FileName), -- a new table where FileName is a child of FileNameModifier + unpack(FileFlags), -- A small optimisation, since their parent does nothing + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) + +local FileInfoBlock = { + -- let's first set up some attributes needed by this component and it's children + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, +} + +FileInfoBlock = utils.insert( + FileInfoBlock, + Space, + FileIcon, + FileType, + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) + +ViMode = utils.surround({ "", "" }, function(self) + return self:mode_color() +end, { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) + +LeftSpace = utils.surround({ "", " " }, function(self) + return self:mode_color() +end, { LeftSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) + +RightSpace = utils.surround( + { "", "" }, + colors.gray, + { RightSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } } +) + +RightSpace2 = utils.surround( + { "█", "" }, + colors.darkgray, + { RightSpace2, hl = { fg = colors.darkgray, force = true } } +) + +RightSpace3 = utils.surround( + { "█", "" }, + utils.get_highlight("statusline").bg, + { RightSpace3, hl = { fg = colors.darkgray, force = true } } +) + +LSPActive = utils.surround({ "", "" }, function(self) + return self:mode_color() +end, { Space, LSPActive, hl = { bg = colors.darkgray, force = true } }) + +FileInfoBlock = utils.surround({ "", "" }, function(self) + return self:mode_color() +end, { FileInfoBlock, Space, hl = { bg = colors.gray, force = true } }) + +Ruler = utils.surround({ "", "" }, colors.gray, { Ruler, hl = { fg = colors.gray, force = true } }) + +local left = { + { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { LeftSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileNameBlock, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Git, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, +} +local middle = { + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Navic, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { DAPMessages, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, +} +local right = { + { Diagnostics, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { + RightSpace3, + hl = { bg = colors.darkgray, force = true }, + }, + { LSPActive, hl = { bg = colors.darkgray, force = true } }, + { RightSpace2, hl = { bg = colors.gray, force = true } }, + { FileInfoBlock, hl = { bg = colors.gray, force = true } }, + { RightSpace, hl = { fg = colors.gray, force = true } }, + --{ cursor_location, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + --utils.make_flexible_component( + -- 3, + -- { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + -- { provider = "%<" } + --), +} +--local Align = { provider = "%=", hl = { bg = colors.bg } } + +local sections = { left, middle, right } +local DefaultStatusline = { sections } +--LSPActive, Space, LSPMessages, Space, UltTest, Space, FileType, Space, Ruler, Space, ScrollBar + +local InactiveStatusline = { + condition = conditions.is_not_active, + { FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileName, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, +} + +local SpecialStatusline = { + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + + --FileType, + --Space, + --Align, + { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { LeftSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { RightSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, +} + +local TerminalStatusline = { + + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + + --hl = { bg = colors.red }, + + -- Quickly add a condition to the ViMode to only show it when buffer is active! + --{ condition = conditions.is_active, ViMode, Space }, + { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { LeftSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { RightSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + --FileType, + --Space, + --TerminalName, + --Align, +} + +local StatusLine = { + + --hl = function() + -- if conditions.is_active() then + -- return "StatusLine" + -- else + -- return "StatusLineNC" + -- end + --end, + static = { + mode_colors = { + n = colors.blue, + i = colors.green, + v = colors.purple, + V = colors.purple, + ["\22"] = colors.purple, + c = colors.red, + s = colors.purple, + S = colors.purple, + ["\19"] = colors.purple, + R = colors.orange, + r = colors.orange, + ["!"] = colors.red, + t = colors.red, + }, + mode_color = function(self) + local mode = conditions.is_active() and vim.fn.mode() or "n" + return self.mode_colors[mode] + end, + hl = function(self) + local color = self:mode_color() -- here! + return { bg = color } + end, + }, + fallthrough = false, + + SpecialStatusline, + TerminalStatusline, + InactiveStatusline, + DefaultStatusline, +} + +-- WinBar +vim.api.nvim_create_autocmd("User", { + pattern = "HeirlineInitWinbar", + callback = function(args) + local buf = args.buf + local buftype = vim.tbl_contains({ "prompt", "nofile", "help", "quickfix" }, vim.bo[buf].buftype) + local filetype = vim.tbl_contains({ "gitcommit", "fugitive" }, vim.bo[buf].filetype) + if buftype or filetype then + vim.opt_local.winbar = nil + end + end, +}) + +On_click = { + -- get the window id of the window in which the component was evaluated + minwid = function() + return vim.api.nvim_get_current_win() + end, + callback = function(_, minwid) + -- winid is the window id of the window the component was clicked from + local winid = minwid + -- do something with the window id, e.g.: + local buf = vim.api.nvim_win_get_buf(winid) + -- ... + end, +} + +local CloseButton = { + condition = function(self) + return not vim.bo.modified + end, + -- a small performance improvement: + -- re register the component callback only on layout/buffer changes. + update = { "WinNew", "WinClosed", "BufEnter" }, + { provider = " " }, + { + provider = "", + hl = { fg = "gray" }, + On_click = { + minwid = function() + return vim.api.nvim_get_current_win() + end, + callback = function(_, minwid) + vim.api.nvim_win_close(minwid, true) + end, + name = "heirline_winbar_close_button", + }, + }, +} + +local Center = { + fallthrough = false, + { -- Hide the winbar for special buffers + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + init = function() + vim.opt_local.winbar = nil + end, + }, + { -- A special winbar for terminals + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + FileType, + Space, + --TerminalName, + }, + { -- An inactive winbar for regular files + condition = function() + return not conditions.is_active() + end, + utils.surround({ "", "" }, colors.nobg, { Space }), + }, + -- A winbar for regular files + utils.surround({ "", "" }, colors.nobg, { FileNameBlock }), +} + +--local WinBar = { Align, Center, Align } +local WinBar = { Space, Center } + +-- TabLine +local TablineBufnr = { + provider = function(self) + return tostring(self.bufnr) .. "." + end, + hl = { fg = colors.white, bold = false }, +} + +-- we redefine the filename component, as we probably only want the tail and not the relative path +local TablineFileName = { + provider = function(self) + -- self.filename will be defined later, just keep looking at the example! + local filename = self.filename + filename = filename == "" and "No Name" or vim.fn.fnamemodify(filename, ":t") + return filename + end, + hl = function(self) + return { fg = colors.white, bold = self.is_active or self.is_visible, italic = true } + end, +} + +local TablineFileFlags = { + { + provider = function(self) + if vim.bo[self.bufnr].modified then + return " [+] " + end + end, + hl = { fg = colors.green }, + }, + { + provider = function(self) + if not vim.bo[self.bufnr].modifiable or vim.bo[self.bufnr].readonly then + return " " + end + end, + hl = { fg = "orange" }, + }, +} + +local TablineFileIcon = { + init = function(self) + local filename = self.filename + local extension = vim.fn.fnamemodify(filename, ":e") + self.icon, self.icon_color = + require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) + end, + provider = function(self) + return self.icon and (" " .. self.icon .. " ") + end, + hl = function(self) + return { fg = self.icon_color } + end, +} + +-- Here the filename block finally comes together +local TablineFileNameBlock = { + init = function(self) + self.filename = vim.api.nvim_buf_get_name(self.bufnr) + end, + hl = function(self) + if self.is_active then + return "TabLineSel" + -- why not? + --elseif not vim.api.nvim_buf_is_loaded(self.bufnr) then + --return { fg = "gray", bg = colors.bg } + else + return "TabLineFill" + end + end, + on_click = { + callback = function(_, minwid, _, button) + if button == "m" then -- close on mouse middle click + vim.api.nvim_buf_delete(minwid, { force = false }) + else + vim.api.nvim_win_set_buf(0, minwid) + end + end, + minwid = function(self) + return self.bufnr + end, + name = "heirline_tabline_buffer_callback", + }, + TablineBufnr, + TablineFileIcon, + TablineFileName, + TablineFileFlags, +} + +-- a nice "x" button to close the buffer +local TablineCloseButton = { + condition = function(self) + return not vim.api.nvim_buf_get_option(self.bufnr, "modified") + end, + { provider = " " }, + { + provider = " ", + --hl = { fg = "red", bg = colors.bg }, + hl = { fg = colors.red }, + on_click = { + callback = function(_, minwid) + vim.api.nvim_buf_delete(minwid, { force = false }) + end, + minwid = function(self) + return self.bufnr + end, + name = "heirline_tabline_close_buffer_callback", + }, + }, +} + +-- The final touch! +local TablineBufferBlock = utils.surround({ "", "" }, function(self) + --local TablineBufferBlock = utils.surround({ "█", "█" }, function(self) + if self.is_active then + return utils.get_highlight("TabLineSel").bg + else + return utils.get_highlight("TabLineFill").bg + end +end, { Tab, TablineFileNameBlock, TablineCloseButton }) + +local BufferLine = utils.make_buflist( + TablineBufferBlock, + { provider = "", hl = { fg = colors.white } }, -- left truncation, optional (defaults to "<") + { provider = "", hl = { fg = colors.white } } -- right trunctation, also optional (defaults to ...... yep, ">") + -- by the way, open a lot of buffers and try clicking them and here's some + -- free icons ;) +) + +-- TabList +local Tabpage = { + provider = function(self) + return "%" .. self.tabnr .. "T " .. self.tabnr .. " %T" + end, + hl = function(self) + if not self.is_active then + return "TabLineFill" + else + return "TabLineSel" + end + end, +} + +local TabpageClose = { + provider = "%999X %X", + --hl = "TabLine", + hl = { fg = colors.red, bg = colors.bg }, +} + +local TabPages = { + -- only show this component if there's 2 or more tabpages + condition = function() + return #vim.api.nvim_list_tabpages() >= 2 + end, + { + provider = "%=", + }, + utils.make_tablist(Tabpage), + TabpageClose, +} + +-- TabLineOffset +local TabLineOffset = { + condition = function(self) + local win = vim.api.nvim_tabpage_list_wins(0)[1] + local bufnr = vim.api.nvim_win_get_buf(win) + self.winid = win + + if vim.api.nvim_buf_get_option(bufnr, "filetype") == "NvimTree" then + self.title = "NvimTree" + return true + end + end, + + provider = function(self) + local title = self.title + local width = vim.api.nvim_win_get_width(self.winid) + local pad = math.ceil((width - #title) / 2) + return string.rep(" ", pad) .. title .. string.rep(" ", pad) + end, + + hl = function(self) + if vim.api.nvim_get_current_win() == self.winid then + return "TablineSel" + else + return "TablineFill" + end + end, +} + +local TabLine = { + TabLineOffset, + BufferLine, + TabPages, +} + +require("heirline").setup(StatusLine, WinBar, TabLine) + +-- Yep, with heirline we're driving manual! +vim.cmd([[au FileType * if index(['wipe', 'delete', 'unload'], &bufhidden) >= 0 | set nobuflisted | endif]]) + +local function get_bufs() + return vim.tbl_filter(function(bufnr) + return vim.api.nvim_buf_is_loaded(bufnr) and vim.bo[bufnr].buflisted + end, vim.api.nvim_list_bufs()) +end + +local function goto_buf(index) + local bufs = get_bufs() + if index > #bufs then + index = #bufs + end + vim.api.nvim_win_set_buf(0, bufs[index]) +end + +local function addKey(key, index) + vim.keymap.set("", "<A-" .. key .. ">", function() + goto_buf(index) + end, { noremap = true, silent = true }) +end + +for i = 1, 9 do + addKey(i, i) +end +addKey("0", 10) diff --git a/lua/plugins/heirline.lua-202210111610.backup b/lua/plugins/heirline.lua-202210111610.backup new file mode 100644 index 0000000..e1a54e3 --- /dev/null +++ b/lua/plugins/heirline.lua-202210111610.backup @@ -0,0 +1,1452 @@ +local conditions = require("heirline.conditions") +local utils = require("heirline.utils") + +local colors = { + --bg = "#23232e", + bg = nil, + nobg = nil, + bright_fg = "#ffffff", + bright_bg = "#000000", + white = "#f8f8f2", + --darkgray = "#1c1c29", + --darkgray = "#2d2b3a", + --darkgray = "#181818", + darkgray = "#23232e", + --darkgray = "#404040", + --gray = "#333842", + --gray = "#393547", + --gray = "#333842", + --lightgray = "#888888", + gray = "#2d2b3a", + lightgray = "#d6d3ea", + pink = "#f92672", + green = "#50fa7b", + blue = "#39BAE6", + yellow = "#f1fa8c", + orange = "#ffb86c", + ---purple = "#bd93f9", + ---purple = "#be2ed6", + purple = "#BF40BF", + --purple = "#5D3FD3", + --purple = "#DA70D6", + violet = "#7F00FF", + red = "#ff5555", + cyan = "#66d9eC", + diag = { + warn = utils.get_highlight("DiagnosticSignWarn").fg, + error = utils.get_highlight("DiagnosticSignError").fg, + hint = utils.get_highlight("DiagnosticSignHint").fg, + info = utils.get_highlight("DiagnosticSignInfo").fg, + }, + git = { + del = "#e95678", + add = "#a6e22e", + change = "#ae81ff", + }, +} + +require("heirline").load_colors(colors) + +local ViMode = { + init = function(self) + self.mode = vim.fn.mode(1) + if not self.once then + vim.cmd("au ModeChanged *:*o redrawstatus") + end + self.once = true + end, + static = { + mode_names = { + n = "NORMAL ", + no = "N·OPERATOR PENDING ", + nov = "N?", + noV = "N?", + ["no\22"] = "N? ", + niI = "Ni", + niR = "Nr", + niV = "Nv", + nt = "Nt", + v = "VISUAL ", + vs = "Vs", + V = "V·LINE ", + ["\22"] = "V·BLOCK ", + ["\22s"] = "V·BLOCK ", + s = "SELECT ", + S = "S·LINE ", + ["\19"] = "S·BLOCK ", + i = "INSERT ", + ix = "insert x ", + ic = "insert c ", + R = "REPLACE ", + Rc = "Rc", + Rx = "Rx", + Rv = "V·REPLACE ", + Rvc = "Rv", + Rvx = "Rv", + c = "COMMAND ", + cv = "VIM EX ", + --ce = "EX ", + r = "PROMPT ", + rm = "MORE ", + ["r?"] = "CONFIRM ", + ["!"] = "SHELL ", + t = "TERMINAL ", + }, + }, + provider = function(self) + return " %2(" .. self.mode_names[self.mode] .. "%)" + end, + hl = function(self) + local color = self:mode_color() + return { fg = color, bold = true } + end, + update = { + "ModeChanged", + }, +} + +-- +-- +-- +-- +--凜兩 +-- LSP + +--local LSPActive = { +-- condition = conditions.lsp_attached, +-- update = {'LspAttach', 'LspDetach'}, +-- +-- -- You can keep it simple, +-- -- provider = " [LSP]", +-- +-- -- Or complicate things a bit and get the servers names +-- provider = function() +-- local names = {} +-- for i, server in pairs(vim.lsp.buf_get_clients(0)) do +-- table.insert(names, server.name) +-- end +-- return " [" .. table.concat(names, " ") .. "]" +-- end, +-- hl = { fg = "green", bold = true }, +-- on_click = { +-- callback = function() +-- vim.defer_fn(function() +-- vim.cmd("LspInfo") +-- end, 100) +-- end, +-- name = "heirline_LSP", +-- }, +--} + +--local LSPActive = { +-- condition = conditions.lsp_attached, +-- update = { "LspAttach", "LspDetach" }, +-- +-- -- You can keep it simple, +-- -- provider = " [LSP]", +-- +-- -- Or complicate things a bit and get the servers names +-- provider = function() +-- local names = {} +-- for i, server in pairs(vim.lsp.buf_get_clients(0)) do +-- table.insert(names, server.name) +-- end +-- return " [" .. table.concat(names, " ") .. "]" +-- end, +-- hl = { fg = "green", bold = true }, +--} + +--local LSPActive = { +-- condition = conditions.lsp_attached, +-- +-- provider = function() +-- local names = vim.tbl_values(vim.tbl_map(function(cl) +-- return cl.name +-- end, vim.lsp.buf_get_clients(0))) +-- +-- return "LSP " .. table.concat(names, " ") .. "" +-- end, +-- hl = { fg = colors.bg }, +--} +local LSPActive = { + condition = conditions.lsp_attached, + update = { "LspAttach", "LspDetach" }, + + -- You can keep it simple, + -- provider = " [LSP]", + + -- Or complicate things a bit and get the servers names + provider = function() + local buf_clients = vim.lsp.buf_get_clients() + local buf_ft = vim.bo.filetype + local buf_client_names = {} + + -- add client + for _, client in pairs(buf_clients) do + if client.name ~= "null-ls" then + table.insert(buf_client_names, client.name) + end + end + return "⚙️ " .. table.concat(buf_client_names, "") + --return table.concat(buf_client_names, " ") + --return "⚙️ " .. table.concat(buf_client_names, ", ") .. " " + --return " " .. table.concat(names, " ") .. " " + end, + hl = { fg = colors.lightgray, bold = false }, +} +--local LSPActive = { +-- function(msg) +-- msg = msg or "LS Inactive" +-- local buf_clients = vim.lsp.buf_get_clients() +-- if next(buf_clients) == nil then +-- if type(msg) == "boolean" or #msg == 0 then +-- return "LS Inactive" +-- end +-- return msg +-- end +-- +-- local buf_ft = vim.bo.filetype +-- local buf_client_names = {} +-- +-- -- add client +-- for _, client in pairs(buf_clients) do +-- if client.name ~= "null-ls" then +-- table.insert(buf_client_names, client.name) +-- end +-- end +-- +-- -- add formatter +-- local formatters = require("user.lsp.null-ls.formatters") +-- local supported_formatters = formatters.list_registered(buf_ft) +-- vim.list_extend(buf_client_names, supported_formatters) +-- +-- -- add linter +-- local linters = require("user.lsp.null-ls.linters") +-- local supported_linters = linters.list_registered(buf_ft) +-- vim.list_extend(buf_client_names, supported_linters) +-- +-- return table.concat(buf_client_names, " ") +-- -- return "[" .. table.concat(buf_client_names, ", ") .. "]" +-- end, +-- hl = { fg = colors.bg }, +--} +-- lsp status +-- I personally use it only to display progress messages! +-- See lsp-status/README.md for configuration options. + +-- Note: check "j-hui/fidget.nvim" for a nice statusline-free alternative. +local LSPMessages = { + provider = require("lsp-status").status, + hl = { fg = "gray" }, +} + +-- Nvim Navic +--local Navic = { +-- condition = require("nvim-navic").is_available, +-- provider = require("nvim-navic").get_location, +--} +--local Navic = utils.make_flexible_component(3, Navic, { provider = "" }) + +-- Full nerd (with icon colors)! +local Navic = { + condition = require("nvim-navic").is_available, + static = { + -- create a type highlight map + type_hl = { + File = "Directory", + Module = "Include", + Namespace = "TSNamespace", + Package = "Include", + Class = "Struct", + Method = "Method", + Property = "TSProperty", + Field = "TSField", + Constructor = "TSConstructor ", + Enum = "TSField", + Interface = "Type", + Function = "Function", + Variable = "TSVariable", + Constant = "Constant", + String = "String", + Number = "Number", + Boolean = "Boolean", + Array = "TSField", + Object = "Type", + Key = "TSKeyword", + Null = "Comment", + EnumMember = "TSField", + Struct = "Struct", + Event = "Keyword", + Operator = "Operator", + TypeParameter = "Type", + }, + }, + init = function(self) + local data = require("nvim-navic").get_data() or {} + local children = {} + -- create a child for each level + for i, d in ipairs(data) do + local child = { + { + provider = d.icon, + hl = self.type_hl[d.type], + }, + { + provider = d.name, + -- highlight icon only or location name as well + -- hl = self.type_hl[d.type], + }, + } + -- add a separator only if needed + if #data > 1 and i < #data then + table.insert(child, { + provider = " > ", + hl = { fg = "bright_fg" }, + }) + end + table.insert(children, child) + end + -- instantiate the new child, overwriting the previous one + self[1] = self:new(children, 1) + end, + hl = { fg = "gray" }, +} + +-- Diagnostics +local Diagnostics = { + + condition = conditions.has_diagnostics, + + static = { + error_icon = vim.fn.sign_getdefined("DiagnosticSignError")[1].text, + warn_icon = vim.fn.sign_getdefined("DiagnosticSignWarn")[1].text, + info_icon = vim.fn.sign_getdefined("DiagnosticSignInfo")[1].text, + hint_icon = vim.fn.sign_getdefined("DiagnosticSignHint")[1].text, + }, + + init = function(self) + self.errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }) + self.warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) + self.hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT }) + self.info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO }) + end, + + update = { "DiagnosticChanged", "BufEnter" }, + + { + provider = function(self) + -- 0 is just another output, we can decide to print it or not! + return self.errors > 0 and (self.error_icon .. self.errors .. " ") + end, + hl = { fg = colors.diag.error, bg = colors.bg }, + }, + { + provider = function(self) + return self.warnings > 0 and (self.warn_icon .. self.warnings .. " ") + end, + hl = { fg = colors.diag.warn, bg = colors.bg }, + }, + { + provider = function(self) + return self.info > 0 and (self.info_icon .. self.info .. " ") + end, + hl = { fg = colors.diag.info, bg = colors.bg }, + }, + { + provider = function(self) + return self.hints > 0 and (self.hint_icon .. self.hints) + end, + hl = { fg = colors.diag.hint, bg = colors.bg }, + }, + --{ + -- provider = "]", + --}, + on_click = { + callback = function() + require("trouble").toggle({ mode = "document_diagnostics" }) + -- or + -- vim.diagnostic.setqflist() + end, + name = "heirline_diagnostics", + }, +} + +-- Git +-- For the ones who're not (too) afraid of changes! Uses gitsigns. +local Git = { + condition = conditions.is_git_repo, + + init = function(self) + self.status_dict = vim.b.gitsigns_status_dict + self.has_changes = self.status_dict.added ~= 0 or self.status_dict.removed ~= 0 or self.status_dict.changed ~= 0 + end, + --hl = { fg = "orange" }, + hl = { fg = colors.orange, bg = colors.bg }, + { -- git branch name + provider = function(self) + return " " .. self.status_dict.head + end, + --hl = { bold = true }, + hl = { bold = true, bg = colors.bg }, + }, + -- You could handle delimiters, icons and counts similar to Diagnostics + { + condition = function(self) + return self.has_changes + end, + --provider = "(" + provider = " ", + }, + { + provider = function(self) + local count = self.status_dict.added or 0 + --return count > 0 and ("+" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_add" }, + hl = { fg = colors.git.add, bg = colors.bg }, + }, + { + provider = function(self) + local count = self.status_dict.removed or 0 + --return count > 0 and ("-" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_del" }, + hl = { fg = colors.git.del, bg = colors.bg }, + }, + { + provider = function(self) + local count = self.status_dict.changed or 0 + --return count > 0 and ("~" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_change" }, + hl = { fg = colors.git.change, bg = colors.bg }, + }, + --{ + -- condition = function(self) + -- return self.has_changes + -- end, + -- provider = ")", + --}, + on_click = { + callback = function() + -- If you want to use Fugitive: + -- vim.cmd("G") + + -- If you prefer Lazygit + -- use vim.defer_fn() if the callback requires + -- opening of a floating window + -- (this also applies to telescope) + vim.defer_fn(function() + vim.cmd("Lazygit") + end, 100) + end, + name = "heirline_git", + }, +} + +-- Debugger +-- Display informations from nvim-dap! +local DAPMessages = { + -- display the dap messages only on the debugged file + condition = function() + local session = require("dap").session() + if session then + local filename = vim.api.nvim_buf_get_name(0) + if session.config then + local progname = session.config.program + return filename == progname + end + end + return false + end, + provider = function() + return " " .. require("dap").status() + end, + hl = { fg = utils.get_highlight("Debug").fg }, + -- Debugger on_click: step-over, step-into, next, previous, stop buttons + -- coming soon! +} + +-- Tests +-- This requires the great ultest. +--local UltTest = { +-- condition = function() +-- return vim .api.nvim_call_function("ultest#is_test_file", {}) ~= 0 +-- end, +-- static = { +-- passed_icon = vim.fn.sign_getdefined("test_pass")[1].text, +-- failed_icon = vim.fn.sign_getdefined("test_fail")[1].text, +-- passed_hl = { fg = utils.get_highlight("UltestPass").fg }, +-- failed_hl = { fg = utils.get_highlight("UltestFail").fg }, +-- }, +-- init = function(self) +-- self.status = vim.api.nvim_call_function("ultest#status", {}) +-- end, +-- +-- -- again, if you'd like icons and numbers to be colored differently, +-- -- just split the component in two +-- { +-- provider = function(self) +-- return self.passed_icon .. self.status.passed .. " " +-- end, +-- hl = function(self) +-- return self.passed_hl +-- end, +-- }, +-- { +-- provider = function(self) +-- return self.failed_icon .. self.status.failed .. " " +-- end, +-- hl = function(self) +-- return self.failed_hl +-- end, +-- }, +-- { +-- provider = function(self) +-- return "of " .. self.status.tests - 1 +-- end, +-- }, +--} + +-- FileName and Friends + +--local Align = { provider = "%=" } +local Align = { provider = "%=", hl = { bg = colors.bg } } +local Space = { provider = " ", hl = { bg = colors.bg } } +local Tab = { provider = " " } +local Fill = { provider = "%=", hl = { bg = colors.nobg } } +local LeftSep = { provider = "", hl = { fg = colors.bg } } +local RightSep = { provider = "", hl = { fg = colors.bg } } + +local FileNameBlock = { + -- let's first set up some attributes needed by this component and it's children + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { bg = colors.bg }, +} +-- We can now define some children separately and add them later +-- + +local FileIcon = { + init = function(self) + local filename = self.filename + local extension = vim.fn.fnamemodify(filename, ":e") + self.icon, self.icon_color = + require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) + end, + provider = function(self) + return self.icon and (self.icon .. " ") + end, + hl = function(self) + return { fg = self.icon_color, bg = colors.bg } + end, +} + +local FileName = { + provider = function(self) + -- first, trim the pattern relative to the current directory. For other + -- options, see :h filename-modifers + local filename = vim.fn.fnamemodify(self.filename, ":.") + if filename == "" then + return "No Name" + end + -- now, if the filename would occupy more than 1/4th of the available + -- space, we trim the file path to its initials + -- See Flexible Components section below for dynamic truncation + if not conditions.width_percent_below(#filename, 0.25) then + filename = vim.fn.pathshorten(filename) + end + return filename + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = false, bg = colors.bg }, +} + +local FileFlags = { + { + provider = function() + if vim.bo.modified then + return " [+]" + --±[+] + end + end, + hl = { fg = colors.green, bg = colors.bg }, + }, + { + provider = function() + if not vim.bo.modifiable or vim.bo.readonly then + return " " + end + end, + --hl = { fg = colors.orange }, + hl = { fg = colors.orange, bold = true, bg = colors.bg }, + }, +} +-- Now, let's say that we want the filename color to change if the buffer is +-- modified. Of course, we could do that directly using the FileName.hl field, +-- but we'll see how easy it is to alter existing components using a "modifier" +-- component + +local FileNameModifer = { + hl = function() + if vim.bo.modified then + return { fg = colors.green, bold = false, force = true } + end + end, +} + +-- FileType, FileEncoding and FileFormat +local FileType = { + provider = function() + return vim.bo.filetype + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = false, bg = colors.bg }, +} + +--local FileEncoding = { +-- provider = function() +-- local enc = (vim.bo.fenc ~= "" and vim.bo.fenc) or vim.o.enc -- :h 'enc' +-- return enc ~= "utf-8" and enc:upper() +-- end, +-- hl = { bg = colors.bg }, +--} +local FileEncoding = { + Space, + provider = function() + local enc = (vim.bo.fenc ~= "" and vim.bo.fenc) or vim.o.enc -- :h 'enc' + return enc:lower() + end, + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { bg = colors.bg, bold = false }, +} + +local FileFormat = { + provider = function() + local fmt = vim.bo.fileformat + return fmt ~= "unix" and fmt:upper() + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +-- FileSize and FileLastModified +local FileSize = { + provider = function() + -- stackoverflow, compute human readable file size + local suffix = { "b", "k", "M", "G", "T", "P", "E" } + local fsize = vim.fn.getfsize(vim.api.nvim_buf_get_name(0)) + fsize = (fsize < 0 and 0) or fsize + if fsize < 1024 then + return fsize .. suffix[1] + end + local i = math.floor((math.log(fsize) / math.log(1024))) + return string.format("%.2g%s", fsize / math.pow(1024, i), suffix[i + 1]) + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +local FileLastModified = { + -- did you know? Vim is full of functions! + provider = function() + local ftime = vim.fn.getftime(vim.api.nvim_buf_get_name(0)) + return (ftime > 0) and os.date("%c", ftime) + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +-- Spell +-- Add indicator when spell is set! +local Spell = { + condition = function() + return vim.wo.spell + end, + provider = "SPELL ", + hl = { bold = true, fg = "orange" }, +} + +-- Cursor position: Ruler and ScrollBar +-- We're getting minimalists here! +local Ruler = { + -- We're getting minimalists here! + -- %l = current line number + -- %L = number of lines in the buffer + -- %c = column number + -- %P = percentage through file of displayed window + --provider = "%P %(%l/%L%):%c ", + --provider = "%3(%2l%):%c %P ", + --provider = "%7(%l/%3L%):%2c%P ", + --provider = "%3(%P%)", + --provider = "%7(%l/%3L%):%2c %P", + --provider = "%7 %p%% Ln %l, Col %c", + --provider = "%9( %P %2l/%L :%2c %)", + --provider = "%9(%2l%2( : %c%)/%L %P %)", + --provider = "%7(%l:%c/%L%) ", + --provider = "%6(%l:%1.5c/%L%) %P ", + provider = "%3(%l:%1.5c/%L%) ", + --provider = "%6(%l:%1.5c/%L%) ", + hl = { fg = utils.get_highlight("Statusline").fg, bold = true }, +} + +local Total = { + provider = "%L", + hl = { fg = utils.get_highlight("Statusline").fg, bold = false }, +} + +local WordCount = { + condition = function() + return conditions.buffer_matches({ + filetype = { + "markdown", + "txt", + "vimwiki", + }, + }) + end, + Space, + { + provider = function() + return "W:" .. vim.fn.wordcount().words + end, + }, +} + +local Position = { + Space, + { provider = "%l:%c" }, + hl = { bg = colors.bg }, +} + +local Percentage = { + Space, + { provider = "%P" }, + hl = { bg = colors.bg }, +} +-- Working Directory +local WorkDir = { + provider = function(self) + self.icon = (vim.fn.haslocaldir(0) == 1 and "l" or "g") .. " " .. " " + local cwd = vim.fn.getcwd(0) + self.cwd = vim.fn.fnamemodify(cwd, ":~") + end, + hl = { fg = colors.blue, bold = true, bg = colors.bg }, + + utils.make_flexible_component(1, { + -- evaluates to the full-lenth path + provider = function(self) + local trail = self.cwd:sub(-1) == "/" and "" or "/" + return self.icon .. self.cwd .. trail .. " " + end, + }, { + -- evaluates to the shortened path + provider = function(self) + local cwd = vim.fn.pathshorten(self.cwd) + local trail = self.cwd:sub(-1) == "/" and "" or "/" + return self.icon .. cwd .. trail .. " " + end, + }, { + -- evaluates to "", hiding the component + provider = "", + }), +} + +-- Terminal Name +-- Special handling of the built-in terminal bufname. See conditional statuslines below to see an example of dedicated statusline for terminals! + +--local TerminalName = { +-- -- we could add a condition to check that buftype == 'terminal' +-- -- or we could do that later (see #conditional-statuslines below) +-- provider = function() +-- local tname, _ = vim.api.nvim_buf_get_name(0):gsub(".*:", "") +-- return " " .. tname +-- end, +-- hl = { bold = true, bg = colors.bg }, +--} + +-- Snippets Indicator +-- This requires ultisnips +--local Snippets = { +-- -- check that we are in insert or select mode +-- condition = function() +-- return vim.tbl_contains({'s', 'i'}, vim.fn.mode()) +-- end, +-- provider = function() +-- local forward = (vim.fn["UltiSnips#CanJumpForwards"]() == 1) and "" or "" +-- local backward = (vim.fn["UltiSnips#CanJumpBackwards"]() == 1) and " " or "" +-- return backward .. forward +-- end, +-- hl = { fg = "red", bold = true }, +--} + +-- let's add the children to our FileNameBlock component +--FileNameBlock = utils.insert( +-- FileNameBlock, +--FileEncoding, +--Space, +--FileIcon, +--FileType, +--FileLastModified, +--FileSize, +--FileFormat, +--FileNameModifer, +-- unpack(FileFlags), +-- { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +--) +-- let's add the children to our FileNameBlock component +FileNameBlock = utils.insert( + FileNameBlock, + FileIcon, + utils.insert(FileNameModifer, FileName), -- a new table where FileName is a child of FileNameModifier + unpack(FileFlags), -- A small optimisation, since their parent does nothing + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) + +local FileInfoBlock = { + -- let's first set up some attributes needed by this component and it's children + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, +} + +FileInfoBlock = utils.insert( + FileInfoBlock, + Space, + FileIcon, + FileType, + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) +--FileNameBlock = utils.insert( +-- FileNameBlock, +-- FileIcon, +-- utils.insert(FileNameModifer, FileName), -- a new table where FileName is a child of FileNameModifier +-- unpack(FileFlags), -- A small optimisation, since their parent does nothing +-- { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +--) + +local Surrr = { + utils.surround({ "", "" }, "red", { + utils.surround({ "", "" }, "green", utils.surround({ "", "" }, "blue", { provider = "heyya" })), + { provider = "Normal" }, + }), +} +--ViMode = utils.surround({ "", "" }, "bright_bg", { ViMode, Snippets }) +--ViMode = utils.surround({ "", "" }, function(self) +-- return self:mode_color() +--end, { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) + +--ViMode = utils.surround({ "◥", "" }, function(self) return self:mode_color() end, { +-- utils.surround({ "█", "" }, function(self) return self:mode_color() end, utils.surround({ "", "" }, function(self) return self:mode_color() end, { {provider = "normal" }, ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } } )), +-- { provider = "heyya" }, +-- }) +-- Statusline +--BackgroundStatusline = utils.surround({ "", "" }, function(self) +-- return self:mode_color() +--end, { BackgroundStatusline, hl = { bg = utils.get_highlight("statusline").bg, force = true } }) +-- +local Surrr = { + utils.surround({ "", "" }, "gray", { + FileInfoBlock, + hl = { bg = colors.gray }, + utils.surround({ "", "" }, "gray", { + Percentage, + utils.surround({ "", "" }, function(self) + return self:mode_color() + end, { Space, Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }), + }), + }), +} + +ViMode = utils.surround({ "", "" }, function(self) + return self:mode_color() +end, { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) + +LeftSpace = utils.surround({ "", " " }, function(self) + return self:mode_color() +end, { LeftSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) +-- +RightSpace = utils.surround( + { "", "" }, + colors.gray, + { RightSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } } +) + +RightSpace2 = utils.surround( + { "█", "" }, + colors.darkgray, + { RightSpace2, hl = { fg = colors.darkgray, force = true } } +) + +RightSpace3 = utils.surround( + { "█", "" }, + utils.get_highlight("statusline").bg, + { RightSpace3, hl = { fg = colors.darkgray, force = true } } +) +--RightSpace = utils.surround({ "", "" }, function(self) +-- return self:mode_color() +--end, { RightSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) +---- +-- +--Percentage = utils.surround({ "", " " }, "red", { Percentage, hl = { bg = colors.red, force = true } }) +-- + +LSPActive = utils.surround({ "", "" }, function(self) + return self:mode_color() +end, { Space, LSPActive, hl = { bg = colors.darkgray, force = true } }) + +FileInfoBlock = utils.surround({ "", "" }, function(self) + return self:mode_color() +end, { FileInfoBlock, Space, hl = { bg = colors.gray, force = true } }) + +Ruler = utils.surround({ "", "" }, colors.gray, { Space, Ruler, hl = { fg = colors.gray, force = true } }) + +local align = { provider = "%=" } +local left = { + { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { LeftSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileNameBlock, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Git, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + --{ Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + --{ Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, +} +local middle = { + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Navic, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { DAPMessages, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, +} +local right = { + { Diagnostics, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { + RightSpace3, + hl = { bg = colors.darkgray, force = true }, + }, + --{ Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { LSPActive, hl = { bg = colors.darkgray, force = true } }, + --{ FileEncoding, hl = { bg = colors.orange, force = true } }, + { RightSpace2, hl = { bg = colors.gray, force = true } }, + --{ Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileInfoBlock, hl = { bg = colors.gray, force = true } }, + --{ Space, hl = { bg = colors.red, force = true } }, + --{ FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + --{ WordCount, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { RightSpace, hl = { fg = colors.gray, force = true } }, + { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, +} + +local sections = { left, middle, right } +local DefaultStatusline = { sections } + +--local NewSpace = { provider = "", hl = { bg = utils.get_highlight("statusline").bg } } +--local statusline = { +--Space, +--Space, +--Git, +--Space, +--Diagnostics, +--Align, +--Navic, +--DAPMessages, +--Align, +--Space, +--FileInfoBlock, +--Space, +--WordCount, +--Ruler, +--LSPActive, Space, LSPMessages, Space, UltTest, Space, FileType, Space, Ruler, Space, ScrollBar +--} + +local InactiveStatusline = { + condition = conditions.is_not_active, + { FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileName, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, +} + +local SpecialStatusline = { + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + + --FileType, + --Space, + --Align, + { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { LeftSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { RightSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + + --FileType, Space, HelpFileName, Align +} + +local TerminalStatusline = { + + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + + --hl = { bg = colors.red }, + + -- Quickly add a condition to the ViMode to only show it when buffer is active! + --{ condition = conditions.is_active, ViMode, Space }, + + { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { LeftSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { RightSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + --FileType, + --Space, + --TerminalName, + --Align, +} + +local StatusLine = { + + --hl = function() + -- if conditions.is_active() then + -- return "StatusLine" + -- else + -- return "StatusLineNC" + -- end + --end, + static = { + mode_colors = { + n = colors.blue, + i = colors.green, + v = colors.purple, + V = colors.purple, + ["\22"] = colors.purple, + c = colors.red, + s = colors.purple, + S = colors.purple, + ["\19"] = colors.purple, + R = colors.orange, + r = colors.orange, + ["!"] = colors.red, + t = colors.red, + --mode_colors_map = { + -- n = colors.blue, + -- i = colors.green, + -- v = colors.purple, + -- V = colors.violet, + -- [""] = colors.red, + -- c = colors.yellow, + -- s = colors.orange, + -- S = colors.orange, + -- [""] = colors.purple, + -- R = colors.orange, + -- r = colors.orange, + -- ["!"] = colors.red, + -- t = colors.red, + }, + --mode_color = function(self) + -- local mode = conditions.is_active() and vim.fn.mode() or "n" + -- return self.mode_colors_map[mode] + --end, + mode_color = function(self) + local mode = conditions.is_active() and vim.fn.mode() or "n" + return self.mode_colors[mode] + end, + hl = function(self) + local color = self:mode_color() -- here! + return { bg = color } + end, + }, + fallthrough = false, + + SpecialStatusline, + TerminalStatusline, + InactiveStatusline, + DefaultStatusline, +} + +-- WinBar + +vim.api.nvim_create_autocmd("User", { + pattern = "HeirlineInitWinbar", + callback = function(args) + local buf = args.buf + local buftype = vim.tbl_contains({ "prompt", "nofile", "help", "quickfix" }, vim.bo[buf].buftype) + local filetype = vim.tbl_contains({ "gitcommit", "fugitive" }, vim.bo[buf].filetype) + if buftype or filetype then + vim.opt_local.winbar = nil + end + end, +}) + +on_click = { + -- get the window id of the window in which the component was evaluated + minwid = function() + return vim.api.nvim_get_current_win() + end, + callback = function(_, minwid) + -- winid is the window id of the window the component was clicked from + local winid = minwid + -- do something with the window id, e.g.: + local buf = vim.api.nvim_win_get_buf(winid) + -- ... + end, +} + +local CloseButton = { + condition = function(self) + return not vim.bo.modified + end, + -- a small performance improvement: + -- re register the component callback only on layout/buffer changes. + update = { "WinNew", "WinClosed", "BufEnter" }, + { provider = " " }, + { + provider = "", + hl = { fg = "gray" }, + on_click = { + minwid = function() + return vim.api.nvim_get_current_win() + end, + callback = function(_, minwid) + vim.api.nvim_win_close(minwid, true) + end, + name = "heirline_winbar_close_button", + }, + }, +} + +local active_middle_segment = { --{{{ + fallthrough = false, + { -- Hide the winbar for special buffers + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + init = function() + vim.opt_local.winbar = nil + end, + }, + static = { + mode_colors_map = { + n = colors.blue, + i = colors.green, + v = colors.purple, + V = colors.purple, + [""] = colors.purple, + c = colors.red, + s = colors.purple, + S = colors.purple, + [""] = colors.purple, + R = colors.orange, + r = colors.orange, + ["!"] = colors.red, + t = colors.red, + }, + mode_color = function(self) + local mode = conditions.is_active() and vim.fn.mode() or "n" + return self.mode_colors_map[mode] + end, + provider = "%f", + hl = function(self) + local color = self:mode_color() -- here! + return { fg = color } + end, + -- self.filename will be defined later, just keep looking at the example! + }, + { -- A special winbar for terminals + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + FileType, + Space, + --TerminalName, + }, + { -- An inactive winbar for regular files + condition = function() + return not conditions.is_active() + end, + utils.surround({ "", "" }, colors.nobg, { hl = { fg = "gray", force = true }, FileNameBlock }), + }, +} + +--local WinBar = { +-- Fill, +-- active_middle_segment, +-- Fill, +--} +local WinBar = { + fallthrough = false, + { -- Hide the winbar for special buffers + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + init = function() + vim.opt_local.winbar = nil + end, + }, + { -- A special winbar for terminals + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + FileType, + Space, + --TerminalName, + }, + { -- An inactive winbar for regular files + condition = function() + return not conditions.is_active() + end, + utils.surround({ "", "" }, colors.nobg, { hl = { fg = "gray", force = true }, FileNameBlock }), + }, + -- A winbar for regular files + utils.surround({ "", "" }, colors.nobg, FileNameBlock), +} + +-- TabLine +-- + +local TablineBufnr = { + provider = function(self) + return tostring(self.bufnr) .. "." + end, + --hl = "Comment", + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true }, +} + +-- we redefine the filename component, as we probably only want the tail and not the relative path +local TablineFileName = { + provider = function(self) + -- self.filename will be defined later, just keep looking at the example! + local filename = self.filename + filename = filename == "" and "No Name" or vim.fn.fnamemodify(filename, ":t") + return filename + end, + hl = function(self) + return { bold = self.is_active or self.is_visible, italic = true } + end, +} + +local TablineFileFlags = { + { + provider = function(self) + if vim.bo[self.bufnr].modified then + return " [+] " + end + end, + hl = { fg = colors.green }, + }, + --+ + { + provider = function(self) + if not vim.bo[self.bufnr].modifiable or vim.bo[self.bufnr].readonly then + return " " + end + end, + hl = { fg = "orange" }, + }, +} + +local TablineFileIcon = { + init = function(self) + local filename = self.filename + local extension = vim.fn.fnamemodify(filename, ":e") + self.icon, self.icon_color = + require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) + end, + provider = function(self) + return self.icon and (" " .. self.icon .. " ") + end, + hl = function(self) + return { fg = self.icon_color } + end, +} + +-- Here the filename block finally comes together +local TablineFileNameBlock = { + init = function(self) + self.filename = vim.api.nvim_buf_get_name(self.bufnr) + end, + hl = function(self) + if self.is_active then + return "TabLineSel" + -- why not? + --elseif not vim.api.nvim_buf_is_loaded(self.bufnr) then + --return { fg = "gray", bg = colors.bg } + else + return "TabLineFill" + end + end, + on_click = { + callback = function(_, minwid, _, button) + if button == "m" then -- close on mouse middle click + vim.api.nvim_buf_delete(minwid, { force = false }) + else + vim.api.nvim_win_set_buf(0, minwid) + end + end, + minwid = function(self) + return self.bufnr + end, + name = "heirline_tabline_buffer_callback", + }, + TablineBufnr, + --FileIcon, -- turns out the version defined in #crash-course-part-ii-filename-and-friends can be reutilized as is here! + TablineFileIcon, + TablineFileName, + TablineFileFlags, +} + +-- a nice "x" button to close the buffer +local TablineCloseButton = { + condition = function(self) + return not vim.api.nvim_buf_get_option(self.bufnr, "modified") + end, + { provider = " " }, + { + provider = " ", + --hl = { fg = "red", bg = colors.bg }, + hl = { fg = "red" }, + on_click = { + callback = function(_, minwid) + vim.api.nvim_buf_delete(minwid, { force = false }) + end, + minwid = function(self) + return self.bufnr + end, + name = "heirline_tabline_close_buffer_callback", + }, + }, +} + +-- The final touch! +local TablineBufferBlock = utils.surround({ "", "" }, function(self) + --local TablineBufferBlock = utils.surround({ "█", "█" }, function(self) + if self.is_active then + return utils.get_highlight("TabLineSel").bg + else + return utils.get_highlight("TabLineFill").bg + end +end, { Tab, TablineFileNameBlock, TablineCloseButton }) + +local BufferLine = utils.make_buflist( + TablineBufferBlock, + --{ provider = "", hl = { fg = "gray" } }, -- left truncation, optional (defaults to "<") + --{ provider = "", hl = { fg = "gray" } } -- right trunctation, also optional (defaults to ...... yep, ">") + { provider = "", hl = { fg = "gray" } }, -- left truncation, optional (defaults to "<") + { provider = "", hl = { fg = "gray" } } -- right trunctation, also optional (defaults to ...... yep, ">") + -- by the way, open a lot of buffers and try clicking them ;) +) + +-- TabList +local Tabpage = { + provider = function(self) + return "%" .. self.tabnr .. "T " .. self.tabnr .. " %T" + end, + hl = function(self) + if not self.is_active then + return "TabLine" + else + return "TabLineSel" + end + end, +} + +local TabpageClose = { + provider = "%999X %X", + --hl = "TabLine", + hl = { fg = colors.red, bg = colors.bg }, +} + +local TabPages = { + -- only show this component if there's 2 or more tabpages + condition = function() + return #vim.api.nvim_list_tabpages() >= 2 + end, + { provider = "%=" }, + utils.make_tablist(Tabpage), + TabpageClose, +} + +-- TabLineOffset +local TabLineOffset = { + condition = function(self) + local win = vim.api.nvim_tabpage_list_wins(0)[1] + local bufnr = vim.api.nvim_win_get_buf(win) + self.winid = win + + if vim.bo[bufnr].filetype == "NvimTree" then + self.title = "NvimTree" + return true + -- elseif vim.bo[bufnr].filetype == "TagBar" then + -- ... + end + end, + + provider = function(self) + local title = self.title + local width = vim.api.nvim_win_get_width(self.winid) + local pad = math.ceil((width - #title) / 2) + return string.rep(" ", pad) .. title .. string.rep(" ", pad) + end, + + hl = function(self) + if vim.api.nvim_get_current_win() == self.winid then + return "TablineSel" + else + return "Tabline" + end + end, +} + +local TabLine = { + --hl = { bg = colors.bg }, + fallthrough = false, + TabLineOffset, + BufferLine, + TabPages, +} + +require("heirline").setup(StatusLine, WinBar, TabLine) +--require("heirline").setup(StatusLine, TabLine) + +-- Yep, with heirline we're driving manual! +vim.cmd([[au FileType * if index(['wipe', 'delete', 'unload'], &bufhidden) >= 0 | set nobuflisted | endif]]) + +--local function get_bufs() +-- return vim.tbl_filter(function(bufnr) +-- return vim.api.nvim_buf_is_loaded(bufnr) and vim.bo[bufnr].buflisted +-- end, vim.api.nvim_list_bufs()) +--end +-- +--local function goto_buf(index) +-- local bufs = get_bufs() +-- if index > #bufs then +-- index = #bufs +-- end +-- vim.api.nvim_win_set_buf(0, bufs[index]) +--end +-- +--local function addKey(key, index) +-- vim.keymap.set("", "<A-" .. key .. ">", function() +-- goto_buf(index) +-- end, { noremap = true, silent = true }) +--end +-- +--for i = 1, 9 do +-- addKey(i, i) +--end +--addKey("0", 10) diff --git a/lua/plugins/heirlinenew.lua b/lua/plugins/heirlinenew.lua new file mode 100644 index 0000000..64a33b2 --- /dev/null +++ b/lua/plugins/heirlinenew.lua @@ -0,0 +1,1342 @@ +local conditions = require("heirline.conditions") +local utils = require("heirline.utils") + +local colors = { + --bg = "#23232e", + bg = nil, + nobg = nil, + bright_fg = "#ffffff", + bright_bg = "#000000", + white = "#f8f8f2", + gray = "#23232e", + pink = "#f92672", + green = "#50fa7b", + blue = "#39BAE6", + yellow = "#f1fa8c", + orange = "#ffb86c", + purple = "#bd93f9", + red = "#ff5555", + cyan = "#66d9eC", + diag = { + warn = utils.get_highlight("DiagnosticSignWarn").fg, + error = utils.get_highlight("DiagnosticSignError").fg, + hint = utils.get_highlight("DiagnosticSignHint").fg, + info = utils.get_highlight("DiagnosticSignInfo").fg, + }, + git = { + del = "#e95678", + add = "#a6e22e", + change = "#ae81ff", + }, +} + +require("heirline").load_colors(colors) + +--local function setup_colors() +-- return { +-- bright_bg = utils.get_highlight("Folded").bg, +-- bright_fg = utils.get_highlight("Folded").fg, +-- red = utils.get_highlight("DiagnosticError").fg, +-- dark_red = utils.get_highlight("DiffDelete").bg, +-- green = utils.get_highlight("String").fg, +-- blue = utils.get_highlight("Function").fg, +-- gray = utils.get_highlight("NonText").fg, +-- orange = utils.get_highlight("Constant").fg, +-- purple = utils.get_highlight("Statement").fg, +-- cyan = utils.get_highlight("Special").fg, +-- diag_warn = utils.get_highlight("DiagnosticWarn").fg, +-- diag_error = utils.get_highlight("DiagnosticError").fg, +-- diag_hint = utils.get_highlight("DiagnosticHint").fg, +-- diag_info = utils.get_highlight("DiagnosticInfo").fg, +-- git_del = utils.get_highlight("diffDeleted").fg, +-- git_add = utils.get_highlight("diffAdded").fg, +-- git_change = utils.get_highlight("diffChanged").fg, +-- } +--end +--require('heirline').load_colors(setup_colors()) +-- +--vim.api.nvim_create_augroup("Heirline", { clear = true }) +--vim.api.nvim_create_autocmd("ColorScheme", { +-- callback = function() +-- local colors = setup_colors() +-- utils.on_colorscheme(colors) +-- end, +-- group = "Heirline", +--}) + +local ViMode = { + static = { + mode_names = { -- change the strings if you like it vvvvverbose! + ["n"] = "NORMAL ", + ["no"] = "N·OPERATOR PENDING ", + ["v"] = "VISUAL ", + ["V"] = "V·LINE ", + [""] = "V·BLOCK ", + ["s"] = "SELECT ", + ["S"] = "S·LINE ", + [""] = "S·BLOCK ", + ["i"] = "INSERT ", + ["R"] = "REPLACE ", + ["Rv"] = "V·REPLACE ", + ["c"] = "COMMAND ", + ["cv"] = "VIM EX ", + ["ce"] = "EX ", + ["r"] = "PROMPT ", + ["rm"] = "MORE ", + ["r?"] = "CONFIRM ", + ["!"] = "SHELL ", + ["t"] = "TERMINAL ", + }, + }, + provider = function(self) + return " %2(" .. self.mode_names[vim.fn.mode(1)] .. "%)" + end, + hl = function(self) + local color = self:mode_color() -- here! + return { bg = color, fg = colors.bg, bold = true } + end, +} + +-- LSP + +--local LSPActive = { +-- condition = conditions.lsp_attached, +-- update = {'LspAttach', 'LspDetach'}, +-- +-- -- You can keep it simple, +-- -- provider = " [LSP]", +-- +-- -- Or complicate things a bit and get the servers names +-- provider = function() +-- local names = {} +-- for i, server in pairs(vim.lsp.buf_get_clients(0)) do +-- table.insert(names, server.name) +-- end +-- return " [" .. table.concat(names, " ") .. "]" +-- end, +-- hl = { fg = "green", bold = true }, +-- on_click = { +-- callback = function() +-- vim.defer_fn(function() +-- vim.cmd("LspInfo") +-- end, 100) +-- end, +-- name = "heirline_LSP", +-- }, +--} + +--local LSPActive = { +-- condition = conditions.lsp_attached, +-- update = { "LspAttach", "LspDetach" }, +-- +-- -- You can keep it simple, +-- -- provider = " [LSP]", +-- +-- -- Or complicate things a bit and get the servers names +-- provider = function() +-- local names = {} +-- for i, server in pairs(vim.lsp.buf_get_clients(0)) do +-- table.insert(names, server.name) +-- end +-- return " [" .. table.concat(names, " ") .. "]" +-- end, +-- hl = { fg = "green", bold = true }, +--} + +local LSPActive = { + condition = conditions.lsp_attached, + + provider = function() + local names = vim.tbl_values(vim.tbl_map(function(cl) + return cl.name + end, vim.lsp.buf_get_clients(0))) + + return "LSP [" .. table.concat(names, " ") .. "]" + end, + hl = { fg = colors.green }, +} +-- lsp status +-- I personally use it only to display progress messages! +-- See lsp-status/README.md for configuration options. + +-- Note: check "j-hui/fidget.nvim" for a nice statusline-free alternative. +local LSPMessages = { + provider = require("lsp-status").status, + hl = { fg = "gray" }, +} + +-- Nvim Navic +--local Navic = { +-- condition = require("nvim-navic").is_available, +-- provider = require("nvim-navic").get_location, +--} +--local Navic = utils.make_flexible_component(3, Navic, { provider = "" }) + +-- Full nerd (with icon colors)! +local Navic = { + condition = require("nvim-navic").is_available, + static = { + -- create a type highlight map + type_hl = { + File = "Directory", + Module = "Include", + Namespace = "TSNamespace", + Package = "Include", + Class = "Struct", + Method = "Method", + Property = "TSProperty", + Field = "TSField", + Constructor = "TSConstructor ", + Enum = "TSField", + Interface = "Type", + Function = "Function", + Variable = "TSVariable", + Constant = "Constant", + String = "String", + Number = "Number", + Boolean = "Boolean", + Array = "TSField", + Object = "Type", + Key = "TSKeyword", + Null = "Comment", + EnumMember = "TSField", + Struct = "Struct", + Event = "Keyword", + Operator = "Operator", + TypeParameter = "Type", + }, + }, + init = function(self) + local data = require("nvim-navic").get_data() or {} + local children = {} + -- create a child for each level + for i, d in ipairs(data) do + local child = { + { + provider = d.icon, + hl = self.type_hl[d.type], + }, + { + provider = d.name, + -- highlight icon only or location name as well + -- hl = self.type_hl[d.type], + }, + } + -- add a separator only if needed + if #data > 1 and i < #data then + table.insert(child, { + provider = " > ", + hl = { fg = "bright_fg" }, + }) + end + table.insert(children, child) + end + -- instantiate the new child, overwriting the previous one + self[1] = self:new(children, 1) + end, + hl = { fg = "gray" }, +} + +-- Diagnostics +local Diagnostics = { + + condition = conditions.has_diagnostics, + + static = { + error_icon = vim.fn.sign_getdefined("DiagnosticSignError")[1].text, + warn_icon = vim.fn.sign_getdefined("DiagnosticSignWarn")[1].text, + info_icon = vim.fn.sign_getdefined("DiagnosticSignInfo")[1].text, + hint_icon = vim.fn.sign_getdefined("DiagnosticSignHint")[1].text, + }, + + init = function(self) + self.errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }) + self.warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) + self.hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT }) + self.info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO }) + end, + + update = { "DiagnosticChanged", "BufEnter" }, + + { + provider = function(self) + -- 0 is just another output, we can decide to print it or not! + return self.errors > 0 and (self.error_icon .. self.errors .. " ") + end, + hl = { fg = colors.diag.error, bg = colors.bg }, + }, + { + provider = function(self) + return self.warnings > 0 and (self.warn_icon .. self.warnings .. " ") + end, + hl = { fg = colors.diag.warn, bg = colors.bg }, + }, + { + provider = function(self) + return self.info > 0 and (self.info_icon .. self.info .. " ") + end, + hl = { fg = colors.diag.info, bg = colors.bg }, + }, + { + provider = function(self) + return self.hints > 0 and (self.hint_icon .. self.hints) + end, + hl = { fg = colors.diag.hint, bg = colors.bg }, + }, + --{ + -- provider = "]", + --}, + on_click = { + callback = function() + require("trouble").toggle({ mode = "document_diagnostics" }) + -- or + -- vim.diagnostic.setqflist() + end, + name = "heirline_diagnostics", + }, +} + +-- Git +-- For the ones who're not (too) afraid of changes! Uses gitsigns. +local Git = { + condition = conditions.is_git_repo, + + init = function(self) + self.status_dict = vim.b.gitsigns_status_dict + self.has_changes = self.status_dict.added ~= 0 or self.status_dict.removed ~= 0 or self.status_dict.changed ~= 0 + end, + --hl = { fg = "orange" }, + hl = { fg = colors.orange, bg = colors.bg }, + { -- git branch name + provider = function(self) + return " " .. self.status_dict.head + end, + --hl = { bold = true }, + hl = { bold = true, bg = colors.bg }, + }, + -- You could handle delimiters, icons and counts similar to Diagnostics + { + condition = function(self) + return self.has_changes + end, + --provider = "(" + provider = " ", + }, + { + provider = function(self) + local count = self.status_dict.added or 0 + --return count > 0 and ("+" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_add" }, + hl = { fg = colors.git.add, bg = colors.bg }, + }, + { + provider = function(self) + local count = self.status_dict.removed or 0 + --return count > 0 and ("-" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_del" }, + hl = { fg = colors.git.del, bg = colors.bg }, + }, + { + provider = function(self) + local count = self.status_dict.changed or 0 + --return count > 0 and ("~" .. count) + return count > 0 and (" " .. count) + end, + --hl = { fg = "git_change" }, + hl = { fg = colors.git.change, bg = colors.bg }, + }, + --{ + -- condition = function(self) + -- return self.has_changes + -- end, + -- provider = ")", + --}, + on_click = { + callback = function() + -- If you want to use Fugitive: + -- vim.cmd("G") + + -- If you prefer Lazygit + -- use vim.defer_fn() if the callback requires + -- opening of a floating window + -- (this also applies to telescope) + vim.defer_fn(function() + vim.cmd("Lazygit") + end, 100) + end, + name = "heirline_git", + }, +} + +-- Debugger +-- Display informations from nvim-dap! +local DAPMessages = { + -- display the dap messages only on the debugged file + condition = function() + local session = require("dap").session() + if session then + local filename = vim.api.nvim_buf_get_name(0) + if session.config then + local progname = session.config.program + return filename == progname + end + end + return false + end, + provider = function() + return " " .. require("dap").status() + end, + hl = { fg = utils.get_highlight("Debug").fg }, + -- Debugger on_click: step-over, step-into, next, previous, stop buttons + -- coming soon! +} + +-- Tests +-- This requires the great ultest. +--local UltTest = { +-- condition = function() +-- return vim .api.nvim_call_function("ultest#is_test_file", {}) ~= 0 +-- end, +-- static = { +-- passed_icon = vim.fn.sign_getdefined("test_pass")[1].text, +-- failed_icon = vim.fn.sign_getdefined("test_fail")[1].text, +-- passed_hl = { fg = utils.get_highlight("UltestPass").fg }, +-- failed_hl = { fg = utils.get_highlight("UltestFail").fg }, +-- }, +-- init = function(self) +-- self.status = vim.api.nvim_call_function("ultest#status", {}) +-- end, +-- +-- -- again, if you'd like icons and numbers to be colored differently, +-- -- just split the component in two +-- { +-- provider = function(self) +-- return self.passed_icon .. self.status.passed .. " " +-- end, +-- hl = function(self) +-- return self.passed_hl +-- end, +-- }, +-- { +-- provider = function(self) +-- return self.failed_icon .. self.status.failed .. " " +-- end, +-- hl = function(self) +-- return self.failed_hl +-- end, +-- }, +-- { +-- provider = function(self) +-- return "of " .. self.status.tests - 1 +-- end, +-- }, +--} + +-- FileName and Friends + +--local Align = { provider = "%=" } +local Align = { provider = "%=", hl = { bg = colors.bg } } +local Space = { provider = " ", hl = { bg = colors.bg } } +local Tab = { provider = " " } +local Fill = { provider = "%=", hl = { bg = colors.nobg } } +local LeftSep = { provider = "", hl = { fg = colors.bg } } +local RightSep = { provider = "", hl = { fg = colors.bg } } + +local FileNameBlock = { + -- let's first set up some attributes needed by this component and it's children + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { bg = colors.bg }, +} +-- We can now define some children separately and add them later +-- + +local FileIcon = { + init = function(self) + local filename = self.filename + local extension = vim.fn.fnamemodify(filename, ":e") + self.icon, self.icon_color = + require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) + end, + provider = function(self) + return self.icon and (self.icon .. " ") + end, + hl = function(self) + return { fg = self.icon_color, bg = colors.bg } + end, +} + +local FileName = { + provider = function(self) + -- first, trim the pattern relative to the current directory. For other + -- options, see :h filename-modifers + local filename = vim.fn.fnamemodify(self.filename, ":.") + if filename == "" then + return "No Name" + end + -- now, if the filename would occupy more than 1/4th of the available + -- space, we trim the file path to its initials + -- See Flexible Components section below for dynamic truncation + if not conditions.width_percent_below(#filename, 0.25) then + filename = vim.fn.pathshorten(filename) + end + return filename + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = false, bg = colors.bg }, +} + +local FileFlags = { + { + provider = function() + if vim.bo.modified then + return " [+]" + --±[+] + end + end, + hl = { fg = colors.green, bg = colors.bg }, + }, + { + provider = function() + if not vim.bo.modifiable or vim.bo.readonly then + return " " + end + end, + --hl = { fg = colors.orange }, + hl = { fg = colors.orange, bold = true, bg = colors.bg }, + }, +} +-- Now, let's say that we want the filename color to change if the buffer is +-- modified. Of course, we could do that directly using the FileName.hl field, +-- but we'll see how easy it is to alter existing components using a "modifier" +-- component + +local FileNameModifer = { + hl = function() + if vim.bo.modified then + return { fg = colors.green, bold = false, force = true } + end + end, +} + +-- FileType, FileEncoding and FileFormat +local FileType = { + provider = function() + return vim.bo.filetype + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = false, bg = colors.bg }, +} + +--local FileEncoding = { +-- provider = function() +-- local enc = (vim.bo.fenc ~= "" and vim.bo.fenc) or vim.o.enc -- :h 'enc' +-- return enc ~= "utf-8" and enc:upper() +-- end, +-- hl = { bg = colors.bg }, +--} +local FileEncoding = { + Space, + provider = function() + local enc = (vim.bo.fenc ~= "" and vim.bo.fenc) or vim.o.enc -- :h 'enc' + return enc:lower() + end, + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { bg = colors.bg, bold = false }, +} + +local FileFormat = { + provider = function() + local fmt = vim.bo.fileformat + return fmt ~= "unix" and fmt:upper() + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +-- FileSize and FileLastModified +local FileSize = { + provider = function() + -- stackoverflow, compute human readable file size + local suffix = { "b", "k", "M", "G", "T", "P", "E" } + local fsize = vim.fn.getfsize(vim.api.nvim_buf_get_name(0)) + fsize = (fsize < 0 and 0) or fsize + if fsize < 1024 then + return fsize .. suffix[1] + end + local i = math.floor((math.log(fsize) / math.log(1024))) + return string.format("%.2g%s", fsize / math.pow(1024, i), suffix[i + 1]) + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +local FileLastModified = { + -- did you know? Vim is full of functions! + provider = function() + local ftime = vim.fn.getftime(vim.api.nvim_buf_get_name(0)) + return (ftime > 0) and os.date("%c", ftime) + end, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, +} + +-- Spell +-- Add indicator when spell is set! +local Spell = { + condition = function() + return vim.wo.spell + end, + provider = "SPELL ", + hl = { bold = true, fg = "orange" }, +} + +-- Cursor position: Ruler and ScrollBar +-- We're getting minimalists here! +local Ruler = { + -- We're getting minimalists here! + -- %l = current line number + -- %L = number of lines in the buffer + -- %c = column number + -- %P = percentage through file of displayed window + --provider = "%P %(%l/%L%):%c ", + --provider = "%3(%2l%):%c %P ", + --provider = "%7(%l/%3L%):%2c%P ", + --provider = "%3(%P%)", + --provider = "%7(%l/%3L%):%2c %P", + --provider = "%7 %p%% Ln %l, Col %c", + --provider = "%9( %P %2l/%L :%2c %)", + --provider = "%9(%2l%2( : %c%)/%L %P %)", + --provider = "%7(%l:%c/%L%) ", + --provider = "%6(%l:%1.5c/%L%) %P ", + provider = "%6(%l:%1.5c/%L%) ", + hl = { fg = utils.get_highlight("Statusline").fg, bold = false }, +} + +local WordCount = { + condition = function() + return conditions.buffer_matches({ + filetype = { + "markdown", + "txt", + "vimwiki", + }, + }) + end, + Space, + { + provider = function() + return "W:" .. vim.fn.wordcount().words + end, + }, +} + +local Position = { + Space, + { provider = "%l:%c" }, + hl = { bg = colors.bg }, +} + +local Percentage = { + Space, + { provider = "%P" }, + hl = { bg = colors.bg }, +} +-- Working Directory +local WorkDir = { + provider = function(self) + self.icon = (vim.fn.haslocaldir(0) == 1 and "l" or "g") .. " " .. " " + local cwd = vim.fn.getcwd(0) + self.cwd = vim.fn.fnamemodify(cwd, ":~") + end, + hl = { fg = colors.blue, bold = true, bg = colors.bg }, + + utils.make_flexible_component(1, { + -- evaluates to the full-lenth path + provider = function(self) + local trail = self.cwd:sub(-1) == "/" and "" or "/" + return self.icon .. self.cwd .. trail .. " " + end, + }, { + -- evaluates to the shortened path + provider = function(self) + local cwd = vim.fn.pathshorten(self.cwd) + local trail = self.cwd:sub(-1) == "/" and "" or "/" + return self.icon .. cwd .. trail .. " " + end, + }, { + -- evaluates to "", hiding the component + provider = "", + }), +} + +-- Terminal Name +-- Special handling of the built-in terminal bufname. See conditional statuslines below to see an example of dedicated statusline for terminals! + +local TerminalName = { + -- we could add a condition to check that buftype == 'terminal' + -- or we could do that later (see #conditional-statuslines below) + provider = function() + local tname, _ = vim.api.nvim_buf_get_name(0):gsub(".*:", "") + return " " .. tname + end, + hl = { bold = true, bg = colors.bg }, +} + +-- Snippets Indicator +-- This requires ultisnips +--local Snippets = { +-- -- check that we are in insert or select mode +-- condition = function() +-- return vim.tbl_contains({'s', 'i'}, vim.fn.mode()) +-- end, +-- provider = function() +-- local forward = (vim.fn["UltiSnips#CanJumpForwards"]() == 1) and "" or "" +-- local backward = (vim.fn["UltiSnips#CanJumpBackwards"]() == 1) and " " or "" +-- return backward .. forward +-- end, +-- hl = { fg = "red", bold = true }, +--} + +-- let's add the children to our FileNameBlock component +--FileNameBlock = utils.insert( +-- FileNameBlock, +--FileEncoding, +--Space, +--FileIcon, +--FileType, +--FileLastModified, +--FileSize, +--FileFormat, +--FileNameModifer, +-- unpack(FileFlags), +-- { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +--) +-- let's add the children to our FileNameBlock component +FileNameBlock = utils.insert( + FileNameBlock, + FileIcon, + utils.insert(FileNameModifer, FileName), -- a new table where FileName is a child of FileNameModifier + unpack(FileFlags), -- A small optimisation, since their parent does nothing + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) + +local FileInfoBlock = { + -- let's first set up some attributes needed by this component and it's children + init = function(self) + self.filename = vim.api.nvim_buf_get_name(0) + end, +} + +FileInfoBlock = utils.insert( + FileInfoBlock, + Space, + FileIcon, + FileType, + { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +) +--FileNameBlock = utils.insert( +-- FileNameBlock, +-- FileIcon, +-- utils.insert(FileNameModifer, FileName), -- a new table where FileName is a child of FileNameModifier +-- unpack(FileFlags), -- A small optimisation, since their parent does nothing +-- { provider = "%<" } -- this means that the statusline is cut here when there's not enough space +--) + +local Surrr = { + utils.surround({ "", "" }, "red", { + utils.surround({ "", "" }, "green", utils.surround({ "", "" }, "blue", { provider = "heyya" })), + { provider = "Normal" }, + }), +} +--ViMode = utils.surround({ "", "" }, "bright_bg", { ViMode, Snippets }) +--ViMode = utils.surround({ "", "" }, function(self) +-- return self:mode_color() +--end, { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) + +--ViMode = utils.surround({ "◥", "" }, function(self) return self:mode_color() end, { +-- utils.surround({ "█", "" }, function(self) return self:mode_color() end, utils.surround({ "", "" }, function(self) return self:mode_color() end, { {provider = "normal" }, ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } } )), +-- { provider = "heyya" }, +-- }) +-- Statusline +--BackgroundStatusline = utils.surround({ "", "" }, function(self) +-- return self:mode_color() +--end, { BackgroundStatusline, hl = { bg = utils.get_highlight("statusline").bg, force = true } }) +-- +local Surrr = { + utils.surround({ "", "" }, "gray", { + FileInfoBlock, + hl = { bg = colors.gray }, + utils.surround({ "", "" }, "gray", { + Percentage, + utils.surround({ "", "" }, function(self) + return self:mode_color() + end, { Space, Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }), + }), + }), +} + +ViMode = utils.surround({ "", "" }, function(self) + return self:mode_color() +end, { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) + +LeftSpace = utils.surround({ "", " " }, function(self) + return self:mode_color() +end, { LeftSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) +-- +RightSpace = utils.surround( + { "", "" }, + colors.red, + { RightSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } } +) + +RightSpace2 = utils.surround({ "", "" }, colors.orange, { RightSpace2, hl = { bg = colors.red, force = true } }) +--RightSpace = utils.surround({ "", "" }, function(self) +-- return self:mode_color() +--end, { RightSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) +---- +-- +--Percentage = utils.surround({ "", " " }, "red", { Percentage, hl = { bg = colors.red, force = true } }) +-- + +LSPActive = utils.surround({ "", "" }, function(self) + return self:mode_color() +end, { Space, LSPActive, hl = { bg = colors.orange, force = true } }) + +FileInfoBlock = utils.surround({ "", "" }, function(self) + return self:mode_color() +end, { FileInfoBlock, Space, hl = { bg = colors.red, force = true } }) + +Ruler = utils.surround({ "", "" }, colors.red, { Space, Ruler, hl = { fg = colors.red, force = true } }) + +local align = { provider = "%=" } +local left = { + { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, + { LeftSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileNameBlock, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + --{ Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Git, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + --{ Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, +} +local middle = { + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Navic, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { DAPMessages, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, +} +local right = { + { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { Diagnostics, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + --{ Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { LSPActive, hl = { bg = colors.orange, force = true } }, + --{ FileEncoding, hl = { bg = colors.orange, force = true } }, + { RightSpace2, hl = { fg = colors.orange, bg = colors.red, force = true } }, + --{ Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { FileInfoBlock, hl = { bg = colors.red, force = true } }, + --{ Space, hl = { bg = colors.red, force = true } }, + --{ FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + --{ WordCount, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, + { RightSpace, hl = { fg = colors.red, force = true } }, + { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, +} + +local sections = { left, align, middle, align, right } +local DefaultStatusline = { sections } + +--local NewSpace = { provider = "", hl = { bg = utils.get_highlight("statusline").bg } } +--local statusline = { +--Space, +--Space, +--Git, +--Space, +--Diagnostics, +--Align, +--Navic, +--DAPMessages, +--Align, +--Space, +--FileInfoBlock, +--Space, +--WordCount, +--Ruler, +--LSPActive, Space, LSPMessages, Space, UltTest, Space, FileType, Space, Ruler, Space, ScrollBar +--} + +--local InactiveStatusline = { +-- condition = conditions.is_not_active, +-- FileType, +-- Space, +-- FileName, +-- Align, +--} + +local SpecialStatusline = { + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + + FileType, + Space, + Align, + --FileType, Space, HelpFileName, Align +} + +local TerminalStatusline = { + + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + + hl = { bg = "dark_red" }, + + -- Quickly add a condition to the ViMode to only show it when buffer is active! + { condition = conditions.is_active, ViMode, Space }, + FileType, + Space, + TerminalName, + Align, +} + +local StatusLine = { + + --hl = function() + -- if conditions.is_active() then + -- return "StatusLine" + -- else + -- return "StatusLineNC" + -- end + --end, + static = { + mode_colors_map = { + n = colors.blue, + i = colors.green, + v = colors.purple, + V = colors.purple, + [""] = colors.purple, + c = colors.red, + s = colors.purple, + S = colors.purple, + [""] = colors.purple, + R = colors.orange, + r = colors.orange, + ["!"] = colors.red, + t = colors.red, + --mode_colors_map = { + -- n = colors.blue, + -- i = colors.green, + -- v = colors.purple, + -- V = colors.violet, + -- [""] = colors.red, + -- c = colors.yellow, + -- s = colors.orange, + -- S = colors.orange, + -- [""] = colors.purple, + -- R = colors.orange, + -- r = colors.orange, + -- ["!"] = colors.red, + -- t = colors.red, + }, + mode_color = function(self) + local mode = conditions.is_active() and vim.fn.mode() or "n" + return self.mode_colors_map[mode] + end, + hl = function(self) + local color = self:mode_color() -- here! + return { bg = color } + end, + }, + fallthrough = false, + + SpecialStatusline, + TerminalStatusline, + --InactiveStatusline, + DefaultStatusline, +} + +-- WinBar + +vim.api.nvim_create_autocmd("User", { + pattern = "HeirlineInitWinbar", + callback = function(args) + local buf = args.buf + local buftype = vim.tbl_contains({ "prompt", "nofile", "help", "quickfix" }, vim.bo[buf].buftype) + local filetype = vim.tbl_contains({ "gitcommit", "fugitive" }, vim.bo[buf].filetype) + if buftype or filetype then + vim.opt_local.winbar = nil + end + end, +}) + +on_click = { + -- get the window id of the window in which the component was evaluated + minwid = function() + return vim.api.nvim_get_current_win() + end, + callback = function(_, minwid) + -- winid is the window id of the window the component was clicked from + local winid = minwid + -- do something with the window id, e.g.: + local buf = vim.api.nvim_win_get_buf(winid) + -- ... + end, +} + +local CloseButton = { + condition = function(self) + return not vim.bo.modified + end, + -- a small performance improvement: + -- re register the component callback only on layout/buffer changes. + update = { "WinNew", "WinClosed", "BufEnter" }, + { provider = " " }, + { + provider = "", + hl = { fg = "gray" }, + on_click = { + minwid = function() + return vim.api.nvim_get_current_win() + end, + callback = function(_, minwid) + vim.api.nvim_win_close(minwid, true) + end, + name = "heirline_winbar_close_button", + }, + }, +} + +local active_middle_segment = { --{{{ + fallthrough = false, + { -- Hide the winbar for special buffers + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + init = function() + vim.opt_local.winbar = nil + end, + }, + static = { + mode_colors_map = { + n = colors.blue, + i = colors.green, + v = colors.purple, + V = colors.purple, + [""] = colors.purple, + c = colors.red, + s = colors.purple, + S = colors.purple, + [""] = colors.purple, + R = colors.orange, + r = colors.orange, + ["!"] = colors.red, + t = colors.red, + }, + mode_color = function(self) + local mode = conditions.is_active() and vim.fn.mode() or "n" + return self.mode_colors_map[mode] + end, + provider = "%f", + hl = function(self) + local color = self:mode_color() -- here! + return { fg = color } + end, + -- self.filename will be defined later, just keep looking at the example! + }, + { -- A special winbar for terminals + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + utils.surround({ "", "" }, "dark_red", { + FileType, + Space, + TerminalName, + }), + }, + { -- An inactive winbar for regular files + condition = function() + return not conditions.is_active() + end, + utils.surround({ "", "" }, "bright_bg", { hl = { fg = "gray", force = true }, FileNameBlock }), + }, +} + +--local WinBar = { +-- Fill, +-- active_middle_segment, +-- Fill, +--} +local WinBar = { + fallthrough = false, + { -- Hide the winbar for special buffers + condition = function() + return conditions.buffer_matches({ + buftype = { "nofile", "prompt", "help", "quickfix" }, + filetype = { "^git.*", "fugitive" }, + }) + end, + init = function() + vim.opt_local.winbar = nil + end, + }, + { -- A special winbar for terminals + condition = function() + return conditions.buffer_matches({ buftype = { "terminal" } }) + end, + utils.surround({ "", "" }, "dark_red", { + FileType, + Space, + TerminalName, + }), + }, + { -- An inactive winbar for regular files + condition = function() + return not conditions.is_active() + end, + utils.surround({ "", "" }, "bright_bg", { hl = { fg = "gray", force = true }, FileNameBlock }), + }, + -- A winbar for regular files + utils.surround({ "", "" }, "bright_bg", FileNameBlock), +} + +-- TabLine +-- + +local TablineBufnr = { + provider = function(self) + return tostring(self.bufnr) .. "." + end, + --hl = "Comment", + --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, + hl = { fg = utils.get_highlight("Statusline").fg, bold = true }, +} + +-- we redefine the filename component, as we probably only want the tail and not the relative path +local TablineFileName = { + provider = function(self) + -- self.filename will be defined later, just keep looking at the example! + local filename = self.filename + filename = filename == "" and "No Name" or vim.fn.fnamemodify(filename, ":t") + return filename + end, + hl = function(self) + return { bold = self.is_active or self.is_visible, italic = true } + end, +} + +local TablineFileFlags = { + { + provider = function(self) + if vim.bo[self.bufnr].modified then + return " [+] " + end + end, + hl = { fg = colors.green }, + }, + --+ + { + provider = function(self) + if not vim.bo[self.bufnr].modifiable or vim.bo[self.bufnr].readonly then + return " " + end + end, + hl = { fg = "orange" }, + }, +} + +local TablineFileIcon = { + init = function(self) + local filename = self.filename + local extension = vim.fn.fnamemodify(filename, ":e") + self.icon, self.icon_color = + require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) + end, + provider = function(self) + return self.icon and (" " .. self.icon .. " ") + end, + hl = function(self) + return { fg = self.icon_color } + end, +} + +-- Here the filename block finally comes together +local TablineFileNameBlock = { + init = function(self) + self.filename = vim.api.nvim_buf_get_name(self.bufnr) + end, + hl = function(self) + if self.is_active then + return "TabLineSel" + -- why not? + --elseif not vim.api.nvim_buf_is_loaded(self.bufnr) then + --return { fg = "gray", bg = colors.bg } + else + return "TabLineFill" + end + end, + on_click = { + callback = function(_, minwid, _, button) + if button == "m" then -- close on mouse middle click + vim.api.nvim_buf_delete(minwid, { force = false }) + else + vim.api.nvim_win_set_buf(0, minwid) + end + end, + minwid = function(self) + return self.bufnr + end, + name = "heirline_tabline_buffer_callback", + }, + TablineBufnr, + --FileIcon, -- turns out the version defined in #crash-course-part-ii-filename-and-friends can be reutilized as is here! + TablineFileIcon, + TablineFileName, + TablineFileFlags, +} + +-- a nice "x" button to close the buffer +local TablineCloseButton = { + condition = function(self) + return not vim.api.nvim_buf_get_option(self.bufnr, "modified") + end, + { provider = " " }, + { + provider = " ", + --hl = { fg = "red", bg = colors.bg }, + hl = { fg = "red" }, + on_click = { + callback = function(_, minwid) + vim.api.nvim_buf_delete(minwid, { force = false }) + end, + minwid = function(self) + return self.bufnr + end, + name = "heirline_tabline_close_buffer_callback", + }, + }, +} + +-- The final touch! +local TablineBufferBlock = utils.surround({ "", "" }, function(self) + --local TablineBufferBlock = utils.surround({ "█", "█" }, function(self) + if self.is_active then + return utils.get_highlight("TabLineSel").bg + else + return utils.get_highlight("TabLineFill").bg + end +end, { Tab, TablineFileNameBlock, TablineCloseButton }) + +local BufferLine = utils.make_buflist( + TablineBufferBlock, + --{ provider = "", hl = { fg = "gray" } }, -- left truncation, optional (defaults to "<") + --{ provider = "", hl = { fg = "gray" } } -- right trunctation, also optional (defaults to ...... yep, ">") + { provider = "", hl = { fg = "gray" } }, -- left truncation, optional (defaults to "<") + { provider = "", hl = { fg = "gray" } } -- right trunctation, also optional (defaults to ...... yep, ">") + -- by the way, open a lot of buffers and try clicking them ;) +) + +-- TabList +local Tabpage = { + provider = function(self) + return "%" .. self.tabnr .. "T " .. self.tabnr .. " %T" + end, + hl = function(self) + if not self.is_active then + return "TabLine" + else + return "TabLineSel" + end + end, +} + +local TabpageClose = { + provider = "%999X %X", + --hl = "TabLine", + hl = { fg = colors.red, bg = colors.bg }, +} + +local TabPages = { + -- only show this component if there's 2 or more tabpages + condition = function() + return #vim.api.nvim_list_tabpages() >= 2 + end, + { provider = "%=" }, + utils.make_tablist(Tabpage), + TabpageClose, +} + +-- TabLineOffset +local TabLineOffset = { + condition = function(self) + local win = vim.api.nvim_tabpage_list_wins(0)[1] + local bufnr = vim.api.nvim_win_get_buf(win) + self.winid = win + + if vim.bo[bufnr].filetype == "NvimTree" then + self.title = "NvimTree" + return true + -- elseif vim.bo[bufnr].filetype == "TagBar" then + -- ... + end + end, + + provider = function(self) + local title = self.title + local width = vim.api.nvim_win_get_width(self.winid) + local pad = math.ceil((width - #title) / 2) + return string.rep(" ", pad) .. title .. string.rep(" ", pad) + end, + + hl = function(self) + if vim.api.nvim_get_current_win() == self.winid then + return "TablineSel" + else + return "Tabline" + end + end, +} + +local TabLine = { + --hl = { bg = colors.bg }, + fallthrough = false, + TabLineOffset, + BufferLine, + TabPages, +} + +require("heirline").setup(StatusLine, WinBar, TabLine) +--require("heirline").setup(StatusLine, TabLine) + +-- Yep, with heirline we're driving manual! +vim.cmd([[au FileType * if index(['wipe', 'delete', 'unload'], &bufhidden) >= 0 | set nobuflisted | endif]]) + +--local function get_bufs() +-- return vim.tbl_filter(function(bufnr) +-- return vim.api.nvim_buf_is_loaded(bufnr) and vim.bo[bufnr].buflisted +-- end, vim.api.nvim_list_bufs()) +--end +-- +--local function goto_buf(index) +-- local bufs = get_bufs() +-- if index > #bufs then +-- index = #bufs +-- end +-- vim.api.nvim_win_set_buf(0, bufs[index]) +--end +-- +--local function addKey(key, index) +-- vim.keymap.set("", "<A-" .. key .. ">", function() +-- goto_buf(index) +-- end, { noremap = true, silent = true }) +--end +-- +--for i = 1, 9 do +-- addKey(i, i) +--end +--addKey("0", 10) diff --git a/lua/plugins/linecolor.lua b/lua/plugins/linecolor.lua new file mode 100644 index 0000000..37550dd --- /dev/null +++ b/lua/plugins/linecolor.lua @@ -0,0 +1,112 @@ +--local M = {} +--M.theme = function() +-- -- I know I could just set bg = nil but I'm leaving this here in case I want custom colors in the future +-- local colors = { +-- nobg = nil, +-- blue = "#87b0f9", +-- mauve = "#cba6f7", +-- red = "#f38ba8", +-- green = "#a6e3a1", +-- peach = "#fab387", +-- white = "#c6d0f5", +-- gray = "#a1a8c9", +-- black = "#1e1e2e", +-- } +-- return { +-- inactive = { +-- a = { fg = colors.blue, bg = colors.nobg, gui = "bold" }, +-- b = { fg = colors.white, bg = colors.black }, +-- c = { fg = colors.gray, bg = colors.nobg }, +-- }, +-- visual = { +-- a = { fg = colors.black, bg = colors.mauve, gui = "bold" }, +-- b = { fg = colors.mauve, bg = colors.nobg }, +-- c = { fg = colors.white, bg = colors.nobg }, +-- }, +-- replace = { +-- a = { fg = colors.black, bg = colors.red, gui = "bold" }, +-- b = { fg = colors.red, bg = colors.nobg }, +-- c = { fg = colors.white, bg = colors.nobg }, +-- }, +-- normal = { +-- a = { fg = colors.black, bg = colors.blue, gui = "bold" }, +-- b = { fg = colors.black, bg = colors.green }, +-- c = { fg = colors.white, bg = colors.black }, +-- }, +-- insert = { +-- a = { fg = colors.black, bg = colors.green, gui = "bold" }, +-- b = { fg = colors.teal, bg = colors.nobg }, +-- c = { fg = colors.white, bg = colors.nobg }, +-- }, +-- command = { +-- a = { fg = colors.black, bg = colors.peach, gui = "bold" }, +-- b = { fg = colors.peach, bg = colors.nobg }, +-- c = { fg = colors.white, bg = colors.nobg }, +-- }, +-- modified = { +-- a = { fg = colors.black, bg = colors.peach, gui = "bold" }, +-- b = { fg = colors.peach, bg = colors.peach }, +-- c = { fg = colors.white, bg = colors.peach }, +-- }, +-- } +--end +--return M +local M = {} +M.theme = function() + --local colors = { + -- darkgray = "#16161d", + -- gray = "#727169", + -- innerbg = nil, + -- outerbg = "#16161D", + -- normal = "#7e9cd8", + -- insert = "#98bb6c", + -- visual = "#ffa066", + -- replace = "#e46876", + -- command = "#e6c384", + --} + local colors = { + darkgray = "#16161d", + gray = "#727169", + innerbg = nil, + outerbg = "#16161D", + normal = "#39BAE6", + insert = "#AAD94C", + visual = "#FA8D3F", + replace = "#F07171", + command = "#F2AE49", + } + return { + inactive = { + a = { fg = colors.gray, bg = colors.outerbg, gui = "bold" }, + b = { fg = colors.gray, bg = colors.outerbg }, + c = { fg = colors.gray, bg = colors.innerbg }, + }, + visual = { + a = { fg = colors.darkgray, bg = colors.visual, gui = "bold" }, + b = { fg = colors.gray, bg = colors.outerbg }, + c = { fg = colors.gray, bg = colors.innerbg }, + }, + replace = { + a = { fg = colors.darkgray, bg = colors.replace, gui = "bold" }, + b = { fg = colors.gray, bg = colors.outerbg }, + c = { fg = colors.gray, bg = colors.innerbg }, + }, + normal = { + a = { fg = colors.darkgray, bg = colors.normal, gui = "bold" }, + b = { fg = colors.gray, bg = colors.outerbg }, + c = { fg = colors.gray, bg = colors.innerbg }, + y = { fg = colors.gray, bg = colors.outerbg }, + }, + insert = { + a = { fg = colors.darkgray, bg = colors.insert, gui = "bold" }, + b = { fg = colors.gray, bg = colors.outerbg }, + c = { fg = colors.gray, bg = colors.innerbg }, + }, + command = { + a = { fg = colors.darkgray, bg = colors.command, gui = "bold" }, + b = { fg = colors.gray, bg = colors.outerbg }, + c = { fg = colors.gray, bg = colors.innerbg }, + }, + } +end +return M diff --git a/lua/plugins/lsp-colors.lua b/lua/plugins/lsp-colors.lua new file mode 100644 index 0000000..1398123 --- /dev/null +++ b/lua/plugins/lsp-colors.lua @@ -0,0 +1,9 @@ +local status, colors = pcall(require, "lsp-colors") +if (not status) then return end + +colors.setup { + Error = "#db4b4b", + Warning = "#e0af68", + Information = "#0db9d7", + Hint = "#10B981" +} diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua new file mode 100644 index 0000000..5e7a680 --- /dev/null +++ b/lua/plugins/lsp.lua @@ -0,0 +1,227 @@ +local fn = vim.fn +local api = vim.api +local keymap = vim.keymap +local lsp = vim.lsp + +local utils = require("utils") + +local custom_attach = function(client, bufnr) + -- Mappings. + local map = function(mode, l, r, opts) + opts = opts or {} + opts.silent = true + opts.buffer = bufnr + keymap.set(mode, l, r, opts) + end + + map("n", "gd", vim.lsp.buf.definition, { desc = "go to definition" }) + map("n", "<C-]>", vim.lsp.buf.definition) + map("n", "K", vim.lsp.buf.hover) + map("n", "<C-k>", vim.lsp.buf.signature_help) + map("n", "<space>rn", vim.lsp.buf.rename, { desc = "varialbe rename" }) + map("n", "gr", vim.lsp.buf.references, { desc = "show references" }) + map("n", "[d", vim.diagnostic.goto_prev, { desc = "previous diagnostic" }) + map("n", "]d", vim.diagnostic.goto_next, { desc = "next diagnostic" }) + map("n", "<space>q", function() + vim.diagnostic.setqflist({ open = true }) + end, { desc = "put diagnostic to qf" }) + map("n", "<space>ca", vim.lsp.buf.code_action, { desc = "LSP code action" }) + map("n", "<space>wa", vim.lsp.buf.add_workspace_folder, { desc = "add workspace folder" }) + map("n", "<space>wr", vim.lsp.buf.remove_workspace_folder, { desc = "remove workspace folder" }) + map("n", "<space>wl", function() + inspect(vim.lsp.buf.list_workspace_folders()) + end, { desc = "list workspace folder" }) + + -- Set some key bindings conditional on server capabilities + if client.server_capabilities.documentFormattingProvider then + map("n", "<space>f", vim.lsp.buf.format, { desc = "format code" }) + end + + api.nvim_create_autocmd("CursorHold", { + buffer = bufnr, + callback = function() + local float_opts = { + focusable = false, + close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, + border = "rounded", + source = "always", -- show source in diagnostic popup window + prefix = " ", + } + + if not vim.b.diagnostics_pos then + vim.b.diagnostics_pos = { nil, nil } + end + + local cursor_pos = api.nvim_win_get_cursor(0) + if + (cursor_pos[1] ~= vim.b.diagnostics_pos[1] or cursor_pos[2] ~= vim.b.diagnostics_pos[2]) + and #vim.diagnostic.get() > 0 + then + vim.diagnostic.open_float(nil, float_opts) + end + + vim.b.diagnostics_pos = cursor_pos + end, + }) + + -- The blow command will highlight the current variable and its usages in the buffer. + if client.server_capabilities.documentHighlightProvider then + vim.cmd([[ + hi! link LspReferenceRead Visual + hi! link LspReferenceText Visual + hi! link LspReferenceWrite Visual + augroup lsp_document_highlight + autocmd! * <buffer> + autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight() + autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references() + augroup END + ]]) + end + + if vim.g.logging_level == "debug" then + local msg = string.format("Language server %s started!", client.name) + vim.notify(msg, vim.log.levels.DEBUG, { title = "Nvim-config" }) + end +end + +local capabilities = lsp.protocol.make_client_capabilities() +capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) +capabilities.textDocument.completion.completionItem.snippetSupport = true + +local lspconfig = require("lspconfig") + +if utils.executable("pylsp") then + lspconfig.pylsp.setup({ + on_attach = custom_attach, + settings = { + pylsp = { + plugins = { + pylint = { enabled = true, executable = "pylint" }, + pyflakes = { enabled = false }, + pycodestyle = { enabled = false }, + jedi_completion = { fuzzy = true }, + pyls_isort = { enabled = true }, + pylsp_mypy = { enabled = true }, + }, + }, + }, + flags = { + debounce_text_changes = 200, + }, + capabilities = capabilities, + }) +else + vim.notify("pylsp not found!", vim.log.levels.WARN, { title = "Nvim-config" }) +end + +-- if utils.executable('pyright') then +-- lspconfig.pyright.setup{ +-- on_attach = custom_attach, +-- capabilities = capabilities +-- } +-- else +-- vim.notify("pyright not found!", vim.log.levels.WARN, {title = 'Nvim-config'}) +-- end + +if utils.executable("clangd") then + lspconfig.clangd.setup({ + on_attach = custom_attach, + capabilities = capabilities, + filetypes = { "c", "cpp", "cc" }, + flags = { + debounce_text_changes = 500, + }, + }) +else + vim.notify("clangd not found!", vim.log.levels.WARN, { title = "Nvim-config" }) +end + +-- set up vim-language-server +if utils.executable("vim-language-server") then + lspconfig.vimls.setup({ + on_attach = custom_attach, + flags = { + debounce_text_changes = 500, + }, + capabilities = capabilities, + }) +else + vim.notify("vim-language-server not found!", vim.log.levels.WARN, { title = "Nvim-config" }) +end + +-- set up bash-language-server +if utils.executable("bash-language-server") then + lspconfig.bashls.setup({ + on_attach = custom_attach, + capabilities = capabilities, + }) +end + +if utils.executable("lua-language-server") then + -- settings for lua-language-server can be found on https://github.com/sumneko/lua-language-server/wiki/Settings . + lspconfig.sumneko_lua.setup({ + on_attach = custom_attach, + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = "LuaJIT", + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { "vim" }, + }, + workspace = { + -- Make the server aware of Neovim runtime files, + -- see also https://github.com/sumneko/lua-language-server/wiki/Libraries#link-to-workspace . + -- Lua-dev.nvim also has similar settings for sumneko lua, https://github.com/folke/lua-dev.nvim/blob/main/lua/lua-dev/sumneko.lua . + library = { + fn.stdpath("data") .. "/site/pack/packer/opt/emmylua-nvim", + fn.stdpath("config"), + }, + maxPreload = 2000, + preloadFileSize = 50000, + }, + }, + }, + capabilities = capabilities, + }) +end + +-- Change diagnostic signs. +--fn.sign_define("DiagnosticSignError", { text = "✗", texthl = "DiagnosticSignError" }) +--fn.sign_define("DiagnosticSignWarn", { text = "!", texthl = "DiagnosticSignWarn" }) +--fn.sign_define("DiagnosticSignInformation", { text = "", texthl = "DiagnosticSignInfo" }) +--fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" }) + +-- global config for diagnostic +vim.diagnostic.config({ + underline = false, + virtual_text = false, + signs = true, + severity_sort = true, +}) + +lsp.handlers["textDocument/publishDiagnostics"] = lsp.with(lsp.diagnostic.on_publish_diagnostics, { + underline = false, + virtual_text = false, + signs = true, + update_in_insert = false, +}) + +--local signs = { Error = " ", Warn = " ", Info = " ", Hint = " " } +local signs = { Error = "✘", Warn = "▲", Info = "", Hint = "⚑" } +for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) +end + +--sign({name = 'DiagnosticSignError', text = '✘'}) +--sign({name = 'DiagnosticSignWarn', text = '▲'}) +--sign({name = 'DiagnosticSignHint', text = '⚑'}) +--sign({name = 'DiagnosticSignInfo', text = ''}) + +-- Change border of documentation hover window, See https://github.com/neovim/neovim/pull/13998. +lsp.handlers["textDocument/hover"] = lsp.with(vim.lsp.handlers.hover, { + border = "rounded", +}) diff --git a/lua/plugins/lspOld.lsp b/lua/plugins/lspOld.lsp new file mode 100644 index 0000000..206ea57 --- /dev/null +++ b/lua/plugins/lspOld.lsp @@ -0,0 +1,531 @@ +-- lspconfig + nvim-cmp + lspsaga +-- Dependencies +-- nvim-lspconfig +-- nvim-cmp +-- cmp-buffer +-- cmp-path +-- cmp_luasnip +-- cmp-nvim-lsp +-- LuaSnip +-- friendly-snippets +local fn = vim.fn +local api = vim.api +local keymap = vim.keymap +local lsp = vim.lsp + +local utils = require("utils") + +local custom_attach = function(client, bufnr) + -- Mappings. + local map = function(mode, l, r, opts) + opts = opts or {} + opts.silent = true + opts.buffer = bufnr + keymap.set(mode, l, r, opts) + end + + +local lsp_defaults = { + flags = { + debounce_text_changes = 150, -- Amount of miliseconds neovim will wait to send the next document update notification. + }, + + -- The data on this option is send to the server, to announce what features the editor can support. + capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()), + on_attach = function(client, bufnr) + vim.api.nvim_exec_autocmds("User", { pattern = "LspAttached" }) + end, +} + +local lspconfig = require('lspconfig') + +lspconfig.util.default_config = vim.tbl_deep_extend( + 'force', + lspconfig.util.default_config, + lsp_defaults +) + +--- +-- LSP Servers +--- + +if utils.executable("pylsp") then + lspconfig.pylsp.setup { + on_attach = custom_attach, + settings = { + pylsp = { + plugins = { + pylint = { enabled = true, executable = "pylint" }, + pyflakes = { enabled = false }, + pycodestyle = { enabled = false }, + jedi_completion = { fuzzy = true }, + pyls_isort = { enabled = true }, + pylsp_mypy = { enabled = true }, + }, + }, + }, + flags = { + debounce_text_changes = 200, + }, + capabilities = capabilities, + } +else + vim.notify("pylsp not found!", vim.log.levels.WARN, { title = "Nvim-config" }) +end + +-- if utils.executable('pyright') then +-- lspconfig.pyright.setup{ +-- on_attach = custom_attach, +-- capabilities = capabilities +-- } +-- else +-- vim.notify("pyright not found!", vim.log.levels.WARN, {title = 'Nvim-config'}) +-- end + +if utils.executable("clangd") then + lspconfig.clangd.setup { + on_attach = custom_attach, + capabilities = capabilities, + filetypes = { "c", "cpp", "cc" }, + flags = { + debounce_text_changes = 500, + }, + } +else + vim.notify("clangd not found!", vim.log.levels.WARN, { title = "Nvim-config" }) +end + +-- set up vim-language-server +if utils.executable("vim-language-server") then + lspconfig.vimls.setup { + on_attach = custom_attach, + flags = { + debounce_text_changes = 500, + }, + capabilities = capabilities, + } +else + vim.notify("vim-language-server not found!", vim.log.levels.WARN, { title = "Nvim-config" }) +end + +-- set up bash-language-server +if utils.executable("bash-language-server") then + lspconfig.bashls.setup { + on_attach = custom_attach, + capabilities = capabilities, + } +end + +if utils.executable("lua-language-server") then + -- settings for lua-language-server can be found on https://github.com/sumneko/lua-language-server/wiki/Settings . + lspconfig.sumneko_lua.setup { + on_attach = custom_attach, + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = "LuaJIT", + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { "vim" }, + }, + workspace = { + -- Make the server aware of Neovim runtime files, + -- see also https://github.com/sumneko/lua-language-server/wiki/Libraries#link-to-workspace . + -- Lua-dev.nvim also has similar settings for sumneko lua, https://github.com/folke/lua-dev.nvim/blob/main/lua/lua-dev/sumneko.lua . + library = { + fn.stdpath("data") .. "/site/pack/packer/opt/emmylua-nvim", + fn.stdpath("config"), + }, + maxPreload = 2000, + preloadFileSize = 50000, + }, + }, + }, + capabilities = capabilities, + } +end +-- Lua +lspconfig.sumneko_lua.setup({ + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'}, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = { + enable = false, + }, + }, + }, + single_file_support = true, + on_attach = function(client, bufnr) + print('hello') + lspconfig.util.default_config.on_attach(client, bufnr) + end +}) + +lspconfig.sumneko_lua.setup({ +on_attach = custom_attach, +settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = "LuaJIT", + -- Setup your lua path + path = runtime_path, + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { "vim" }, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = api.nvim_get_runtime_file("", true), + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = { + enable = false, + }, + }, +}, +}) + + lspconfig.sumneko_lua.setup { + on_attach = custom_attach, + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = "LuaJIT", + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { "vim" }, + }, + workspace = { + -- Make the server aware of Neovim runtime files, + -- see also https://github.com/sumneko/lua-language-server/wiki/Libraries#link-to-workspace . + -- Lua-dev.nvim also has similar settings for sumneko lua, https://github.com/folke/lua-dev.nvim/blob/main/lua/lua-dev/sumneko.lua . + library = { + fn.stdpath("data") .. "/site/pack/packer/opt/emmylua-nvim", + fn.stdpath("config"), + }, + maxPreload = 2000, + preloadFileSize = 50000, + }, + }, + }, + capabilities = capabilities, + } + +require'lspconfig'.sumneko_lua.setup { + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'}, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = { + enable = false, + }, + }, + }, +} + + + +require'lspconfig'.sumneko_lua.setup{} + + +**Default values:** + - `cmd` : + { "lua-language-server" } + - `filetypes` : + - `log_level` : + ```lua + 2 + ``` + - `root_dir` : + ```lua + root_pattern(".luarc.json", ".luacheckrc", ".stylua.toml", "stylua.toml", "selene.toml", ".git") + ``` + - `settings` : + ```lua + { + Lua = { + telemetry = { + enable = false + } + } + } + - `single_file_support` : + true + + + + + + + + + + + + + + + + +**Snippet to enable the language server:** +```lua +require'lspconfig'.ccls.setup{} +``` + + +**Default values:** + - `cmd` : + ```lua + { "ccls" } + ``` + - `filetypes` : + ```lua + { "c", "cpp", "objc", "objcpp" } + ``` + - `offset_encoding` : + ```lua + "utf-32" + ``` + - `root_dir` : + ```lua + root_pattern('compile_commands.json', '.ccls', '.git') + ``` + - `single_file_support` : + ```lua + false + ``` + + + +**Snippet to enable the language server:** +```lua +require'lspconfig'.clangd.setup{} +``` +**Commands:** +- ClangdSwitchSourceHeader: Switch between source/header + +**Default values:** + - `capabilities` : + ```lua + default capabilities, with offsetEncoding utf-8 + ``` + - `cmd` : + ```lua + { "clangd" } + ``` + - `filetypes` : + ```lua + { "c", "cpp", "objc", "objcpp", "cuda", "proto" } + ``` + - `root_dir` : + ```lua + root_pattern( + '.clangd', + '.clang-tidy', + '.clang-format', + 'compile_commands.json', + 'compile_flags.txt', + 'configure.ac', + '.git' + ) + + ``` + - `single_file_support` : + ```lua + true + ``` + + +**Snippet to enable the language server:** +```lua +require'lspconfig'.pyright.setup{} +``` +**Commands:** +- PyrightOrganizeImports: Organize Imports + +**Default values:** + - `cmd` : + ```lua + { "pyright-langserver", "--stdio" } + ``` + - `filetypes` : + ```lua + { "python" } + ``` + - `root_dir` : + ```lua + see source file + ``` + - `settings` : + ```lua + { + python = { + analysis = { + autoSearchPaths = true, + diagnosticMode = "workspace", + useLibraryCodeForTypes = true + } + } + } + ``` + - `single_file_support` : + ```lua + true + ``` + +## rls + +https://github.com/rust-lang/rls + +rls, a language server for Rust + +See https://github.com/rust-lang/rls#setup to setup rls itself. +See https://github.com/rust-lang/rls#configuration for rls-specific settings. +All settings listed on the rls configuration section of the readme +must be set under settings.rust as follows: + +```lua +nvim_lsp.rls.setup { + settings = { + rust = { + unstable_features = true, + build_on_save = false, + all_features = true, + }, + }, +} +``` + +If you want to use rls for a particular build, eg nightly, set cmd as follows: + +```lua +cmd = {"rustup", "run", "nightly", "rls"} +``` + + + +**Snippet to enable the language server:** +```lua +require'lspconfig'.rls.setup{} +``` + + +**Default values:** + - `cmd` : + ```lua + { "rls" } + ``` + - `filetypes` : + ```lua + { "rust" } + ``` + - `root_dir` : + ```lua + root_pattern("Cargo.toml") + ``` + + +## rust_analyzer + +https://github.com/rust-analyzer/rust-analyzer + +rust-analyzer (aka rls 2.0), a language server for Rust + +See [docs](https://github.com/rust-analyzer/rust-analyzer/tree/master/docs/user#settings) for extra settings. + + + +**Snippet to enable the language server:** +```lua +require'lspconfig'.rust_analyzer.setup{} +``` +**Commands:** +- CargoReload: Reload current cargo workspace + +**Default values:** + - `cmd` : + ```lua + { "rust-analyzer" } + ``` + - `filetypes` : + ```lua + { "rust" } + ``` + - `root_dir` : + ```lua + root_pattern("Cargo.toml", "rust-project.json") + ``` + - `settings` : + ```lua + { + ["rust-analyzer"] = {} + } + ``` + +## rust_analyzer + +https://github.com/rust-analyzer/rust-analyzer + +rust-analyzer (aka rls 2.0), a language server for Rust + +See [docs](https://github.com/rust-analyzer/rust-analyzer/tree/master/docs/user#settings) for extra settings. + + + +**Snippet to enable the language server:** +```lua +require'lspconfig'.rust_analyzer.setup{} +``` +**Commands:** +- CargoReload: Reload current cargo workspace + +**Default values:** + - `cmd` : + ```lua + { "rust-analyzer" } + ``` + - `filetypes` : + ```lua + { "rust" } + ``` + - `root_dir` : + ```lua + root_pattern("Cargo.toml", "rust-project.json") + ``` + - `settings` : + ```lua + { + ["rust-analyzer"] = {} + } + ``` + + diff --git a/lua/plugins/lspconfig.lua b/lua/plugins/lspconfig.lua new file mode 100644 index 0000000..a130dcd --- /dev/null +++ b/lua/plugins/lspconfig.lua @@ -0,0 +1,148 @@ +--vim.lsp.set_log_level("debug") + +local status, nvim_lsp = pcall(require, "lspconfig") +if not status then + return +end + +local protocol = require("vim.lsp.protocol") + +-- Use an on_attach function to only map the following keys +-- after the language server attaches to the current buffer +local on_attach = function(client, bufnr) + local function buf_set_keymap(...) + vim.api.nvim_buf_set_keymap(bufnr, ...) + end + + local function buf_set_option(...) + vim.api.nvim_buf_set_option(bufnr, ...) + end + + --Enable completion triggered by <c-x><c-o> + buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") + + -- Mappings. + local opts = { noremap = true, silent = true } + + -- See `:help vim.lsp.*` for documentation on any of the below functions + buf_set_keymap("n", "gD", "<Cmd>lua vim.lsp.buf.declaration()<CR>", opts) -- most of the lsp server don't implement textDocument/Declaration, so gD is useless for now. + --buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts) + buf_set_keymap("n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts) + --buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts) + + -- add rust specific keymappings + if client.name == "rust_analyzer" then + buf_set_keymap("n", "<leader>rr", "<cmd>RustRunnables<CR>", opts) + buf_set_keymap("n", "<leader>ra", "<cmd>RustHoverAction<CR>", opts) + end + + -- formatting + if client.server_capabilities.documentFormattingProvider then + vim.api.nvim_create_autocmd("BufWritePre", { + group = vim.api.nvim_create_augroup("Format", { clear = true }), + buffer = bufnr, + callback = function() + vim.lsp.buf.format() + end, + }) + end +end + +protocol.CompletionItemKind = { + -- "", -- Text + -- "", -- Method + -- "", -- Function + -- "", -- Constructor + -- "", -- Field + -- "", -- Variable + -- "", -- Class + -- "ﰮ", -- Interface + -- "", -- Module + -- "", -- Property + -- "", -- Unit + -- "", -- Value + -- "", -- Enum + -- "", -- Keyword + -- "", -- Snippet + -- "", -- Color + -- "", -- File + -- "", -- Reference + -- "", -- Folder + -- "", -- EnumMember + -- "", -- Constant + -- "", -- Struct + -- "", -- Event + -- "ﬦ", -- Operator + -- "", -- TypeParameter + File = { icon = "", hl = "TSURI" }, + Module = { icon = "", hl = "TSNamespace" }, + Namespace = { icon = "", hl = "TSNamespace" }, + Package = { icon = "", hl = "TSNamespace" }, + Class = { icon = "ﴯ", hl = "TSType" }, + Method = { icon = "", hl = "TSMethod" }, + Property = { icon = "", hl = "TSMethod" }, + Field = { icon = "", hl = "TSField" }, + Constructor = { icon = "", hl = "TSConstructor" }, + Enum = { icon = "", hl = "TSType" }, + Interface = { icon = "", hl = "TSType" }, + Function = { icon = "", hl = "TSFunction" }, + Variable = { icon = "", hl = "TSConstant" }, + Constant = { icon = "", hl = "TSConstant" }, + String = { icon = "ﮜ", hl = "TSString" }, + Number = { icon = "", hl = "TSNumber" }, + Boolean = { icon = "ﮒ", hl = "TSBoolean" }, + Array = { icon = "", hl = "TSConstant" }, + Object = { icon = "⦿", hl = "TSType" }, + Key = { icon = "", hl = "TSType" }, + Null = { icon = "ﳠ", hl = "TSType" }, + EnumMember = { icon = "", hl = "TSField" }, + Struct = { icon = "ﴯ", hl = "TSType" }, + Event = { icon = "🗲", hl = "TSType" }, + Operator = { icon = "+", hl = "TSOperator" }, + TypeParameter = { icon = "𝙏", hl = "TSParameter" }, +} + +-- Set up completion using nvim_cmp with LSP source +local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()) + +nvim_lsp.flow.setup({ + on_attach = on_attach, + capabilities = capabilities, +}) + +nvim_lsp.sumneko_lua.setup({ + on_attach = on_attach, + settings = { + Lua = { + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { "vim" }, + }, + + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + checkThirdParty = false, + }, + }, + }, +}) + +-- Diagnostic symbols in the sign column (gutter) +--local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } +--local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } +local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } +for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) +end +-- +vim.diagnostic.config({ + virtual_text = { + prefix = "●", + }, + update_in_insert = true, + float = { + source = "always", -- Or "if_many" + }, +}) diff --git a/lua/plugins/lspkind.lua b/lua/plugins/lspkind.lua new file mode 100644 index 0000000..72ca5c2 --- /dev/null +++ b/lua/plugins/lspkind.lua @@ -0,0 +1,47 @@ +local status, lspkind = pcall(require, "lspkind") +if (not status) then return end + +lspkind.init({ + -- enables text annotations + -- + -- default: true + mode = 'symbol', + + -- default symbol map + -- can be either 'default' (requires nerd-fonts font) or + -- 'codicons' for codicon preset (requires vscode-codicons font) + -- + -- default: 'default' + preset = 'codicons', + + -- override preset symbols + -- + -- default: {} + symbol_map = { + Text = "", + Method = "", + Function = "", + Constructor = "", + Field = "ﰠ", + Variable = "", + Class = "ﴯ", + Interface = "", + Module = "", + Property = "ﰠ", + Unit = "塞", + Value = "", + Enum = "", + Keyword = "", + Snippet = "", + Color = "", + File = "", + Reference = "", + Folder = "", + EnumMember = "", + Constant = "", + Struct = "פּ", + Event = "", + Operator = "", + TypeParameter = "" + }, +}) diff --git a/lua/plugins/lspsaga.lua b/lua/plugins/lspsaga.lua new file mode 100644 index 0000000..ceb1099 --- /dev/null +++ b/lua/plugins/lspsaga.lua @@ -0,0 +1,61 @@ +local status, saga = pcall(require, "lspsaga") +if not status then + return +end + +saga.init_lsp_saga({ + -- when cursor in saga window you config these to move + move_in_saga = { prev = "k", next = "j" }, + diagnostic_header = { " ", " ", " ", " " }, + scroll_in_preview = { + scroll_down = "<C-d>", + scroll_up = "<C-u>", + }, + code_action_icon = "ﯦ ", + -- Same as nvim-lightbulb but async + code_action_lightbulb = { + sign = false, + virtual_text = true, + }, + finder_icons = { + def = " ", + ref = " ", + link = " ", + }, + finder_action_keys = { + open = "<CR>", + "o", + vsplit = "gv", + split = "gs", + tabe = "t", + quit = "gq", + scroll_down = "<C-f>", + scroll_up = "<C-b>", + }, + + -- Show symbols in winbar must be neovim 0.8.0, + -- Close it until neovim 0.8.0 become stable + symbol_in_winbar = { + in_custom = false, + --enable = enable_winbar, + separator = " ", + show_file = true, + click_support = false, + }, +}) + + -- Mappings. +local map = vim.api.nvim_set_keymap +local opts = { noremap = true, silent = true } + +map("n", "gd", "<Cmd>Lspsaga lsp_finder<CR>", opts) -- Press "o" to open the reference location +map("n", "gp", "<Cmd>Lspsaga peek_definition<CR>", opts) +map("n", "K", "<Cmd>Lspsaga hover_doc<CR>", opts) +map("n", "gk", "<Cmd>Lspsaga diagnostic_jump_prev<CR>", opts) +map("n", "gj", "<Cmd>Lspsaga diagnostic_jump_next<CR>", opts) +map("n", "gs", "<Cmd>Lspsaga signature_help<CR>", opts) -- Default is <C-k> +map("n", "go", "<Cmd>Lspsaga show_line_diagnostics<CR>", opts) +map("n", "gr", "<Cmd>Lspsaga rename<CR>", opts) +map("n", "ga", "<Cmd>Lspsaga code_action<CR>", opts) +map("n", "[d", "<Cmd>lua vim.lsp.diagnostic.goto_prev()<CR>", opts) +map("n", "]d", "<Cmd>lua vim.lsp.diagnostic.goto_next()<CR>", opts) diff --git a/lua/plugins/lualine.lua b/lua/plugins/lualine.lua new file mode 100644 index 0000000..9d86e21 --- /dev/null +++ b/lua/plugins/lualine.lua @@ -0,0 +1,423 @@ +local lualine_status_ok, lualine = pcall(require, "lualine") +if not lualine_status_ok then + print("lualine.nvim is etiher broken or is not installed.") + return +end + +--local colors = require('tokyonight.colors').setup() +--local colors = { +--bg_dark = "#1f2335", +--bg = "#24283b", +--fg = "#c0caf5", +--fg_gutter = "#3b4261", +--green = "#a6e3a1", +--red = "#f38ba8", +--} + +--local colors = { +-- gray = '#23232e', +-- lightgray = '#5f6a8e', +-- orange = '#ffb86c', +-- purple = '#bd93f9', +-- red = '#ff5555', +-- yellow = '#f1fa8c', +-- green = '#50fa7b', +-- white = '#f8f8f2', +-- black = '#282a36', +--} +local colors = { + nobg = nil, + blue = "#87b0f9", + mauve = "#cba6f7", + red = "#f38ba8", + green = "#a6e3a1", + peach = "#fab387", + white = "#c6d0f5", + gray = "#a1a8c9", + black = "#1e1e2e", + innerbg = nil, + outerbg = "#16161D", +} +--require("lualine").setup({ +-- Your lua part of config goes here +require("lualine").setup({ + options = { + icons_enabled = true, + --theme = "auto", + theme = require("plugins.linecolor").theme(), + --theme = { + -- We are going to use lualine_c an lualine_x as left and + -- right section. Both are highlighte by c theme . So we + -- are just setting default looks o statusline + --normal = { c = { fg = colors.fg, bg = colors.bg } }, + --inactive = { c = { fg = colors.fg, bg = colors.bg } }, + --}, + component_separators = { left = "", right = "" }, + section_separators = { left = "", right = "" }, + --component_separators = { left = '|', right = '|'}, + --section_separators = { left = '', right = ''}, + disabled_filetypes = { + statusline = {}, + winbar = {}, + }, + ignore_focus = {}, + always_divide_middle = true, + globalstatus = true, + refresh = { + statusline = 1000, + tabline = 1000, + winbar = 1000, + }, + }, + sections = { + lualine_a = { "mode" }, + lualine_b = { + "branch", + { + "diff", + colored = true, + diff_color = { + added = "DiffAdd", + modified = "DiffChange", + removed = "DiffDelete", + }, + }, + { + "diagnostics", + + sources = { "nvim_lsp" }, + sections = { "error", "warn", "info" }, + + diagnostics_color = { + error = "DiagnosticError", + warn = "DiagnosticWarn", + info = "DiagnosticInfo", + }, + colored = true, + update_in_insert = false, + always_visible = false, + }, + }, + --lualine_b = { "branch", "diff", "diagnostics" }, + lualine_c = { + --{"filetype", padding={right=0}, icon_only = true, component_separators = {left = "", right = ""}}, + --{"filename", padding={left=0}, color = {gui = "bold,italic"}}, + --{ "filetype", + -- icon_only = true, + --}, + { + "filename", + --color = {gui = "bold,italic", fg = '#ffaa88', bg = 'nil' }, + --component_separators = {left = "", right = ""}, + }, + }, + lualine_x = { "encoding", "fileformat", "filetype" }, + --lualine_x = { + -- {"encoding", color = { bg = colors.black }, component_separators = {left = "", right = ""}}, + -- {"fileformat", color = { bg = colors.black }, component_separators = {left = "", right = ""}}, + -- {"filetype", color = { bg = colors.black }, component_separators = {left = "", right = ""}}, + --}, + lualine_y = { "progress" }, + lualine_z = { "location" }, + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = { "filename" }, + lualine_x = { "location" }, + lualine_y = {}, + lualine_z = {}, + }, + -- tabline = {}, + tabline = { + --lualine_a = { "mode" }, + --lualine_a = {custom_fname}, + lualine_a = { + { + "buffers", + show_filename_only = false, + show_modified_status = true, + mode = 4, + buffers_color = { + active = { bg = colors.nobg, fg = colors.black }, -- color for active buffer + --inactive = { bg = colors.white, fg = colors.fg_gutter }, -- color for inactive buffer + --active = { bg = colors.bg, fg = colors.white }, -- color for active buffer + --inactive = { bg = colors.bg_dark, fg = colors.fg_gutter }, -- color for inactive buffer + ----color = function() + ---- return { bg = vim.bo.modified and '#aa3355' or '#33aa88' } + ----end, + }, + symbols = { + modified = " ●", -- Text to show when the buffer is modified + alternate_file = "", -- Text to show to identify the alternate file + --directory = "", -- Text to show when the buffer is a directory + }, + max_length = vim.o.columns * 5 / 6, + --{{function() + -- local bg = 'hi! lualine_buffers_color' -- not modified + -- if vim.bo.modified then bg = '#c70039' -- unsaved + -- elseif not vim.bo.readonly then bg = 'hi! lualine_buffers_color' end -- readonly + -- vim.cmd('hi! lualine_buffers_color guibg='..bg) + --end, + --color = 'hi! lualine_buffers_color', + --}}, + }, + }, + lualine_b = {}, + lualine_c = {}, + lualine_x = {}, + lualine_y = {}, + lualine_z = {}, + --lualine_z = { "tabs" }, + }, + --tabline = { + -- lualine_a = { "mode" }, + -- lualine_b = { "buffers" }, + -- lualine_c = { "branch" }, + -- --lualine_c = { "branch", "diff", "diagnostics" }, + -- lualine_x = {}, + -- lualine_y = {}, + -- lualine_z = { "tabs" }, + --}, + --winbar = { + -- lualine_a = {}, + -- lualine_b = {}, + -- lualine_c = {'filename'}, + -- lualine_x = {}, + -- lualine_y = {}, + -- lualine_z = {} + --}, + --inactive_winbar = { + -- lualine_a = {}, + -- lualine_b = {}, + -- lualine_c = {}, + -- lualine_x = {}, + -- lualine_y = {}, + -- lualine_z = {} + --}, + winbar = {}, + inactive_winbar = {}, + --extensions = {}, + extensions = { "quickfix" }, +}) +--require("lualine").statusline() +--require("lualine").tabline() +--if not lualine_status_ok then +-- print("lualine.nvim is etiher broken or is not installed.") +-- return +--end +--local lualine_status_ok, lualine = pcall(require, "lualine") +--if not lualine_status_ok then +-- print("lualine.nvim is etiher broken or is not installed.") +-- return +--end +--local utils = require("heirline.utils") + +--local M = {} + +-- stylua: ignore start +--M.colours = {--{{{ +---- Color table for highlights +---- stylua: ignore +--local colors = { +-- bg = '#2E3440', +-- fg = '#E5E9F0', +-- yellow = '#EBCB8B', +-- cyan = '#88C0D0', +-- darkblue = '#5E81AC', +-- green = '#A3BE8C', +-- orange = '#D08770', +-- violet = '#B48EAD', +-- magenta = '#B48EAD', +-- blue = '#81A1C1', +-- red = '#BF616A', +--} +-- +--local conditions = { +-- buffer_not_empty = function() +-- return vim.fn.empty(vim.fn.expand("%:t")) ~= 1 +-- end, +-- hide_in_width = function() +-- return vim.fn.winwidth(0) > 80 +-- end, +-- check_git_workspace = function() +-- local filepath = vim.fn.expand("%:p:h") +-- local gitdir = vim.fn.finddir(".git", filepath .. ";") +-- return gitdir and #gitdir > 0 and #gitdir < #filepath +-- end, +--} + +-- Config +--local config = { +--require('lualine').setup { +-- options = { +-- -- Disable sections and component separators +-- component_separators = "", +-- section_separators = "", +-- theme = { +-- -- We are going to use lualine_c an lualine_x as left and +-- -- right section. Both are highlighte by c theme . So we +-- -- are just setting default looks o statusline +-- normal = { c = { fg = colors.fg, bg = colors.bg } }, +-- inactive = { c = { fg = colors.fg, bg = colors.bg } }, +-- }, +-- disabled_filetypes = { "NvimTree" }, +-- }, +-- sections = { +-- -- these are to remove the defaults +-- lualine_a = {}, +-- lualine_b = {}, +-- lualine_y = {}, +-- lualine_z = {}, +-- -- These will be filled later +-- lualine_c = {}, +-- lualine_x = {}, +-- }, +-- inactive_sections = { +-- -- these are to remove the defaults +-- lualine_a = {}, +-- lualine_b = {}, +-- lualine_y = {}, +-- lualine_z = {}, +-- lualine_c = {}, +-- lualine_x = {}, +-- }, +--} +-- +---- Inserts a component in lualine_c at left section +--local function ins_left(component) +-- table.insert(lualine.sections.lualine_c, component) +--end +-- +---- Inserts a component in lualine_x ot right section +--local function ins_right(component) +-- table.insert(lualine.sections.lualine_x, component) +--end +-- +--ins_left({ +-- function() +-- return "▊" +-- end, +-- color = { fg = colors.green }, -- Sets highlighting of component +-- padding = { left = 0, right = 1 }, -- We don't need space before this +--}) +-- +--ins_left({ +-- -- mode component +-- function() +-- return "" +-- end, +-- color = function() +-- -- auto change color according to neovims mode +-- local mode_color = { +-- n = colors.blue, +-- i = colors.green, +-- v = colors.violet, +-- ["�"] = colors.blue, +-- V = colors.blue, +-- c = colors.magenta, +-- no = colors.red, +-- s = colors.orange, +-- S = colors.orange, +-- ic = colors.yellow, +-- R = colors.violet, +-- Rv = colors.violet, +-- cv = colors.red, +-- ce = colors.red, +-- r = colors.cyan, +-- rm = colors.cyan, +-- ["r?"] = colors.cyan, +-- ["!"] = colors.red, +-- t = colors.red, +-- } +-- return { fg = mode_color[vim.fn.mode()] } +-- end, +-- padding = { right = 1 }, +--}) +-- +--ins_left({ +-- -- mode component +-- "mode", +-- color = function() +-- -- auto change color according to neovims mode +-- local mode_color = { +-- n = colors.red, +-- i = colors.green, +-- v = colors.violet, +-- ["�"] = colors.blue, +-- V = colors.blue, +-- c = colors.magenta, +-- no = colors.red, +-- s = colors.orange, +-- S = colors.orange, +-- ic = colors.yellow, +-- R = colors.violet, +-- Rv = colors.violet, +-- cv = colors.red, +-- ce = colors.red, +-- r = colors.cyan, +-- rm = colors.cyan, +-- ["r?"] = colors.cyan, +-- ["!"] = colors.red, +-- t = colors.red, +-- } +-- return { fg = mode_color[vim.fn.mode()] } +-- end, +-- padding = { right = 1 }, +--}) +-- +--ins_left({ +-- "branch", +-- icon = "", +-- color = { fg = colors.violet, gui = "bold" }, +--}) +-- +--ins_left({ +-- "filename", +-- cond = conditions.buffer_not_empty, +-- color = { fg = colors.aqua, gui = "bold" }, +--}) +-- +--ins_left({ +-- -- filesize component +-- "filesize", +-- cond = conditions.buffer_not_empty, +--}) +-- +---- Add components to right sections +--ins_right({ +-- "o:encoding", -- option component same as &encoding in viml +-- fmt = string.lower, -- I'm not sure why it's upper case either ;) +-- cond = conditions.hide_in_width, +-- color = { fg = colors.yellow }, +--}) +-- +--ins_right({ +-- "fileformat", +-- fmt = string.upper, +-- icons_enabled = true, -- I think icons are cool but Eviline doesn't have them. sigh +-- color = { fg = colors.fg, gui = "bold" }, +--}) +-- +--ins_right({ +-- "filetype", +--}) +-- +--ins_right({ "progress", color = { fg = colors.fg, gui = "bold" } }) +-- +--ins_right({ +-- "location", +--}) +-- +--ins_right({ +-- function() +-- return "▊" +-- end, +-- color = { fg = colors.green }, +-- padding = { left = 1 }, +--}) +--return M +-- Now don't forget to initialize lualine +--require("lualine").setup(config) +--require"lualine".setup(config) +--lualine.setup(config) diff --git a/lua/plugins/mason.lua b/lua/plugins/mason.lua new file mode 100644 index 0000000..69c61ba --- /dev/null +++ b/lua/plugins/mason.lua @@ -0,0 +1,27 @@ +local status, mason = pcall(require, "mason") +if (not status) then return end +local status2, lspconfig = pcall(require, "mason-lspconfig") +if (not status2) then return end + +mason.setup({ + +}) + +lspconfig.setup { + ensure_installed = { "sumneko_lua" }, +} +local keymap = vim.api.nvim_set_keymap +local opts = { noremap = true } + + +keymap('n', 'gd', ':lua vim.lsp.buf.definition()<cr>', opts) +keymap('n', 'gD', ':lua vim.lsp.buf.declaration()<cr>', opts) +keymap('n', 'gi', ':lua vim.lsp.buf.implementation()<cr>', opts) +keymap('n', 'gw', ':lua vim.lsp.buf.document_symbol()<cr>', opts) +keymap('n', 'gw', ':lua vim.lsp.buf.workspace_symbol()<cr>', opts) +keymap('n', 'gr', ':lua vim.lsp.buf.references()<cr>', opts) +keymap('n', 'gt', ':lua vim.lsp.buf.type_definition()<cr>', opts) +keymap('n', 'K', ':lua vim.lsp.buf.hover()<cr>', opts) +keymap('n', '<c-k>', ':lua vim.lsp.buf.signature_help()<cr>', opts) +keymap('n', '<leader>af', ':lua vim.lsp.buf.code_action()<cr>', opts) +keymap('n', '<leader>rn', ':lua vim.lsp.buf.rename()<cr>', opts) diff --git a/lua/plugins/neoscroll.lua b/lua/plugins/neoscroll.lua new file mode 100644 index 0000000..d122584 --- /dev/null +++ b/lua/plugins/neoscroll.lua @@ -0,0 +1,21 @@ +require("neoscroll").setup({ + easing_function = "quadratic", +}) + +local t = {} +-- Syntax: t[keys] = {function, {function arguments}} +-- Use the "sine" easing function +t["<C-u>"] = { "scroll", { "-vim.wo.scroll", "true", "20", [['cubic']] } } +t["<C-d>"] = { "scroll", { "vim.wo.scroll", "true", "20", [['cubic']] } } +-- Use the "circular" easing function +t["<C-b>"] = { "scroll", { "-vim.api.nvim_win_get_height(0)", "true", "50", [['cubic']] } } +t["<C-f>"] = { "scroll", { "vim.api.nvim_win_get_height(0)", "true", "50", [['cubic']] } } +-- Pass "nil" to disable the easing animation (constant scrolling speed) +t["<C-y>"] = { "scroll", { "-0.10", "false", "100", nil } } +t["<C-e>"] = { "scroll", { "0.10", "false", "100", nil } } +-- When no easing function is provided the default easing function (in this case "quadratic") will be used +t["zt"] = { "zt", { "10" } } +t["zz"] = { "zz", { "10" } } +t["zb"] = { "zb", { "10" } } + +require("neoscroll.config").set_mappings(t) diff --git a/lua/plugins/null-ls.lua b/lua/plugins/null-ls.lua new file mode 100644 index 0000000..7fc4377 --- /dev/null +++ b/lua/plugins/null-ls.lua @@ -0,0 +1,26 @@ +local null_ls_status_ok, null_ls = pcall(require, "null-ls") +if not null_ls_status_ok then + return +end + +-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting +local formatting = null_ls.builtins.formatting +-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics +local diagnostics = null_ls.builtins.diagnostics + +--null_ls.setup({ +-- debug = false, +-- sources = { +-- formatting.prettier.with({ extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" } }), +-- formatting.black.with({ extra_args = { "--fast" } }), +-- formatting.stylua, +-- -- diagnostics.flake8 +-- }, +--}) +require("null-ls").setup({ + sources = { + require("null-ls").builtins.formatting.stylua, + require("null-ls").builtins.diagnostics.eslint, + require("null-ls").builtins.completion.spell, + }, +}) diff --git a/lua/plugins/nvim-tree.lua b/lua/plugins/nvim-tree.lua new file mode 100644 index 0000000..f362659 --- /dev/null +++ b/lua/plugins/nvim-tree.lua @@ -0,0 +1,68 @@ +local status_ok, nvim_tree = pcall(require, "nvim-tree") +if not status_ok then + return +end + +local config_status_ok, nvim_tree_config = pcall(require, "nvim-tree.config") +if not config_status_ok then + return +end + +local tree_cb = nvim_tree_config.nvim_tree_callback + +nvim_tree.setup({ + update_focused_file = { + enable = true, + update_cwd = true, + }, + renderer = { + root_folder_modifier = ":t", + icons = { + glyphs = { + default = "", + symlink = "", + folder = { + arrow_open = "", + arrow_closed = "", + default = "", + open = "", + empty = "", + empty_open = "", + symlink = "", + symlink_open = "", + }, + git = { + unstaged = "", + staged = "S", + unmerged = "", + renamed = "➜", + untracked = "U", + deleted = "", + ignored = "◌", + }, + }, + }, + }, + diagnostics = { + enable = true, + show_on_dirs = true, + icons = { + hint = "", + info = "", + warning = "", + error = "", + }, + }, + view = { + width = 30, + --height = 30, + side = "right", + mappings = { + list = { + { key = { "l", "<CR>", "o" }, cb = tree_cb("edit") }, + { key = "h", cb = tree_cb("close_node") }, + { key = "v", cb = tree_cb("vsplit") }, + }, + }, + }, +}) diff --git a/lua/plugins/prettier.lua b/lua/plugins/prettier.lua new file mode 100644 index 0000000..05d4665 --- /dev/null +++ b/lua/plugins/prettier.lua @@ -0,0 +1,19 @@ +local status, prettier = pcall(require, "prettier") +if (not status) then return end + +prettier.setup { + bin = 'prettierd', + filetypes = { + "c", + "lua", + "vim", + --"css", + --"javascript", + --"javascriptreact", + --"typescript", + --"typescriptreact", + --"json", + --"scss", + "less" + } +} diff --git a/lua/plugins/tabline.lua b/lua/plugins/tabline.lua new file mode 100644 index 0000000..4e1c506 --- /dev/null +++ b/lua/plugins/tabline.lua @@ -0,0 +1,22 @@ +require("tabline").setup({ + -- Defaults configuration options + enable = true, + options = { + -- If lualine is installed tabline will use separators configured in lualine by default. + -- These options can be used to override those settings. + section_separators = { "", "" }, + component_separators = { "", "" }, + max_bufferline_percent = 66, -- set to nil by default, and it uses vim.o.columns * 2/3 + show_tabs_always = true, -- this shows tabs only when there are more than one tab or if the first tab is named + show_devicons = true, -- this shows devicons in buffer section + show_bufnr = true, -- this appends [bufnr] to buffer section, + show_filename_only = false, -- shows base filename only instead of relative path in filename + modified_icon = "+", -- change the default modified icon + modified_italic = true, -- set to true by default; this determines whether the filename turns italic if modified + show_tabs_only = false, -- this shows only tabs instead of tabs + buffers + }, +}) +vim.cmd([[ + set guioptions-=e " Use showtabline in gui vim + set sessionoptions+=tabpages,globals " store tabpages and globals in session +]]) diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua new file mode 100644 index 0000000..dcf6b9e --- /dev/null +++ b/lua/plugins/telescope.lua @@ -0,0 +1,177 @@ +local status_ok, telescope = pcall(require, "telescope") +if not status_ok then + return +end +local actions = require("telescope.actions") +local builtin = require("telescope.builtin") + +local function telescope_buffer_dir() + return vim.fn.expand("%:p:h") +end + +telescope.load_extension("fzf") +telescope.load_extension("file_browser") +require("telescope").load_extension("file_browser") +local fb_actions = require("telescope").extensions.file_browser.actions +--telescope.load_extension('media_files') + +telescope.setup({ + defaults = { + -- + prompt_prefix = " ", + selection_caret = " ", + path_display = { "smart" }, + -- + mappings = { + i = { + ["<C-n>"] = actions.cycle_history_next, + ["<C-p>"] = actions.cycle_history_prev, + + ["<C-j>"] = actions.move_selection_next, + ["<C-k>"] = actions.move_selection_previous, + + ["<C-c>"] = actions.close, + + ["<Down>"] = actions.move_selection_next, + ["<Up>"] = actions.move_selection_previous, + + ["<CR>"] = actions.select_default, + ["<C-x>"] = actions.select_horizontal, + ["<C-y>"] = actions.select_vertical, + ["<C-t>"] = actions.select_tab, + + ["<C-u>"] = actions.preview_scrolling_up, + ["<C-d>"] = actions.preview_scrolling_down, + + ["<PageUp>"] = actions.results_scrolling_up, + ["<PageDown>"] = actions.results_scrolling_down, + + ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, + ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, + ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, + ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist, + ["<C-l>"] = actions.complete_tag, + ["<C-_>"] = actions.which_key, -- keys from pressing <C-/> + }, + + n = { + ["<esc>"] = actions.close, + ["<CR>"] = actions.select_default, + ["<C-x>"] = actions.select_horizontal, + ["<C-v>"] = actions.select_vertical, + ["<C-t>"] = actions.select_tab, + + ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, + ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, + ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, + ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist, + + ["j"] = actions.move_selection_next, + ["k"] = actions.move_selection_previous, + ["H"] = actions.move_to_top, + ["M"] = actions.move_to_middle, + ["L"] = actions.move_to_bottom, + + ["<Down>"] = actions.move_selection_next, + ["<Up>"] = actions.move_selection_previous, + ["gg"] = actions.move_to_top, + ["G"] = actions.move_to_bottom, + + ["<C-u>"] = actions.preview_scrolling_up, + ["<C-d>"] = actions.preview_scrolling_down, + + ["<PageUp>"] = actions.results_scrolling_up, + ["<PageDown>"] = actions.results_scrolling_down, + + ["?"] = actions.which_key, + ["cd"] = function(prompt_bufnr) + local selection = require("telescope.actions.state").get_selected_entry() + local dir = vim.fn.fnamemodify(selection.path, ":p:h") + require("telescope.actions").close(prompt_bufnr) + -- Depending on what you want put `cd`, `lcd`, `tcd` + vim.cmd(string.format("silent lcd %s", dir)) + end, + }, + }, + }, + pickers = { + -- Default configuration for builtin pickers goes here: + -- picker_name = { + -- picker_config_key = value, + -- ... + -- } + -- Now the picker_config_key will be applied every time you call this + -- builtin picker + }, + extensions = { + file_browser = { + theme = "dropdown", + -- disables netrw and use telescope-file-browser in its place + hijack_netrw = true, + mappings = { + -- your custom insert mode mappings + ["i"] = { + ["<C-w>"] = function() + vim.cmd("normal vbd") + end, + }, + ["n"] = { + -- your custom normal mode mappings + ["N"] = fb_actions.create, + ["h"] = fb_actions.goto_parent_dir, + ["/"] = function() + vim.cmd("startinsert") + end, + }, + }, + }, + + media_files = { + -- filetypes whitelist + -- defaults to {"png", "jpg", "mp4", "webm", "pdf"} + filetypes = { "png", "webp", "jpg", "jpeg" }, + find_cmd = "rg", -- find command (defaults to `fd`) + }, + -- Your extension configuration goes here: + -- extension_name = { + -- extension_config_key = value, + -- } + -- please take a look at the readme of the extension you want to configure + }, +}) + +telescope.load_extension("file_browser") + +vim.keymap.set("n", ";f", function() + builtin.find_files({ + no_ignore = false, + hidden = true, + }) +end) +vim.keymap.set("n", ";r", function() + builtin.live_grep() +end) +vim.keymap.set("n", "\\\\", function() + builtin.buffers() +end) +vim.keymap.set("n", ";t", function() + builtin.help_tags() +end) +vim.keymap.set("n", ";;", function() + builtin.resume() +end) +vim.keymap.set("n", ";e", function() + builtin.diagnostics() +end) +vim.keymap.set("n", "sf", function() + telescope.extensions.file_browser.file_browser({ + path = "%:p:h", + cwd = telescope_buffer_dir(), + respect_gitignore = false, + hidden = true, + grouped = true, + previewer = false, + initial_mode = "normal", + layout_config = { height = 40 }, + }) +end) diff --git a/lua/plugins/toggleterm.lua b/lua/plugins/toggleterm.lua new file mode 100644 index 0000000..912729a --- /dev/null +++ b/lua/plugins/toggleterm.lua @@ -0,0 +1,90 @@ +local status_ok, toggleterm = pcall(require, "toggleterm") +if not status_ok then + return +end + +toggleterm.setup({ + size = function(term) + if term.direction == "horizontal" then + return 12 + elseif term.direction == "vertical" then + return vim.o.columns * 0.3 + end + end, + --size = 20, + open_mapping = [[<leader>to]], + hide_numbers = true, + shade_filetypes = {}, + shade_terminals = false, + shading_factor = 1, + start_in_insert = true, + insert_mappings = true, + persist_size = true, + direction = "float", + --direction = "vertical", + --direction = "horizontal", + close_on_exit = true, + shell = vim.o.shell, + highlights = { + -- highlights which map to a highlight group name and a table of it's values + -- NOTE: this is only a subset of values, any group placed here will be set for the terminal window split + Normal = { + background = "#000000", + }, + }, + float_opts = { + width = 70, + height = 15, + winblend = 3, + border = "curved", + --winblend = 0, + highlights = { + border = "Normal", + background = "Normal", + }, + }, +}) + +function _G.set_terminal_keymaps() + local opts = { noremap = true } + --local opts = {buffer = 0} + vim.api.nvim_buf_set_keymap(0, "t", "<esc>", [[<C-\><C-n>]], opts) + vim.api.nvim_buf_set_keymap(0, "t", "jj", [[<C-\><C-n>]], opts) + vim.api.nvim_buf_set_keymap(0, "t", "<C-h>", [[<C-\><C-n><C-W>h]], opts) + vim.api.nvim_buf_set_keymap(0, "t", "<C-j>", [[<C-\><C-n><C-W>j]], opts) + vim.api.nvim_buf_set_keymap(0, "t", "<C-k>", [[<C-\><C-n><C-W>k]], opts) + vim.api.nvim_buf_set_keymap(0, "t", "<C-l>", [[<C-\><C-n><C-W>l]], opts) +end + +vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()") + +local Terminal = require("toggleterm.terminal").Terminal +local lazygit = Terminal:new({ cmd = "lazygit", hidden = true }) + +function _LAZYGIT_TOGGLE() + lazygit:toggle() +end + +local node = Terminal:new({ cmd = "node", hidden = true }) + +function _NODE_TOGGLE() + node:toggle() +end + +local ncdu = Terminal:new({ cmd = "ncdu", hidden = true }) + +function _NCDU_TOGGLE() + ncdu:toggle() +end + +local htop = Terminal:new({ cmd = "htop", hidden = true }) + +function _HTOP_TOGGLE() + htop:toggle() +end + +local python = Terminal:new({ cmd = "python", hidden = true }) + +function _PYTHON_TOGGLE() + python:toggle() +end diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua new file mode 100644 index 0000000..261e262 --- /dev/null +++ b/lua/plugins/treesitter.lua @@ -0,0 +1,39 @@ +local status, treesitter = pcall(require, "nvim-treesitter.configs") +if (not status) then return end + +treesitter.setup { + highlight = { + enable = true, + disable = {}, + }, + indent = { + enable = true, + disable = {}, + --disable = { "python", "css" } + }, + --ensure_installed = { + -- "c", + -- "zsh", + -- "lua" + -- --"rust", + -- --"php", + -- --"json", + -- --"yaml", + -- --"swift", + -- --"css", + -- --"html", + -- --"toml", + -- --"tsx", + --}, + ensure_installed = "all", -- one of "all" or a list of languages + --ignore_install = { "" }, -- List of parsers to ignore installing + + autotag = { + enable = true, + }, +} +--vim.opt.foldmethod = "expr" +--vim.opt.foldexpr = "nvim_treesitter#foldexpr()" + +--local parser_config = require "nvim-treesitter.parsers".get_parser_configs() +--parser_config.tsx.filetype_to_parsername = { "javascript", "typescript.tsx" } diff --git a/lua/plugins/web-devicons.lua b/lua/plugins/web-devicons.lua new file mode 100644 index 0000000..b8396bc --- /dev/null +++ b/lua/plugins/web-devicons.lua @@ -0,0 +1,12 @@ +local status, icons = pcall(require, "nvim-web-devicons") +if (not status) then return end + +icons.setup { + -- your personnal icons can go here (to override) + -- DevIcon will be appended to `name` + override = { + }, + -- globally enable default icons (default to false) + -- will get overriden by `get_icons` option + default = true +} diff --git a/lua/plugins/winbar.lua b/lua/plugins/winbar.lua new file mode 100644 index 0000000..1573828 --- /dev/null +++ b/lua/plugins/winbar.lua @@ -0,0 +1,35 @@ +require("winbar").setup({ + enabled = true, + + show_file_path = true, + show_symbols = true, + + colors = { + path = "", -- You can customize colors like #c946fd + file_name = "", + symbols = "", + }, + + icons = { + file_icon_default = "", + seperator = ">", + editor_state = "●", + lock_icon = "", + }, + + exclude_filetype = { + "help", + "startify", + "dashboard", + "packer", + "neogitstatus", + "NvimTree", + "Trouble", + "alpha", + "lir", + "Outline", + "spectre_panel", + "toggleterm", + "qf", + }, +}) diff --git a/lua/plugins/zen-mode.lua b/lua/plugins/zen-mode.lua new file mode 100644 index 0000000..7e52854 --- /dev/null +++ b/lua/plugins/zen-mode.lua @@ -0,0 +1,7 @@ +local status, zenMode = pcall(require, "zen-mode") +if (not status) then return end + +zenMode.setup { +} + +vim.keymap.set('n', '<C-w>o', '<cmd>ZenMode<cr>', { silent = true }) diff --git a/lua/scripts/setcolors.lua b/lua/scripts/setcolors.lua new file mode 100644 index 0000000..605bc84 --- /dev/null +++ b/lua/scripts/setcolors.lua @@ -0,0 +1,121 @@ +vim.cmd([[ +" Change the color scheme from a list of color scheme names. +" Version 2010-09-12 from http://vim.wikia.com/wiki/VimTip341 +" Press key: +" F8 next scheme +" Shift-F8 previous scheme +" Alt-F8 random scheme +" Set the list of color schemes used by the above (default is 'all'): +" :SetColors all (all $VIMRUNTIME/colors/*.vim) +" :SetColors my (names built into script) +" :SetColors blue ayu ron (these schemes) +" :SetColors (display current scheme names) +" Set the current color scheme based on time of day: +" :SetColors now +if v:version < 700 || exists('loaded_setcolors') || &cp + finish +endif + +let loaded_setcolors = 1 +let s:mycolors = ['everblush', 'ayu', 'gruvbox', 'molokai', 'onedark', 'srcery'] " colorscheme names that we use to set color + +" Set list of color scheme names that we will use, except +" argument 'now' actually changes the current color scheme. +function! s:SetColors(args) + if len(a:args) == 0 + echo 'Current color scheme names:' + let i = 0 + while i < len(s:mycolors) + echo ' '.join(map(s:mycolors[i : i+4], 'printf("%-14s", v:val)')) + let i += 5 + endwhile + elseif a:args == 'all' + let paths = split(globpath(&runtimepath, 'colors/*.vim'), "\n") + let s:mycolors = uniq(sort(map(paths, 'fnamemodify(v:val, ":t:r")'))) + echo 'List of colors set from all installed color schemes' + elseif a:args == 'my' + let c1 = 'default srcery everblush' + let c2 = 'gruvbox onedark' + let c3 = 'ayu molokai' + let s:mycolors = split(c1.' '.c2.' '.c3) + echo 'List of colors set from built-in names' + elseif a:args == 'now' + call s:HourColor() + else + let s:mycolors = split(a:args) + echo 'List of colors set from argument (space-separated names)' + endif +endfunction + +command! -nargs=* SetColors call s:SetColors('<args>') + +" Set next/previous/random (how = 1/-1/0) color from our list of colors. +" The 'random' index is actually set from the current time in seconds. +" Global (no 's:') so can easily call from command line. +function! NextColor(how) + call s:NextColor(a:how, 1) +endfunction + +" Helper function for NextColor(), allows echoing of the color name to be +" disabled. +function! s:NextColor(how, echo_color) + if len(s:mycolors) == 0 + call s:SetColors('all') + endif + if exists('g:colors_name') + let current = index(s:mycolors, g:colors_name) + else + let current = -1 + endif + let missing = [] + let how = a:how + for i in range(len(s:mycolors)) + if how == 0 + let current = localtime() % len(s:mycolors) + let how = 1 " in case random color does not exist + else + let current += how + if !(0 <= current && current < len(s:mycolors)) + let current = (how>0 ? 0 : len(s:mycolors)-1) + endif + endif + try + execute 'colorscheme '.s:mycolors[current] + break + catch /E185:/ + call add(missing, s:mycolors[current]) + endtry + endfor + redraw + if len(missing) > 0 + echo 'Error: colorscheme not found:' join(missing) + endif + if (a:echo_color) + echo g:colors_name + endif +endfunction + +nnoremap <leader>cn :call NextColor(1)<CR> +nnoremap <leader>cp :call NextColor(-1)<CR> +nnoremap <leader>cc :call NextColor(0)<CR> + +" Set color scheme according to current time of day. +function! s:HourColor() + let hr = str2nr(strftime('%H')) + if hr <= 3 + let i = 0 + elseif hr <= 7 + let i = 1 + elseif hr <= 14 + let i = 2 + elseif hr <= 18 + let i = 3 + else + let i = 4 + endif + let nowcolors = 'srcery onedark molokai' + execute 'colorscheme '.split(nowcolors)[i] + redraw + echo g:colors_name +endfunction +]]) diff --git a/lua/startup.log b/lua/startup.log new file mode 100644 index 0000000..cd880b7 --- /dev/null +++ b/lua/startup.log @@ -0,0 +1,6125 @@ + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +000.030 000.030: --- NVIM STARTING --- +000.690 000.660: locale set +001.457 000.767: inits 1 +001.481 000.024: window checked +001.489 000.008: parsing arguments +006.143 004.654: init lua interpreter +006.432 000.289: expanding arguments +006.485 000.054: inits 2 +007.386 000.901: init highlight +007.390 000.004: waiting for UI +009.710 002.320: done waiting for UI +009.741 000.031: init screen for UI +009.777 000.036: init default mappings +009.849 000.072: init default autocommands +014.503 000.337 000.337: sourcing /usr/share/nvim/runtime/ftplugin.vim +015.383 000.089 000.089: sourcing /usr/share/nvim/runtime/indent.vim +015.552 000.030 000.030: sourcing /usr/share/nvim/archlinux.vim +015.561 000.082 000.052: sourcing /etc/xdg/nvim/sysinit.vim +021.171 000.093 000.093: sourcing /usr/share/nvim/runtime/filetype.lua +036.308 000.035 000.035: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/ftdetect/snippets.vim +037.051 000.025 000.025: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-fugitive/ftdetect/fugitive.vim +037.378 000.026 000.026: sourcing /usr/share/vim/vimfiles/ftdetect/PKGBUILD.vim +037.446 000.036 000.036: sourcing /usr/share/vim/vimfiles/ftdetect/conkyrc.vim +037.617 000.131 000.131: sourcing /usr/share/vim/vimfiles/ftdetect/firejail.vim +037.716 000.064 000.064: sourcing /usr/share/vim/vimfiles/ftdetect/meson.vim +038.773 017.553 017.236: sourcing /usr/share/nvim/runtime/filetype.vim +039.391 000.027 000.027: sourcing /usr/share/nvim/runtime/ftplugin.vim +039.936 000.021 000.021: sourcing /usr/share/nvim/runtime/indent.vim +365.797 003.542 003.542: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/ayu-vim/colors/ayu.vim +368.520 000.193 000.193: sourcing /usr/share/nvim/runtime/syntax/synload.vim +368.860 001.099 000.906: sourcing /usr/share/nvim/runtime/syntax/syntax.vim +369.137 353.529 331.193: sourcing /home/sxrdusr/.config/nvim/init.lua +369.157 005.272: sourcing vimrc file(s) +373.085 000.554 000.554: sourcing /usr/share/nvim/runtime/plugin/gzip.vim +373.151 000.025 000.025: sourcing /usr/share/nvim/runtime/plugin/health.vim +373.327 000.144 000.144: sourcing /usr/share/nvim/runtime/plugin/man.vim +374.418 000.444 000.444: sourcing /usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +374.626 001.264 000.820: sourcing /usr/share/nvim/runtime/plugin/matchit.vim +374.959 000.297 000.297: sourcing /usr/share/nvim/runtime/plugin/matchparen.vim +375.038 000.042 000.042: sourcing /usr/share/nvim/runtime/plugin/netrwPlugin.vim +375.374 000.022 000.022: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +375.392 000.321 000.299: sourcing /usr/share/nvim/runtime/plugin/rplugin.vim +375.631 000.209 000.209: sourcing /usr/share/nvim/runtime/plugin/shada.vim +375.731 000.054 000.054: sourcing /usr/share/nvim/runtime/plugin/spellfile.vim +376.093 000.318 000.318: sourcing /usr/share/nvim/runtime/plugin/tarPlugin.vim +376.308 000.167 000.167: sourcing /usr/share/nvim/runtime/plugin/tohtml.vim +376.393 000.041 000.041: sourcing /usr/share/nvim/runtime/plugin/tutor.vim +376.825 000.397 000.397: sourcing /usr/share/nvim/runtime/plugin/zipPlugin.vim +378.105 001.110 001.110: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +387.539 009.175 009.175: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +388.054 004.777: loading rtp plugins +391.529 001.769 001.769: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +392.303 000.615 000.615: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +393.117 000.042 000.042: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +396.623 003.164 003.164: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +397.394 000.420 000.420: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/leap.nvim/plugin/init.lua +398.575 000.976 000.976: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +399.616 000.673 000.673: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +400.317 000.481 000.481: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/markdown-preview.nvim/plugin/mkdp.vim +401.132 000.394 000.394: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +402.646 001.181 001.181: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +402.889 000.071 000.071: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +403.318 000.155 000.155: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +403.887 000.309 000.309: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +410.104 005.911 005.911: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +411.745 001.430 001.430: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +412.774 000.731 000.731: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +413.166 000.113 000.113: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +413.556 000.085 000.085: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +413.859 000.093 000.093: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +414.509 000.341 000.341: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +414.920 000.062 000.062: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +416.289 000.902 000.902: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +417.493 000.175 000.175: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/init.vim +419.578 001.080 001.080: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/parts.vim +420.400 000.034 000.034: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/formatter/short_path.vim +423.478 000.285 000.285: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/util.vim +423.652 007.107 005.534: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/plugin/airline.vim +424.176 000.279 000.279: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-easy-align/plugin/easy_align.vim +425.502 001.103 001.103: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-eunuch/plugin/eunuch.vim +426.259 000.483 000.483: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-floaterm/plugin/floaterm.vim +428.992 002.485 002.485: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-fugitive/plugin/fugitive.vim +429.902 000.528 000.528: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-obsession/plugin/obsession.vim +431.653 001.300 001.300: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-surround/plugin/surround.vim +432.720 000.543 000.543: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +447.697 014.724 014.724: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-unimpaired/plugin/unimpaired.vim +449.392 000.133 000.133: sourcing /usr/share/nvim/runtime/autoload/provider/pythonx.vim +450.395 000.326 000.326: sourcing /usr/share/nvim/runtime/autoload/remote/host.vim +450.586 001.896 001.437: sourcing /usr/share/nvim/runtime/autoload/provider/python3.vim +451.786 003.739 001.843: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimspector/plugin/vimspector.vim +452.701 000.649 000.649: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +454.329 000.593 000.593: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimwiki/autoload/vimwiki/vars.vim +457.139 000.166 000.166: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimwiki/autoload/vimwiki/u.vim +463.032 010.052 009.294: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimwiki/plugin/vimwiki.vim +463.438 000.046 000.046: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +463.709 000.052 000.052: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +464.077 013.014: loading packages +465.745 000.393 000.393: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +469.545 004.983 004.590: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +470.936 001.172 001.172: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +471.544 000.451 000.451: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +472.050 000.344 000.344: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +472.695 000.497 000.497: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +473.371 000.514 000.514: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +473.511 001.472: loading after plugins +473.539 000.029: inits 3 +478.437 004.898: reading ShaDa +482.242 000.511 000.511: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions.vim +482.916 000.109 000.109: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/quickfix.vim +483.659 000.282 000.282: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline.vim +484.393 000.066 000.066: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/fzf.vim +485.973 000.106 000.106: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/section.vim +486.960 000.329 000.329: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/highlighter.vim +487.570 002.286 001.851: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/term.vim +488.773 000.379 000.379: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/branch.vim +489.544 000.105 000.105: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/fugitiveline.vim +490.389 000.116 000.116: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/nvimlsp.vim +491.221 000.199 000.199: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/whitespace.vim +492.050 000.104 000.104: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/po.vim +492.776 000.155 000.155: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/wordcount.vim +493.511 000.057 000.057: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/keymap.vim +494.153 000.071 000.071: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/obsession.vim +495.585 000.096 000.096: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/searchcount.vim +515.108 000.119 000.119: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/themes.vim +516.155 001.981 001.862: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/ayu-vim/autoload/airline/themes/ayu.vim +554.910 000.246 000.246: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/builder.vim +556.123 000.142 000.142: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/default.vim +663.827 178.485: opening buffers +664.368 000.541: BufEnter autocommands +664.379 000.010: editing files in windows +667.364 000.707 000.707: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimspector/autoload/vimspector.vim + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +000.016 000.016: --- NVIM STARTING --- +000.645 000.628: locale set +001.314 000.670: inits 1 +001.351 000.036: window checked +001.360 000.010: parsing arguments +007.583 006.223: init lua interpreter +007.958 000.374: expanding arguments +008.022 000.064: inits 2 +009.122 001.100: init highlight +009.128 000.006: waiting for UI +012.871 003.743: done waiting for UI +012.918 000.047: init screen for UI +012.972 000.054: init default mappings +013.052 000.080: init default autocommands +017.713 000.148 000.148: sourcing /usr/share/nvim/runtime/ftplugin.vim +018.500 000.086 000.086: sourcing /usr/share/nvim/runtime/indent.vim +018.734 000.034 000.034: sourcing /usr/share/nvim/archlinux.vim +018.747 000.102 000.068: sourcing /etc/xdg/nvim/sysinit.vim +026.363 000.143 000.143: sourcing /usr/share/nvim/runtime/filetype.lua +040.626 000.040 000.040: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/ftdetect/snippets.vim +041.433 000.029 000.029: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-fugitive/ftdetect/fugitive.vim +041.845 000.030 000.030: sourcing /usr/share/vim/vimfiles/ftdetect/PKGBUILD.vim +041.980 000.099 000.099: sourcing /usr/share/vim/vimfiles/ftdetect/conkyrc.vim +042.145 000.127 000.127: sourcing /usr/share/vim/vimfiles/ftdetect/firejail.vim +042.247 000.068 000.068: sourcing /usr/share/vim/vimfiles/ftdetect/meson.vim +043.487 017.063 016.671: sourcing /usr/share/nvim/runtime/filetype.vim +044.228 000.039 000.039: sourcing /usr/share/nvim/runtime/ftplugin.vim +044.826 000.023 000.023: sourcing /usr/share/nvim/runtime/indent.vim +354.645 003.386 003.386: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/ayu-vim/colors/ayu.vim +357.306 000.212 000.212: sourcing /usr/share/nvim/runtime/syntax/synload.vim +357.593 001.082 000.870: sourcing /usr/share/nvim/runtime/syntax/syntax.vim +357.862 339.061 317.325: sourcing /home/sxrdusr/.config/nvim/init.lua +357.884 005.435: sourcing vimrc file(s) +361.965 000.572 000.572: sourcing /usr/share/nvim/runtime/plugin/gzip.vim +362.033 000.026 000.026: sourcing /usr/share/nvim/runtime/plugin/health.vim +362.218 000.153 000.153: sourcing /usr/share/nvim/runtime/plugin/man.vim +363.321 000.444 000.444: sourcing /usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +363.527 001.273 000.829: sourcing /usr/share/nvim/runtime/plugin/matchit.vim +363.867 000.305 000.305: sourcing /usr/share/nvim/runtime/plugin/matchparen.vim +363.944 000.041 000.041: sourcing /usr/share/nvim/runtime/plugin/netrwPlugin.vim +364.272 000.037 000.037: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +364.291 000.314 000.277: sourcing /usr/share/nvim/runtime/plugin/rplugin.vim +364.528 000.206 000.206: sourcing /usr/share/nvim/runtime/plugin/shada.vim +364.630 000.054 000.054: sourcing /usr/share/nvim/runtime/plugin/spellfile.vim +364.985 000.311 000.311: sourcing /usr/share/nvim/runtime/plugin/tarPlugin.vim +365.214 000.177 000.177: sourcing /usr/share/nvim/runtime/plugin/tohtml.vim +365.321 000.049 000.049: sourcing /usr/share/nvim/runtime/plugin/tutor.vim +365.765 000.406 000.406: sourcing /usr/share/nvim/runtime/plugin/zipPlugin.vim +367.088 001.150 001.150: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +375.323 008.056 008.056: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +375.841 004.866: loading rtp plugins +379.412 001.854 001.854: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +380.146 000.570 000.570: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +380.990 000.043 000.043: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +383.716 002.369 002.369: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +384.344 000.301 000.301: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/leap.nvim/plugin/init.lua +385.072 000.525 000.525: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +386.341 000.878 000.878: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +386.938 000.366 000.366: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/markdown-preview.nvim/plugin/mkdp.vim +387.768 000.406 000.406: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +389.297 001.189 001.189: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +389.543 000.070 000.070: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +389.981 000.154 000.154: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +390.544 000.298 000.298: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +394.211 003.349 003.349: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +395.750 001.332 001.332: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +396.621 000.626 000.626: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +396.957 000.101 000.101: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +397.349 000.078 000.078: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +397.652 000.089 000.089: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +398.317 000.358 000.358: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +398.678 000.055 000.055: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +399.781 000.665 000.665: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +400.996 000.181 000.181: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/init.vim +403.064 001.038 001.038: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/parts.vim +403.886 000.034 000.034: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/formatter/short_path.vim +406.913 000.299 000.299: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/util.vim +407.082 007.039 005.486: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/plugin/airline.vim +407.616 000.277 000.277: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-easy-align/plugin/easy_align.vim +408.966 001.122 001.122: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-eunuch/plugin/eunuch.vim +409.735 000.483 000.483: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-floaterm/plugin/floaterm.vim +412.162 002.181 002.181: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-fugitive/plugin/fugitive.vim +412.683 000.254 000.254: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-obsession/plugin/obsession.vim +413.367 000.438 000.438: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +414.379 000.760 000.760: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-surround/plugin/surround.vim +415.083 000.417 000.417: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +429.507 014.133 014.133: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-unimpaired/plugin/unimpaired.vim +431.102 000.130 000.130: sourcing /usr/share/nvim/runtime/autoload/provider/pythonx.vim +432.166 000.343 000.343: sourcing /usr/share/nvim/runtime/autoload/remote/host.vim +432.357 001.966 001.493: sourcing /usr/share/nvim/runtime/autoload/provider/python3.vim +433.372 003.592 001.625: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimspector/plugin/vimspector.vim +434.296 000.662 000.662: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +435.993 000.612 000.612: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimwiki/autoload/vimwiki/vars.vim +438.802 000.176 000.176: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimwiki/autoload/vimwiki/u.vim +444.128 009.557 008.768: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimwiki/plugin/vimwiki.vim +444.497 000.035 000.035: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +444.772 000.049 000.049: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +445.139 012.625: loading packages +446.629 000.373 000.373: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +450.348 004.674 004.300: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +451.730 001.165 001.165: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +452.362 000.473 000.473: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +452.781 000.268 000.268: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +453.460 000.534 000.534: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +454.136 000.525 000.525: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +454.275 001.498: loading after plugins +454.303 000.028: inits 3 +459.084 004.781: reading ShaDa +462.255 000.518 000.518: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions.vim +462.914 000.094 000.094: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/quickfix.vim +463.666 000.283 000.283: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline.vim +464.405 000.068 000.068: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/fzf.vim +465.992 000.119 000.119: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/section.vim +466.989 000.346 000.346: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/highlighter.vim +467.604 002.304 001.840: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/term.vim +468.826 000.393 000.393: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/branch.vim +469.599 000.103 000.103: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/fugitiveline.vim +470.437 000.118 000.118: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/nvimlsp.vim +471.295 000.208 000.208: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/whitespace.vim +472.141 000.112 000.112: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/po.vim +472.878 000.162 000.162: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/wordcount.vim +473.615 000.058 000.058: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/keymap.vim +474.255 000.065 000.065: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/obsession.vim +475.552 000.083 000.083: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/searchcount.vim +493.677 000.106 000.106: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/themes.vim +494.652 001.780 001.673: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/ayu-vim/autoload/airline/themes/ayu.vim +531.806 000.251 000.251: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/builder.vim +533.020 000.147 000.147: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-airline/autoload/airline/extensions/default.vim +634.041 168.210: opening buffers +634.303 000.263: BufEnter autocommands +634.310 000.007: editing files in windows +636.729 000.726 000.726: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimspector/autoload/vimspector.vim + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.077 001.077: --- NVIM STARTING --- +028.689 027.612: event init +046.977 018.288: early init +048.697 001.720: locale set +054.356 005.659: init first window +065.332 010.976: inits 1 +065.359 000.027: window checked +065.367 000.008: parsing arguments +077.586 000.123 000.123: require('vim.shared') +077.824 000.107 000.107: require('vim._meta') +077.830 000.231 000.124: require('vim._editor') +077.834 000.414 000.060: require('vim._init_packages') +077.837 012.056: init lua interpreter +077.932 000.095: expanding arguments +079.680 001.748: inits 2 +080.294 000.614: init highlight +080.299 000.004: waiting for UI +082.730 002.431: done waiting for UI +082.778 000.048: init screen for UI +083.210 000.432: init default mappings +083.247 000.037: init default autocommands +094.132 004.012 004.012: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/ftplugin.vim +096.795 000.983 000.983: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/indent.vim +097.228 000.051 000.051: sourcing /usr/share/nvim/archlinux.vim +097.252 000.163 000.112: sourcing /etc/xdg/nvim/sysinit.vim +114.521 016.974 016.974: require('impatient') +114.662 000.125 000.125: require('impatient.profile') +118.350 000.854 000.854: require('keys') +119.312 000.215 000.215: require('packer.util') +119.373 000.674 000.458: require('packer') +120.180 000.435 000.435: require('packer.log') +120.196 000.556 000.122: require('packer.async') +120.438 000.116 000.116: require('packer.result') +120.447 000.245 000.128: require('packer.jobs') +120.463 001.034 000.234: require('packer.plugin_utils') +120.612 000.125 000.125: require('packer.snapshot') +121.714 003.350 001.517: require('pack') +121.772 024.427 003.123: sourcing /home/sxrdusr/.config/nvim/init.lua +121.801 008.970: sourcing vimrc file(s) +122.332 000.103 000.103: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +123.500 000.086 000.086: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/filetype.lua +124.937 001.189 001.189: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/filetype.vim +127.169 000.260 000.260: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/syntax/synload.vim +127.861 002.338 002.078: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/syntax/syntax.vim +133.403 001.041 001.041: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/gzip.vim +133.559 000.065 000.065: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/health.vim +136.590 001.376 001.376: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +137.190 003.546 002.170: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/matchit.vim +137.698 000.421 000.421: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/matchparen.vim +137.887 000.097 000.097: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/netrwPlugin.vim +138.490 000.036 000.036: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +138.512 000.537 000.501: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/rplugin.vim +138.798 000.197 000.197: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/shada.vim +138.955 000.064 000.064: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/spellfile.vim +139.124 000.079 000.079: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/tarPlugin.vim +139.292 000.078 000.078: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/tohtml.vim +139.438 000.058 000.058: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/tutor.vim +140.205 000.679 000.679: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/zipPlugin.vim +140.504 000.038 000.038: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +142.282 000.260 000.260: require('lspsaga') +142.901 000.205 000.205: require('lspsaga.window') +142.926 000.443 000.238: require('lspsaga.libs') +145.564 000.465 000.465: require('vim.lsp.log') +169.723 000.018 000.018: require('vim.F') +169.738 002.191 002.173: require('vim.lsp.protocol') +170.357 000.261 000.261: require('vim.lsp._snippet') +170.593 000.227 000.227: require('vim.highlight') +170.630 000.886 000.398: require('vim.lsp.util') +170.668 026.257 022.716: require('vim.lsp.handlers') +171.061 000.383 000.383: require('vim.lsp.rpc') +171.364 000.291 000.291: require('vim.lsp.sync') +171.679 000.305 000.305: require('vim.lsp.buf') +171.894 000.205 000.205: require('vim.lsp.diagnostic') +172.159 000.256 000.256: require('vim.lsp.codelens') +172.312 028.804 001.107: require('vim.lsp') +172.481 000.122 000.122: require('lspsaga.wrap') +172.495 029.494 000.568: require('lspsaga.codeaction') +172.544 030.250 000.313: require('lspsaga.lightbulb') +172.784 000.198 000.198: require('lspsaga.lspkind') +173.147 000.146 000.146: require('mason-core.path') +173.167 000.276 000.130: require('mason.settings') +173.545 000.105 000.105: require('mason-core.functional.data') +173.558 000.217 000.112: require('mason-core.functional.function') +173.598 000.425 000.208: require('mason-core.platform') +173.603 000.806 000.106: require('mason') +173.894 000.141 000.141: require('mason-core.functional') +174.044 000.126 000.126: require('mason-core.functional.list') +174.089 000.456 000.189: require('mason.api.command') +174.347 000.139 000.139: require('mason-core.log') +174.356 000.261 000.122: require('mason-lspconfig') +174.461 000.097 000.097: require('mason-lspconfig.settings') +174.648 000.119 000.119: require('mason-lspconfig.lspconfig_hook') +174.939 000.283 000.283: require('lspconfig.util') +175.274 000.102 000.102: require('mason-core.functional.table') +175.368 000.408 000.306: require('mason-lspconfig.mappings.server') +175.698 000.113 000.113: require('mason-core.async') +175.804 000.091 000.091: require('mason-core.async.uv') +175.815 000.334 000.131: require('mason-core.fs') +175.919 000.098 000.098: require('mason-core.optional') +176.021 000.095 000.095: require('mason-core.EventEmitter') +176.228 000.201 000.201: require('mason-registry.index') +176.254 000.877 000.150: require('mason-registry') +176.363 000.102 000.102: require('mason-lspconfig.server_config_extensions') +176.490 000.120 000.120: require('lspconfig.configs') +176.635 000.138 000.138: require('lspconfig.server_configurations.omnisharp') +176.840 000.105 000.105: require('mason-lspconfig.ensure_installed') +177.337 000.145 000.145: require('mason-core.result') +178.358 000.752 000.752: require('mason-core.process') +178.492 000.118 000.118: require('mason-core.functional.relation') +178.603 000.097 000.097: require('mason-core.functional.logic') +178.620 001.137 000.169: require('mason-core.spawn') +178.751 000.119 000.119: require('mason-core.receipt') +178.880 000.108 000.108: require('mason-core.functional.string') +178.910 001.564 000.201: require('mason-core.installer.context') +179.062 000.145 000.145: require('mason-core.installer.linker') +179.227 000.153 000.153: require('mason-core.async.control') +179.237 002.268 000.260: require('mason-core.installer') +179.374 000.128 000.128: require('mason-core.installer.handle') +179.949 000.105 000.105: require('mason-core.managers.powershell') +179.957 000.222 000.117: require('mason-core.fetch') +179.961 000.376 000.154: require('mason-core.managers.cargo.client') +179.995 000.514 000.138: require('mason-core.managers.cargo') +180.147 000.146 000.146: require('mason-core.managers.composer') +180.301 000.147 000.147: require('mason-core.managers.gem') +180.417 000.109 000.109: require('mason-core.managers.git') +180.670 000.129 000.129: require('mason-core.managers.std') +180.789 000.112 000.112: require('mason-core.managers.github.client') +180.806 000.382 000.142: require('mason-core.managers.github') +180.957 000.146 000.146: require('mason-core.managers.go') +181.140 000.176 000.176: require('mason-core.managers.luarocks') +181.503 000.356 000.356: require('mason-core.managers.npm') +181.709 000.181 000.181: require('mason-core.managers.pip3') +181.763 002.376 000.219: require('mason-core.package.version-check') +181.774 004.926 000.154: require('mason-core.package') +182.043 000.228 000.228: require('mason-registry.lua-language-server') +182.376 000.155 000.155: require('mason-registry.clangd') +182.814 000.414 000.414: require('mason-registry.rust-analyzer') +183.076 000.094 000.094: require('mason-core.notify') +183.229 000.143 000.143: require('mason-core.functional.number') +183.286 000.458 000.221: require('mason-lspconfig.api.command') +183.293 042.652 001.993: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +184.424 000.122 000.122: sourcing /tmp/.mount_nvimgsxj67/usr/share/nvim/runtime/plugin/man.lua +184.966 009.773: loading rtp plugins +186.975 000.018 000.018: require('vim.keymap') +187.357 000.155 000.155: require('Comment.config') +187.549 000.182 000.182: require('Comment.utils') +187.822 000.264 000.264: require('Comment.opfunc') +187.947 000.116 000.116: require('Comment.extra') +187.974 000.986 000.269: require('Comment.api') +188.811 001.972 000.968: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +189.751 000.207 000.207: require('luasnip.util.types') +189.955 000.191 000.191: require('luasnip.util.ext_opts') +191.461 000.264 000.264: require('vim.treesitter.language') +191.494 000.686 000.422: require('vim.treesitter.query') +191.893 000.391 000.391: require('vim.treesitter.languagetree') +191.972 001.516 000.439: require('vim.treesitter') +192.479 002.387 000.871: require('nvim-treesitter.parsers') +192.816 000.163 000.163: require('nvim-treesitter.utils') +192.831 000.341 000.179: require('nvim-treesitter.ts_utils') +192.840 002.877 000.148: require('luasnip.extras.filetype_functions') +192.983 000.138 000.138: require('luasnip.session') +193.462 000.187 000.187: require('luasnip.util.util') +193.599 000.125 000.125: require('luasnip.nodes.util') +193.707 000.099 000.099: require('luasnip.util.events') +193.739 000.614 000.203: require('luasnip.nodes.node') +194.029 000.113 000.113: require('luasnip.util.extend_decorator') +194.044 001.053 000.326: require('luasnip.nodes.insertNode') +194.823 000.255 000.255: require('luasnip.util.mark') +196.003 000.498 000.498: require('luasnip.nodes.textNode') +197.798 001.448 001.448: require('luasnip.util._builtin_vars') +198.128 000.299 000.299: require('vim.inspect') +198.478 002.453 000.707: require('luasnip.util.environ') +198.613 000.122 000.122: require('luasnip.util.pattern_tokenizer') +198.708 000.087 000.087: require('luasnip.util.dict') +198.828 000.112 000.112: require('luasnip.session.snippet_collection') +198.893 004.060 000.790: require('luasnip.nodes.snippet') +198.913 004.863 000.548: require('luasnip.nodes.choiceNode') +199.131 000.188 000.188: require('luasnip.nodes.functionNode') +199.295 000.151 000.151: require('luasnip.nodes.dynamicNode') +199.572 000.268 000.268: require('luasnip.nodes.restoreNode') +199.761 000.158 000.158: require('luasnip.extras') +200.016 000.106 000.106: require('luasnip.util.str') +200.029 000.252 000.146: require('luasnip.extras.fmt') +200.132 000.096 000.096: require('luasnip.extras.expand_conditions') +200.444 000.095 000.095: require('luasnip.util.parser.neovim_ast') +211.625 000.154 000.154: require('luasnip.util.directed_graph') +211.650 011.406 011.157: require('luasnip.util.parser.ast_utils') +211.868 000.087 000.087: require('luasnip.util.functions') +211.882 000.224 000.137: require('luasnip.util.parser.ast_parser') +212.035 000.148 000.148: require('luasnip.util.parser.neovim_parser') +212.051 011.907 000.129: require('luasnip.util.parser') +212.142 000.084 000.084: require('luasnip.nodes.absolute_indexer') +212.684 023.347 000.915: require('luasnip.config') +212.841 023.839 000.491: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +213.735 000.052 000.052: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +214.713 000.113 000.113: require('indent_blankline/utils') +214.723 000.309 000.196: require('indent_blankline') +215.272 000.101 000.101: require('indent_blankline.commands') +215.432 001.197 000.787: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +215.854 000.112 000.112: require('lsp-colors') +216.374 000.683 000.572: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +217.476 000.712 000.712: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +218.519 000.405 000.405: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +219.096 000.111 000.111: require('cmp.utils.api') +219.265 000.080 000.080: require('cmp.types.cmp') +219.455 000.092 000.092: require('cmp.utils.misc') +219.550 000.277 000.186: require('cmp.types.lsp') +219.639 000.080 000.080: require('cmp.types.vim') +219.644 000.539 000.102: require('cmp.types') +219.729 000.079 000.079: require('cmp.utils.highlight') +219.888 000.073 000.073: require('cmp.utils.debug') +219.903 000.167 000.094: require('cmp.utils.autocmd') +220.440 001.544 000.647: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +220.714 000.080 000.080: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +221.137 000.108 000.108: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +221.612 000.177 000.177: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +222.733 000.097 000.097: require('nvim-treesitter.tsrange') +222.825 000.082 000.082: require('nvim-treesitter.caching') +222.842 000.306 000.128: require('nvim-treesitter.query') +222.868 000.449 000.143: require('nvim-treesitter.configs') +222.875 000.549 000.100: require('nvim-treesitter.info') +222.999 000.117 000.117: require('nvim-treesitter.shell_command_selectors') +223.061 000.878 000.211: require('nvim-treesitter.install') +223.160 000.089 000.089: require('nvim-treesitter.statusline') +223.261 000.094 000.094: require('nvim-treesitter.query_predicates') +223.267 001.169 000.108: require('nvim-treesitter') +224.518 000.332 000.332: require('vim.treesitter.highlighter') +224.815 000.781 000.449: require('nvim-treesitter.highlight') +225.463 003.438 001.488: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +225.909 000.214 000.214: require('treesitter-context') +225.919 000.259 000.045: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +226.301 000.100 000.100: require('nvim-treesitter-refactor') +226.635 000.463 000.363: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +227.006 000.112 000.112: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +227.383 000.078 000.078: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +227.709 000.092 000.092: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +228.502 000.446 000.446: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +228.871 000.060 000.060: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +229.853 000.494 000.494: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +230.676 000.537 000.537: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +231.318 000.391 000.391: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +232.188 000.595 000.595: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +232.511 000.030 000.030: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +232.791 000.047 000.047: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +233.904 011.128: loading packages +235.602 000.461 000.461: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +240.266 005.819 005.358: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +241.144 000.147 000.147: require('cmp.utils.char') +241.159 000.257 000.110: require('cmp.utils.str') +241.254 000.088 000.088: require('cmp.utils.pattern') +241.600 000.126 000.126: require('cmp.utils.buffer') +241.614 000.252 000.126: require('cmp.utils.keymap') +241.626 000.364 000.112: require('cmp.utils.feedkeys') +241.741 000.109 000.109: require('cmp.utils.async') +241.924 000.083 000.083: require('cmp.utils.cache') +241.933 000.184 000.101: require('cmp.context') +242.260 000.117 000.117: require('cmp.config.mapping') +242.477 000.106 000.106: require('cmp.config.compare') +242.483 000.212 000.106: require('cmp.config.default') +242.509 000.462 000.134: require('cmp.config') +242.732 000.085 000.085: require('cmp.matcher') +242.746 000.230 000.145: require('cmp.entry') +242.761 000.824 000.131: require('cmp.source') +242.948 000.084 000.084: require('cmp.utils.event') +243.168 000.111 000.111: require('cmp.utils.window') +243.176 000.220 000.109: require('cmp.view.docs_view') +243.327 000.146 000.146: require('cmp.view.custom_entries_view') +243.466 000.132 000.132: require('cmp.view.wildmenu_entries_view') +243.584 000.112 000.112: require('cmp.view.native_entries_view') +243.688 000.098 000.098: require('cmp.view.ghost_text_view') +243.706 000.940 000.150: require('cmp.view') +243.817 003.068 000.302: require('cmp.core') +244.161 000.093 000.093: require('cmp.config.sources') +244.259 000.087 000.087: require('cmp.config.window') +244.362 003.763 000.515: require('cmp') +244.731 000.083 000.083: require('cmp_buffer.timer') +244.743 000.196 000.113: require('cmp_buffer.buffer') +244.748 000.295 000.099: require('cmp_buffer.source') +244.752 000.384 000.089: require('cmp_buffer') +244.783 004.279 000.132: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +245.357 000.256 000.256: require('cmp_cmdline') +245.393 000.408 000.152: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +245.812 000.099 000.099: require('cmp_nvim_lsp.source') +245.820 000.204 000.105: require('cmp_nvim_lsp') +245.917 000.363 000.159: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +246.284 000.146 000.146: require('cmp_path') +246.318 000.246 000.100: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +246.649 000.105 000.105: require('cmp_luasnip') +246.719 000.244 000.139: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +246.874 001.611: loading after plugins +246.910 000.036: inits 3 +246.920 000.011: reading ShaDa +247.351 000.091 000.091: require('luasnip.loaders._caches') +247.486 000.126 000.126: require('luasnip.util.path') +247.606 000.112 000.112: require('luasnip.loaders.util') +247.897 000.141 000.141: require('luasnip.loaders') +247.951 000.337 000.196: require('luasnip') +247.957 000.805 000.139: require('luasnip.loaders.from_lua') +248.252 000.121 000.121: require('luasnip.nodes.snippetProxy') +248.266 000.255 000.134: require('luasnip.loaders.from_snipmate') +248.494 000.122 000.122: require('luasnip.loaders.from_vscode') +249.362 001.259: opening buffers +249.368 000.006: BufEnter autocommands +249.371 000.004: editing files in windows + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.215 001.215: --- NVIM STARTING --- +028.665 027.450: event init +045.736 017.071: early init +047.546 001.811: locale set +053.272 005.725: init first window +063.706 010.434: inits 1 +063.737 000.031: window checked +063.745 000.009: parsing arguments +075.797 000.281 000.281: require('vim.shared') +076.316 000.237 000.237: require('vim._meta') +076.329 000.509 000.272: require('vim._editor') +076.337 000.917 000.127: require('vim._init_packages') +076.345 011.682: init lua interpreter +076.535 000.191: expanding arguments +078.389 001.854: inits 2 +079.780 001.390: init highlight +079.790 000.010: waiting for UI +082.769 002.979: done waiting for UI +082.820 000.051: init screen for UI +083.178 000.358: init default mappings +083.214 000.036: init default autocommands +091.921 004.068 004.068: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/ftplugin.vim +095.030 001.354 001.354: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/indent.vim +095.750 000.072 000.072: sourcing /usr/share/nvim/archlinux.vim +095.777 000.241 000.169: sourcing /etc/xdg/nvim/sysinit.vim +121.943 025.794 025.794: require('impatient') +122.199 000.229 000.229: require('impatient.profile') +131.279 002.028 002.028: require('keys') +136.986 005.676 005.676: require('opts') +138.889 000.369 000.369: require('packer.util') +139.047 001.067 000.698: require('packer') +140.531 000.662 000.662: require('packer.log') +140.554 000.943 000.281: require('packer.async') +141.218 000.285 000.285: require('packer.result') +141.238 000.669 000.384: require('packer.jobs') +141.379 002.217 000.605: require('packer.plugin_utils') +142.546 001.109 001.109: require('packer.snapshot') +145.067 008.052 003.658: require('pack') +147.725 000.587 000.587: require('vim.treesitter.language') +147.771 001.260 000.673: require('vim.treesitter.query') +150.344 000.518 000.518: require('vim.treesitter.languagetree') +150.457 001.130 000.611: require('vim.treesitter') +151.134 002.622 001.492: require('nvim-treesitter.parsers') +152.015 000.862 000.862: require('nvim-treesitter.utils') +152.043 003.863 000.379: require('nvim-treesitter.ts_utils') +152.074 004.281 000.417: require('nvim-treesitter.tsrange') +152.465 000.373 000.373: require('nvim-treesitter.caching') +152.508 006.281 000.367: require('nvim-treesitter.query') +152.584 006.707 000.426: require('nvim-treesitter.configs') +153.878 000.354 000.354: require('nvim-treesitter.info') +154.194 000.294 000.294: require('nvim-treesitter.shell_command_selectors') +154.311 001.429 000.781: require('nvim-treesitter.install') +222.484 077.393 069.257: require('plugins.treesitter') +223.003 000.151 000.151: require('telescope._extensions') +223.015 000.272 000.121: require('telescope') +223.849 000.143 000.143: require('plenary.bit') +223.949 000.091 000.091: require('plenary.functional') +224.011 000.035 000.035: require('ffi') +224.034 000.483 000.214: require('plenary.path') +224.051 000.602 000.119: require('plenary.strings') +224.140 000.083 000.083: require('telescope.deprecated') +224.650 000.303 000.303: require('plenary.log') +224.723 000.456 000.153: require('telescope.log') +225.018 000.150 000.150: require('plenary.job') +225.112 000.085 000.085: require('telescope.state') +225.127 000.396 000.160: require('telescope.utils') +225.141 000.994 000.142: require('telescope.sorters') +225.248 000.080 000.080: require('vim.inspect') +225.765 000.019 000.019: require('vim.F') +229.308 006.007 004.228: require('telescope.config') +229.577 000.120 000.120: require('plenary.window.border') +229.683 000.098 000.098: require('plenary.window') +229.770 000.080 000.080: require('plenary.popup.utils') +229.781 000.456 000.158: require('plenary.popup') +229.882 000.095 000.095: require('telescope.pickers.scroller') +229.979 000.091 000.091: require('telescope.actions.state') +230.081 000.095 000.095: require('telescope.actions.utils') +230.286 000.096 000.096: require('telescope.actions.mt') +230.366 000.280 000.184: require('telescope.actions.set') +230.575 000.101 000.101: require('telescope.config.resolve') +230.582 000.209 000.107: require('telescope.pickers.entry_display') +230.672 000.086 000.086: require('telescope.from_entry') +231.015 007.994 000.677: require('telescope.actions') +231.930 000.115 000.115: require('plenary.tbl') +231.939 000.219 000.104: require('plenary.vararg.rotate') +231.943 000.319 000.100: require('plenary.vararg') +232.042 000.086 000.086: require('plenary.errors') +232.062 000.539 000.134: require('plenary.async.async') +232.167 000.100 000.100: require('plenary.async.structs') +232.186 000.783 000.144: require('plenary.async.control') +232.710 000.361 000.361: require('telescope.make_entry') +233.194 000.129 000.129: require('plenary.async.util') +233.201 000.233 000.104: require('plenary.async.tests') +233.207 000.357 000.124: require('plenary.async') +233.213 000.488 000.131: require('telescope.finders.async_static_finder') +233.549 000.093 000.093: require('plenary.class') +233.580 000.246 000.153: require('telescope._') +233.587 000.369 000.123: require('telescope.finders.async_oneshot_finder') +233.698 000.105 000.105: require('telescope.finders.async_job_finder') +233.710 001.515 000.192: require('telescope.finders') +234.124 000.171 000.171: require('telescope.debounce') +234.362 000.229 000.229: require('telescope.mappings') +234.498 000.126 000.126: require('telescope.pickers.highlights') +234.610 000.104 000.104: require('telescope.pickers.window') +234.844 000.108 000.108: require('telescope.algos.linked_list') +234.853 000.236 000.128: require('telescope.entry_manager') +234.963 000.106 000.106: require('telescope.pickers.multi') +235.003 001.288 000.316: require('telescope.pickers') +235.020 003.806 000.220: require('telescope.builtin.__lsp') +235.078 004.055 000.249: require('telescope.builtin') +235.503 000.287 000.287: require('fzf_lib') +235.517 000.432 000.145: require('telescope._extensions.fzf') +236.042 000.183 000.183: require('telescope._extensions.file_browser.utils') +236.187 000.522 000.339: require('telescope._extensions.file_browser.actions') +236.536 000.198 000.198: require('telescope._extensions.file_browser.make_entry') +236.753 000.204 000.204: require('plenary.scandir') +236.804 000.609 000.208: require('telescope._extensions.file_browser.finders') +236.937 000.124 000.124: require('telescope._extensions.file_browser.picker') +237.091 000.147 000.147: require('telescope._extensions.file_browser.config') +237.098 001.565 000.163: require('telescope._extensions.file_browser') +243.325 000.017 000.017: require('vim.keymap') +243.488 020.979 006.644: require('plugins.telescope') +245.555 000.085 000.085: require('notify.util.queue') +245.565 000.495 000.410: require('notify.util') +245.823 000.253 000.253: require('notify.config.highlights') +245.834 001.119 000.371: require('notify.config') +246.182 000.341 000.341: require('notify.stages') +246.287 000.097 000.097: require('notify.service.notification') +246.645 000.079 000.079: require('notify.animate.spring') +246.652 000.175 000.096: require('notify.animate') +246.661 000.367 000.192: require('notify.windows') +247.013 000.098 000.098: require('notify.service.buffer.highlights') +247.023 000.262 000.164: require('notify.service.buffer') +247.028 000.362 000.100: require('notify.service') +247.128 000.095 000.095: require('notify.stages.util') +247.137 002.804 000.422: require('notify') +247.232 000.089 000.089: require('nvim-tree.iterators.node-iterator') +247.295 003.077 000.183: require('nvim-tree.utils') +247.307 003.176 000.100: require('nvim-tree.events') +247.638 000.084 000.084: require('nvim-tree.log') +247.810 000.164 000.164: require('nvim-tree.git.utils') +247.913 000.095 000.095: require('nvim-tree.git.runner') +248.009 000.090 000.090: require('nvim-tree.watcher') +248.019 000.608 000.174: require('nvim-tree.git') +248.113 000.089 000.089: require('nvim-tree.explorer.watch') +248.246 000.086 000.086: require('nvim-tree.explorer.common') +248.436 000.098 000.098: require('nvim-tree.explorer.node-builders') +248.530 000.086 000.086: require('nvim-tree.explorer.sorters') +248.634 000.089 000.089: require('nvim-tree.explorer.filters') +248.908 000.177 000.177: require('nvim-tree.view') +248.920 000.279 000.102: require('nvim-tree.live-filter') +248.925 000.671 000.119: require('nvim-tree.explorer.explore') +249.050 000.104 000.104: require('nvim-tree.explorer.reload') +249.058 001.745 000.187: require('nvim-tree.explorer') +249.065 005.013 000.091: require('nvim-tree.core') +249.181 000.110 000.110: require('nvim-tree.diagnostics') +249.279 000.090 000.090: require('nvim-tree.renderer.components.padding') +249.374 000.088 000.088: require('nvim-tree.renderer.components.icons') +249.474 000.094 000.094: require('nvim-tree.renderer.components.full-name') +249.562 000.082 000.082: require('nvim-tree.renderer.help') +249.675 000.107 000.107: require('nvim-tree.renderer.components.git') +249.794 000.112 000.112: require('nvim-tree.renderer.builder') +249.901 000.100 000.100: require('nvim-tree.marks') +249.916 005.971 000.175: require('nvim-tree.renderer') +250.022 000.095 000.095: require('nvim-tree.actions.tree-modifiers.collapse-all') +250.110 000.081 000.081: require('nvim-tree.actions.root.dir-up') +250.210 000.094 000.094: require('nvim-tree.actions.root.change-dir') +250.308 000.091 000.091: require('nvim-tree.actions.reloaders.reloaders') +250.406 000.089 000.089: require('nvim-tree.actions.finders.find-file') +250.411 006.559 000.137: require('nvim-tree.lib') +250.512 000.096 000.096: require('nvim-tree.colors') +250.633 000.111 000.111: require('nvim-tree.legacy') +250.749 000.108 000.108: require('nvim-tree.actions.fs.copy-paste') +250.948 000.093 000.093: require('nvim-tree.actions.tree-modifiers.expand-all') +251.044 000.089 000.089: require('nvim-tree.actions.tree-modifiers.toggles') +251.152 000.093 000.093: require('nvim-tree.actions.fs.create-file') +251.249 000.089 000.089: require('nvim-tree.actions.fs.rename-file') +251.369 000.113 000.113: require('nvim-tree.actions.fs.trash') +251.472 000.095 000.095: require('nvim-tree.actions.fs.remove-file') +251.566 000.085 000.085: require('nvim-tree.actions.moves.parent') +251.657 000.084 000.084: require('nvim-tree.actions.moves.sibling') +251.747 000.083 000.083: require('nvim-tree.actions.moves.item') +251.856 000.090 000.090: require('nvim-tree.actions.finders.search-node') +251.945 000.083 000.083: require('nvim-tree.actions.node.run-command') +252.039 000.088 000.088: require('nvim-tree.actions.node.file-popup') +252.148 000.103 000.103: require('nvim-tree.actions.node.system-open') +252.247 000.088 000.088: require('nvim-tree.marks.bulk-move') +252.253 001.494 000.219: require('nvim-tree.actions.dispatch') +252.298 008.630 000.262: require('nvim-tree') +252.386 000.080 000.080: require('nvim-tree.config') +257.095 000.193 000.193: require('nvim-tree.actions') +257.240 000.128 000.128: require('nvim-tree.actions.node.open-file') +260.691 000.107 000.107: require('nvim-tree.marks.navigation') +260.703 000.318 000.211: require('nvim-tree.api') +260.730 000.478 000.160: require('nvim-tree.keymap') +261.644 000.460 000.460: require('nvim-web-devicons') +265.847 022.349 012.380: require('plugins.nvim-tree') +266.218 000.107 000.107: require('lualine_require') +266.776 000.811 000.704: require('lualine') +266.861 000.076 000.076: require('plugins.linecolor') +271.822 000.113 000.113: require('lualine.utils.mode') +278.657 012.797 011.798: require('plugins.lualine') +278.733 182.854 007.556: sourcing /home/sxrdusr/.config/nvim/init.lua +278.753 007.023: sourcing vimrc file(s) +279.069 000.055 000.055: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +280.561 000.083 000.083: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/filetype.lua +282.097 001.197 001.197: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/filetype.vim +284.560 000.271 000.271: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/syntax/synload.vim +284.797 002.162 001.892: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/syntax/syntax.vim +290.655 001.081 001.081: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/gzip.vim +290.838 000.074 000.074: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/health.vim +293.462 001.365 001.365: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +293.908 003.000 001.635: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/matchit.vim +294.379 000.409 000.409: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/matchparen.vim +294.523 000.076 000.076: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/netrwPlugin.vim +294.930 000.024 000.024: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +294.951 000.364 000.340: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/rplugin.vim +295.198 000.188 000.188: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/shada.vim +295.317 000.052 000.052: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/spellfile.vim +295.444 000.062 000.062: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/tarPlugin.vim +295.569 000.061 000.061: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/tohtml.vim +295.694 000.049 000.049: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/tutor.vim +296.445 000.685 000.685: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/zipPlugin.vim +296.743 000.039 000.039: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +298.142 000.181 000.181: require('lspsaga') +298.522 000.126 000.126: require('lspsaga.window') +298.545 000.267 000.141: require('lspsaga.libs') +299.708 000.362 000.362: require('vim.lsp.log') +300.673 000.954 000.954: require('vim.lsp.protocol') +301.346 000.346 000.346: require('vim.lsp._snippet') +301.641 000.285 000.285: require('vim.highlight') +301.680 000.996 000.365: require('vim.lsp.util') +301.701 002.616 000.304: require('vim.lsp.handlers') +301.930 000.222 000.222: require('vim.lsp.rpc') +302.074 000.133 000.133: require('vim.lsp.sync') +302.593 000.511 000.511: require('vim.lsp.buf') +303.020 000.417 000.417: require('vim.lsp.diagnostic') +303.435 000.406 000.406: require('vim.lsp.codelens') +303.596 004.920 000.615: require('vim.lsp') +303.708 000.100 000.100: require('lspsaga.wrap') +303.723 005.172 000.152: require('lspsaga.codeaction') +303.769 005.615 000.176: require('lspsaga.lightbulb') +303.937 000.131 000.131: require('lspsaga.lspkind') +304.222 000.093 000.093: require('mason-core.path') +304.240 000.198 000.105: require('mason.settings') +304.542 000.086 000.086: require('mason-core.functional.data') +304.553 000.189 000.104: require('mason-core.functional.function') +304.594 000.347 000.158: require('mason-core.platform') +304.599 000.650 000.105: require('mason') +304.884 000.145 000.145: require('mason-core.functional') +305.020 000.116 000.116: require('mason-core.functional.list') +305.058 000.434 000.173: require('mason.api.command') +305.320 000.142 000.142: require('mason-core.log') +305.331 000.268 000.126: require('mason-lspconfig') +305.425 000.088 000.088: require('mason-lspconfig.settings') +305.553 000.105 000.105: require('mason-lspconfig.lspconfig_hook') +305.792 000.233 000.233: require('lspconfig.util') +306.061 000.092 000.092: require('mason-core.functional.table') +306.169 000.352 000.260: require('mason-lspconfig.mappings.server') +306.537 000.120 000.120: require('mason-core.async') +306.641 000.094 000.094: require('mason-core.async.uv') +306.661 000.347 000.133: require('mason-core.fs') +306.767 000.099 000.099: require('mason-core.optional') +306.864 000.089 000.089: require('mason-core.EventEmitter') +307.048 000.178 000.178: require('mason-registry.index') +307.071 000.893 000.181: require('mason-registry') +307.172 000.094 000.094: require('mason-lspconfig.server_config_extensions') +307.343 000.126 000.126: require('lspconfig.configs') +307.463 000.113 000.113: require('lspconfig.server_configurations.omnisharp') +307.665 000.101 000.101: require('mason-lspconfig.ensure_installed') +308.014 000.094 000.094: require('mason-core.result') +308.491 000.256 000.256: require('mason-core.process') +308.603 000.100 000.100: require('mason-core.functional.relation') +308.703 000.089 000.089: require('mason-core.functional.logic') +308.723 000.583 000.138: require('mason-core.spawn') +308.851 000.120 000.120: require('mason-core.receipt') +308.984 000.113 000.113: require('mason-core.functional.string') +309.020 000.998 000.182: require('mason-core.installer.context') +309.126 000.099 000.099: require('mason-core.installer.linker') +309.229 000.096 000.096: require('mason-core.async.control') +309.237 001.439 000.151: require('mason-core.installer') +309.364 000.122 000.122: require('mason-core.installer.handle') +311.696 000.112 000.112: require('mason-core.managers.powershell') +311.706 002.028 001.916: require('mason-core.fetch') +311.711 002.119 000.092: require('mason-core.managers.cargo.client') +311.749 002.278 000.158: require('mason-core.managers.cargo') +312.009 000.255 000.255: require('mason-core.managers.composer') +312.211 000.193 000.193: require('mason-core.managers.gem') +312.357 000.134 000.134: require('mason-core.managers.git') +312.604 000.124 000.124: require('mason-core.managers.std') +312.724 000.112 000.112: require('mason-core.managers.github.client') +312.738 000.373 000.137: require('mason-core.managers.github') +312.893 000.150 000.150: require('mason-core.managers.go') +313.074 000.174 000.174: require('mason-core.managers.luarocks') +313.273 000.193 000.193: require('mason-core.managers.npm') +313.429 000.148 000.148: require('mason-core.managers.pip3') +313.440 004.063 000.166: require('mason-core.package.version-check') +313.453 005.780 000.156: require('mason-core.package') +313.596 000.120 000.120: require('mason-registry.lua-language-server') +314.016 000.148 000.148: require('mason-registry.clangd') +314.251 000.202 000.202: require('mason-registry.rust-analyzer') +314.478 000.079 000.079: require('mason-core.notify') +314.587 000.100 000.100: require('mason-core.functional.number') +314.647 000.385 000.206: require('mason-lspconfig.api.command') +314.654 017.774 001.756: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +315.963 000.101 000.101: sourcing /tmp/.mount_nvimqgAC59/usr/share/nvim/runtime/plugin/man.lua +316.291 010.027: loading rtp plugins +318.118 000.121 000.121: require('Comment.config') +318.235 000.108 000.108: require('Comment.utils') +318.334 000.092 000.092: require('Comment.opfunc') +318.429 000.089 000.089: require('Comment.extra') +318.444 000.586 000.176: require('Comment.api') +318.874 001.089 000.503: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +319.655 000.090 000.090: require('luasnip.util.types') +319.758 000.094 000.094: require('luasnip.util.ext_opts') +319.863 000.098 000.098: require('luasnip.extras.filetype_functions') +319.970 000.100 000.100: require('luasnip.session') +320.338 000.137 000.137: require('luasnip.util.util') +320.444 000.098 000.098: require('luasnip.nodes.util') +320.531 000.080 000.080: require('luasnip.util.events') +320.549 000.467 000.152: require('luasnip.nodes.node') +320.704 000.092 000.092: require('luasnip.util.extend_decorator') +320.715 000.738 000.179: require('luasnip.nodes.insertNode') +321.030 000.111 000.111: require('luasnip.util.mark') +321.311 000.122 000.122: require('luasnip.nodes.textNode') +323.154 001.735 001.735: require('luasnip.util._builtin_vars') +323.344 002.021 000.286: require('luasnip.util.environ') +323.470 000.114 000.114: require('luasnip.util.pattern_tokenizer') +323.562 000.085 000.085: require('luasnip.util.dict') +323.680 000.110 000.110: require('luasnip.session.snippet_collection') +323.746 002.707 000.255: require('luasnip.nodes.snippet') +323.805 003.084 000.266: require('luasnip.nodes.choiceNode') +323.972 000.139 000.139: require('luasnip.nodes.functionNode') +324.195 000.214 000.214: require('luasnip.nodes.dynamicNode') +324.383 000.179 000.179: require('luasnip.nodes.restoreNode') +324.509 000.119 000.119: require('luasnip.extras') +324.709 000.086 000.086: require('luasnip.util.str') +324.718 000.193 000.107: require('luasnip.extras.fmt') +324.812 000.088 000.088: require('luasnip.extras.expand_conditions') +325.142 000.106 000.106: require('luasnip.util.parser.neovim_ast') +337.540 000.132 000.132: require('luasnip.util.directed_graph') +337.562 012.634 012.397: require('luasnip.util.parser.ast_utils') +337.788 000.094 000.094: require('luasnip.util.functions') +337.804 000.235 000.140: require('luasnip.util.parser.ast_parser') +337.986 000.177 000.177: require('luasnip.util.parser.neovim_parser') +338.002 013.180 000.134: require('luasnip.util.parser') +338.102 000.093 000.093: require('luasnip.nodes.absolute_indexer') +338.653 019.224 000.817: require('luasnip.config') +338.816 019.693 000.469: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +339.740 000.051 000.051: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +340.704 000.121 000.121: require('indent_blankline/utils') +340.714 000.328 000.207: require('indent_blankline') +341.171 000.107 000.107: require('indent_blankline.commands') +341.331 001.120 000.686: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +341.766 000.120 000.120: require('lsp-colors') +342.120 000.527 000.407: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +343.544 001.016 001.016: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +344.414 000.400 000.400: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +345.007 000.111 000.111: require('cmp.utils.api') +345.199 000.086 000.086: require('cmp.types.cmp') +345.402 000.100 000.100: require('cmp.utils.misc') +345.503 000.297 000.197: require('cmp.types.lsp') +345.626 000.113 000.113: require('cmp.types.vim') +345.632 000.615 000.119: require('cmp.types') +345.728 000.090 000.090: require('cmp.utils.highlight') +345.899 000.080 000.080: require('cmp.utils.debug') +345.915 000.180 000.101: require('cmp.utils.autocmd') +346.453 001.651 000.655: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +346.722 000.082 000.082: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +347.167 000.120 000.120: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +347.647 000.177 000.177: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +348.348 000.094 000.094: require('nvim-treesitter.statusline') +348.460 000.104 000.104: require('nvim-treesitter.query_predicates') +348.467 000.315 000.116: require('nvim-treesitter') +349.846 000.554 000.554: require('vim.treesitter.highlighter') +350.210 001.095 000.541: require('nvim-treesitter.highlight') +350.824 002.752 001.342: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +351.290 000.239 000.239: require('treesitter-context') +351.300 000.282 000.042: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +351.700 000.111 000.111: require('nvim-treesitter-refactor') +351.993 000.433 000.322: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +352.381 000.124 000.124: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +352.769 000.082 000.082: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +353.140 000.093 000.093: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +353.923 000.425 000.425: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +354.290 000.060 000.060: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +355.450 000.659 000.659: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +356.275 000.502 000.502: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +356.887 000.359 000.359: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +357.732 000.594 000.594: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +358.028 000.029 000.029: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +358.315 000.044 000.044: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +359.679 011.023: loading packages +361.384 000.464 000.464: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +365.756 005.510 005.046: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +366.647 000.195 000.195: require('cmp.utils.char') +366.667 000.306 000.111: require('cmp.utils.str') +366.765 000.090 000.090: require('cmp.utils.pattern') +367.066 000.082 000.082: require('cmp.utils.buffer') +367.081 000.207 000.126: require('cmp.utils.keymap') +367.091 000.315 000.108: require('cmp.utils.feedkeys') +367.201 000.105 000.105: require('cmp.utils.async') +367.380 000.082 000.082: require('cmp.utils.cache') +367.389 000.180 000.098: require('cmp.context') +367.705 000.104 000.104: require('cmp.config.mapping') +367.927 000.112 000.112: require('cmp.config.compare') +367.934 000.218 000.106: require('cmp.config.default') +367.962 000.455 000.133: require('cmp.config') +368.178 000.083 000.083: require('cmp.matcher') +368.191 000.223 000.140: require('cmp.entry') +368.209 000.816 000.138: require('cmp.source') +368.392 000.080 000.080: require('cmp.utils.event') +368.603 000.111 000.111: require('cmp.utils.window') +368.611 000.211 000.101: require('cmp.view.docs_view') +368.766 000.150 000.150: require('cmp.view.custom_entries_view') +368.897 000.124 000.124: require('cmp.view.wildmenu_entries_view') +369.028 000.124 000.124: require('cmp.view.native_entries_view') +369.135 000.100 000.100: require('cmp.view.ghost_text_view') +369.152 000.938 000.148: require('cmp.view') +369.269 003.048 000.297: require('cmp.core') +369.712 000.089 000.089: require('cmp.config.sources') +369.804 000.082 000.082: require('cmp.config.window') +369.904 003.832 000.613: require('cmp') +370.290 000.081 000.081: require('cmp_buffer.timer') +370.302 000.203 000.122: require('cmp_buffer.buffer') +370.308 000.305 000.102: require('cmp_buffer.source') +370.312 000.401 000.095: require('cmp_buffer') +370.344 004.362 000.130: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +370.777 000.183 000.183: require('cmp_cmdline') +370.811 000.289 000.106: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +371.233 000.099 000.099: require('cmp_nvim_lsp.source') +371.241 000.212 000.113: require('cmp_nvim_lsp') +371.290 000.324 000.112: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +371.645 000.140 000.140: require('cmp_path') +371.743 000.303 000.163: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +372.089 000.120 000.120: require('cmp_luasnip') +372.183 000.285 000.166: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +372.388 001.635: loading after plugins +372.417 000.029: inits 3 +372.430 000.013: reading ShaDa +372.874 000.094 000.094: require('luasnip.loaders._caches') +373.012 000.130 000.130: require('luasnip.util.path') +373.134 000.114 000.114: require('luasnip.loaders.util') +373.430 000.135 000.135: require('luasnip.loaders') +373.482 000.340 000.205: require('luasnip') +373.489 000.831 000.154: require('luasnip.loaders.from_lua') +373.761 000.100 000.100: require('luasnip.nodes.snippetProxy') +373.775 000.232 000.132: require('luasnip.loaders.from_snipmate') +373.944 000.123 000.123: require('luasnip.loaders.from_vscode') +374.862 001.247: opening buffers +375.085 000.223: BufEnter autocommands +375.092 000.007: editing files in windows +411.604 001.608 001.608: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.111 001.111: --- NVIM STARTING --- +027.185 026.074: event init +043.596 016.411: early init +045.265 001.669: locale set +050.725 005.460: init first window +060.579 009.854: inits 1 +060.609 000.030: window checked +060.619 000.010: parsing arguments +071.284 000.124 000.124: require('vim.shared') +071.506 000.108 000.108: require('vim._meta') +071.512 000.217 000.109: require('vim._editor') +071.515 000.397 000.055: require('vim._init_packages') +071.519 010.503: init lua interpreter +071.592 000.073: expanding arguments +073.348 001.755: inits 2 +073.982 000.634: init highlight +073.987 000.005: waiting for UI +077.805 003.818: done waiting for UI +077.840 000.035: init screen for UI +078.079 000.239: init default mappings +078.106 000.027: init default autocommands +087.815 004.243 004.243: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/ftplugin.vim +089.992 001.017 001.017: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/indent.vim +090.372 000.035 000.035: sourcing /usr/share/nvim/archlinux.vim +090.385 000.098 000.064: sourcing /etc/xdg/nvim/sysinit.vim +105.119 014.531 014.531: require('impatient') +105.253 000.119 000.119: require('impatient.profile') +108.631 000.731 000.731: require('keys') +111.118 002.475 002.475: require('opts') +111.846 000.144 000.144: require('packer.util') +111.903 000.510 000.366: require('packer') +112.587 000.275 000.275: require('packer.log') +112.597 000.463 000.188: require('packer.async') +112.989 000.210 000.210: require('packer.result') +112.997 000.394 000.183: require('packer.jobs') +113.012 001.062 000.206: require('packer.plugin_utils') +113.532 000.496 000.496: require('packer.snapshot') +114.562 003.432 001.363: require('pack') +115.890 000.293 000.293: require('vim.treesitter.language') +115.910 000.727 000.434: require('vim.treesitter.query') +117.287 000.216 000.216: require('vim.treesitter.languagetree') +117.351 000.578 000.363: require('vim.treesitter') +117.630 001.176 000.598: require('nvim-treesitter.parsers') +117.859 000.220 000.220: require('nvim-treesitter.utils') +117.871 001.701 000.305: require('nvim-treesitter.ts_utils') +117.885 001.964 000.263: require('nvim-treesitter.tsrange') +117.988 000.096 000.096: require('nvim-treesitter.caching') +118.007 002.945 000.158: require('nvim-treesitter.query') +118.039 003.132 000.187: require('nvim-treesitter.configs') +118.536 000.114 000.114: require('nvim-treesitter.info') +118.675 000.129 000.129: require('nvim-treesitter.shell_command_selectors') +118.724 000.480 000.236: require('nvim-treesitter.install') +157.329 042.756 039.144: require('plugins.treesitter') +157.746 000.103 000.103: require('telescope._extensions') +157.757 000.215 000.113: require('telescope') +158.664 000.097 000.097: require('plenary.bit') +158.765 000.092 000.092: require('plenary.functional') +158.812 000.031 000.031: require('ffi') +158.835 000.422 000.202: require('plenary.path') +158.850 000.595 000.173: require('plenary.strings') +158.947 000.092 000.092: require('telescope.deprecated') +159.473 000.318 000.318: require('plenary.log') +159.514 000.439 000.120: require('telescope.log') +159.793 000.137 000.137: require('plenary.job') +159.900 000.098 000.098: require('telescope.state') +159.916 000.395 000.160: require('telescope.utils') +159.931 000.977 000.143: require('telescope.sorters') +160.097 000.145 000.145: require('vim.inspect') +160.525 000.020 000.020: require('vim.F') +164.303 006.263 004.434: require('telescope.config') +164.534 000.095 000.095: require('plenary.window.border') +164.641 000.100 000.100: require('plenary.window') +164.732 000.083 000.083: require('plenary.popup.utils') +164.741 000.423 000.145: require('plenary.popup') +164.846 000.099 000.099: require('telescope.pickers.scroller') +164.947 000.094 000.094: require('telescope.actions.state') +165.047 000.094 000.094: require('telescope.actions.utils') +165.255 000.098 000.098: require('telescope.actions.mt') +165.339 000.285 000.187: require('telescope.actions.set') +165.628 000.111 000.111: require('telescope.config.resolve') +165.635 000.290 000.180: require('telescope.pickers.entry_display') +165.765 000.089 000.089: require('telescope.from_entry') +166.096 008.333 000.695: require('telescope.actions') +167.038 000.094 000.094: require('plenary.tbl') +167.049 000.215 000.122: require('plenary.vararg.rotate') +167.053 000.346 000.131: require('plenary.vararg') +167.177 000.112 000.112: require('plenary.errors') +167.190 000.618 000.160: require('plenary.async.async') +167.317 000.121 000.121: require('plenary.async.structs') +167.332 000.898 000.159: require('plenary.async.control') +167.818 000.360 000.360: require('telescope.make_entry') +168.264 000.119 000.119: require('plenary.async.util') +168.271 000.220 000.101: require('plenary.async.tests') +168.277 000.330 000.110: require('plenary.async') +168.287 000.453 000.123: require('telescope.finders.async_static_finder') +168.613 000.092 000.092: require('plenary.class') +168.647 000.246 000.155: require('telescope._') +168.654 000.362 000.115: require('telescope.finders.async_oneshot_finder') +168.772 000.113 000.113: require('telescope.finders.async_job_finder') +168.788 001.448 000.161: require('telescope.finders') +169.220 000.156 000.156: require('telescope.debounce') +169.470 000.241 000.241: require('telescope.mappings') +169.610 000.129 000.129: require('telescope.pickers.highlights') +169.755 000.136 000.136: require('telescope.pickers.window') +169.976 000.103 000.103: require('telescope.algos.linked_list') +169.989 000.227 000.124: require('telescope.entry_manager') +170.088 000.094 000.094: require('telescope.pickers.multi') +170.141 001.347 000.364: require('telescope.pickers') +170.166 003.902 000.209: require('telescope.builtin.__lsp') +170.213 004.110 000.208: require('telescope.builtin') +170.621 000.277 000.277: require('fzf_lib') +170.638 000.414 000.136: require('telescope._extensions.fzf') +171.172 000.187 000.187: require('telescope._extensions.file_browser.utils') +171.332 000.559 000.372: require('telescope._extensions.file_browser.actions') +171.693 000.212 000.212: require('telescope._extensions.file_browser.make_entry') +171.940 000.235 000.235: require('plenary.scandir') +171.994 000.653 000.206: require('telescope._extensions.file_browser.finders') +172.126 000.124 000.124: require('telescope._extensions.file_browser.picker') +172.281 000.148 000.148: require('telescope._extensions.file_browser.config') +172.287 001.634 000.149: require('telescope._extensions.file_browser') +177.884 000.017 000.017: require('vim.keymap') +178.248 020.907 006.185: require('plugins.telescope') +179.753 000.165 000.165: require('notify.util.queue') +179.763 000.341 000.175: require('notify.util') +180.014 000.244 000.244: require('notify.config.highlights') +180.024 000.708 000.123: require('notify.config') +180.121 000.091 000.091: require('notify.stages') +180.279 000.128 000.128: require('notify.service.notification') +180.547 000.077 000.077: require('notify.animate.spring') +180.553 000.163 000.086: require('notify.animate') +180.562 000.276 000.113: require('notify.windows') +180.849 000.099 000.099: require('notify.service.buffer.highlights') +180.859 000.202 000.104: require('notify.service.buffer') +180.864 000.297 000.095: require('notify.service') +180.964 000.096 000.096: require('notify.stages.util') +180.973 001.863 000.268: require('notify') +181.067 000.088 000.088: require('nvim-tree.iterators.node-iterator') +181.131 002.139 000.187: require('nvim-tree.utils') +181.143 002.243 000.104: require('nvim-tree.events') +181.520 000.083 000.083: require('nvim-tree.log') +181.695 000.166 000.166: require('nvim-tree.git.utils') +181.800 000.098 000.098: require('nvim-tree.git.runner') +181.898 000.091 000.091: require('nvim-tree.watcher') +181.908 000.566 000.128: require('nvim-tree.git') +182.001 000.088 000.088: require('nvim-tree.explorer.watch') +182.135 000.087 000.087: require('nvim-tree.explorer.common') +182.325 000.099 000.099: require('nvim-tree.explorer.node-builders') +182.421 000.087 000.087: require('nvim-tree.explorer.sorters') +182.521 000.085 000.085: require('nvim-tree.explorer.filters') +182.808 000.182 000.182: require('nvim-tree.view') +182.825 000.297 000.115: require('nvim-tree.live-filter') +182.833 000.691 000.123: require('nvim-tree.explorer.explore') +182.993 000.151 000.151: require('nvim-tree.explorer.reload') +183.004 001.856 000.273: require('nvim-tree.explorer') +183.016 004.199 000.099: require('nvim-tree.core') +183.191 000.168 000.168: require('nvim-tree.diagnostics') +183.342 000.138 000.138: require('nvim-tree.renderer.components.padding') +183.522 000.170 000.170: require('nvim-tree.renderer.components.icons') +183.685 000.151 000.151: require('nvim-tree.renderer.components.full-name') +183.825 000.130 000.130: require('nvim-tree.renderer.help') +184.007 000.171 000.171: require('nvim-tree.renderer.components.git') +184.195 000.178 000.178: require('nvim-tree.renderer.builder') +184.347 000.141 000.141: require('nvim-tree.marks') +184.368 005.654 000.208: require('nvim-tree.renderer') +184.535 000.149 000.149: require('nvim-tree.actions.tree-modifiers.collapse-all') +184.674 000.129 000.129: require('nvim-tree.actions.root.dir-up') +184.832 000.147 000.147: require('nvim-tree.actions.root.change-dir') +184.958 000.116 000.116: require('nvim-tree.actions.reloaders.reloaders') +185.064 000.095 000.095: require('nvim-tree.actions.finders.find-file') +185.070 006.451 000.159: require('nvim-tree.lib') +185.173 000.098 000.098: require('nvim-tree.colors') +185.295 000.112 000.112: require('nvim-tree.legacy') +185.413 000.109 000.109: require('nvim-tree.actions.fs.copy-paste') +185.615 000.095 000.095: require('nvim-tree.actions.tree-modifiers.expand-all') +185.712 000.090 000.090: require('nvim-tree.actions.tree-modifiers.toggles') +185.821 000.094 000.094: require('nvim-tree.actions.fs.create-file') +185.919 000.090 000.090: require('nvim-tree.actions.fs.rename-file') +186.041 000.114 000.114: require('nvim-tree.actions.fs.trash') +186.143 000.095 000.095: require('nvim-tree.actions.fs.remove-file') +186.240 000.086 000.086: require('nvim-tree.actions.moves.parent') +186.331 000.085 000.085: require('nvim-tree.actions.moves.sibling') +186.423 000.084 000.084: require('nvim-tree.actions.moves.item') +186.533 000.091 000.091: require('nvim-tree.actions.finders.search-node') +186.622 000.083 000.083: require('nvim-tree.actions.node.run-command') +186.719 000.091 000.091: require('nvim-tree.actions.node.file-popup') +186.848 000.121 000.121: require('nvim-tree.actions.node.system-open') +186.948 000.090 000.090: require('nvim-tree.marks.bulk-move') +186.954 001.531 000.224: require('nvim-tree.actions.dispatch') +186.983 008.551 000.251: require('nvim-tree') +187.065 000.076 000.076: require('nvim-tree.config') +190.975 000.179 000.179: require('nvim-tree.actions') +191.118 000.126 000.126: require('nvim-tree.actions.node.open-file') +194.601 000.103 000.103: require('nvim-tree.marks.navigation') +194.613 000.300 000.197: require('nvim-tree.api') +194.642 000.462 000.162: require('nvim-tree.keymap') +195.607 000.463 000.463: require('nvim-web-devicons') +200.113 021.854 011.996: require('plugins.nvim-tree') +200.819 000.138 000.138: require('lualine_require') +201.441 000.999 000.861: require('lualine') +201.530 000.079 000.079: require('plugins.linecolor') +209.975 000.135 000.135: require('lualine.utils.mode') +213.198 013.006 011.794: require('plugins.lualine') +213.236 122.803 002.991: sourcing /home/sxrdusr/.config/nvim/init.lua +213.254 006.986: sourcing vimrc file(s) +213.571 000.053 000.053: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +214.883 000.074 000.074: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/filetype.lua +216.250 001.156 001.156: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/filetype.vim +218.459 000.289 000.289: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/syntax/synload.vim +218.710 001.984 001.695: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/syntax/syntax.vim +224.924 001.037 001.037: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/gzip.vim +225.080 000.065 000.065: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/health.vim +228.009 001.454 001.454: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +228.576 003.411 001.957: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/matchit.vim +229.076 000.413 000.413: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/matchparen.vim +229.256 000.090 000.090: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/netrwPlugin.vim +229.702 000.024 000.024: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +229.723 000.379 000.355: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/rplugin.vim +230.008 000.198 000.198: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/shada.vim +230.190 000.091 000.091: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/spellfile.vim +230.360 000.080 000.080: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/tarPlugin.vim +230.524 000.075 000.075: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/tohtml.vim +230.670 000.058 000.058: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/tutor.vim +231.429 000.673 000.673: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/zipPlugin.vim +231.723 000.037 000.037: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +233.248 000.155 000.155: require('lspsaga') +233.650 000.126 000.126: require('lspsaga.window') +233.674 000.289 000.163: require('lspsaga.libs') +234.831 000.402 000.402: require('vim.lsp.log') +235.514 000.671 000.671: require('vim.lsp.protocol') +236.036 000.228 000.228: require('vim.lsp._snippet') +236.195 000.149 000.149: require('vim.highlight') +236.231 000.707 000.330: require('vim.lsp.util') +236.254 002.041 000.262: require('vim.lsp.handlers') +236.548 000.287 000.287: require('vim.lsp.rpc') +236.714 000.154 000.154: require('vim.lsp.sync') +236.982 000.258 000.258: require('vim.lsp.buf') +237.189 000.194 000.194: require('vim.lsp.diagnostic') +237.383 000.186 000.186: require('vim.lsp.codelens') +237.546 003.740 000.620: require('vim.lsp') +237.656 000.098 000.098: require('lspsaga.wrap') +237.672 003.992 000.153: require('lspsaga.codeaction') +237.713 004.454 000.172: require('lspsaga.lightbulb') +237.892 000.137 000.137: require('lspsaga.lspkind') +238.160 000.086 000.086: require('mason-core.path') +238.178 000.190 000.104: require('mason.settings') +238.483 000.086 000.086: require('mason-core.functional.data') +238.491 000.190 000.104: require('mason-core.functional.function') +238.531 000.345 000.156: require('mason-core.platform') +238.536 000.631 000.096: require('mason') +238.821 000.142 000.142: require('mason-core.functional') +238.957 000.113 000.113: require('mason-core.functional.list') +239.001 000.437 000.182: require('mason.api.command') +239.249 000.137 000.137: require('mason-core.log') +239.258 000.250 000.114: require('mason-lspconfig') +239.355 000.092 000.092: require('mason-lspconfig.settings') +239.481 000.107 000.107: require('mason-lspconfig.lspconfig_hook') +239.804 000.316 000.316: require('lspconfig.util') +240.204 000.126 000.126: require('mason-core.functional.table') +240.364 000.446 000.320: require('mason-lspconfig.mappings.server') +240.714 000.112 000.112: require('mason-core.async') +240.810 000.087 000.087: require('mason-core.async.uv') +240.822 000.314 000.115: require('mason-core.fs') +240.921 000.090 000.090: require('mason-core.optional') +241.022 000.094 000.094: require('mason-core.EventEmitter') +241.210 000.181 000.181: require('mason-registry.index') +241.234 000.860 000.181: require('mason-registry') +241.334 000.093 000.093: require('mason-lspconfig.server_config_extensions') +241.505 000.118 000.118: require('lspconfig.configs') +241.623 000.110 000.110: require('lspconfig.server_configurations.omnisharp') +241.763 000.097 000.097: require('mason-lspconfig.ensure_installed') +242.095 000.095 000.095: require('mason-core.result') +242.582 000.251 000.251: require('mason-core.process') +242.688 000.094 000.094: require('mason-core.functional.relation') +242.788 000.090 000.090: require('mason-core.functional.logic') +242.807 000.575 000.140: require('mason-core.spawn') +242.922 000.106 000.106: require('mason-core.receipt') +243.037 000.096 000.096: require('mason-core.functional.string') +243.067 000.964 000.187: require('mason-core.installer.context') +243.173 000.100 000.100: require('mason-core.installer.linker') +243.274 000.095 000.095: require('mason-core.async.control') +243.283 001.396 000.141: require('mason-core.installer') +243.420 000.132 000.132: require('mason-core.installer.handle') +245.806 000.120 000.120: require('mason-core.managers.powershell') +245.817 002.066 001.945: require('mason-core.fetch') +245.822 002.152 000.086: require('mason-core.managers.cargo.client') +245.863 002.308 000.156: require('mason-core.managers.cargo') +246.012 000.143 000.143: require('mason-core.managers.composer') +246.163 000.144 000.144: require('mason-core.managers.gem') +246.277 000.107 000.107: require('mason-core.managers.git') +246.520 000.120 000.120: require('mason-core.managers.std') +246.633 000.106 000.106: require('mason-core.managers.github.client') +246.652 000.368 000.142: require('mason-core.managers.github') +246.927 000.270 000.270: require('mason-core.managers.go') +247.120 000.184 000.184: require('mason-core.managers.luarocks') +247.268 000.141 000.141: require('mason-core.managers.npm') +247.446 000.171 000.171: require('mason-core.managers.pip3') +247.459 004.027 000.192: require('mason-core.package.version-check') +247.472 005.702 000.147: require('mason-core.package') +247.697 000.125 000.125: require('mason-registry.lua-language-server') +248.154 000.144 000.144: require('mason-registry.clangd') +248.338 000.142 000.142: require('mason-registry.rust-analyzer') +248.567 000.079 000.079: require('mason-core.notify') +248.681 000.104 000.104: require('mason-core.functional.number') +248.744 000.395 000.212: require('mason-lspconfig.api.command') +248.751 016.895 002.084: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +250.216 000.149 000.149: sourcing /tmp/.mount_nvimnx9QwH/usr/share/nvim/runtime/plugin/man.lua +250.464 010.291: loading rtp plugins +252.317 000.130 000.130: require('Comment.config') +252.432 000.105 000.105: require('Comment.utils') +252.532 000.092 000.092: require('Comment.opfunc') +252.631 000.092 000.092: require('Comment.extra') +252.648 000.616 000.196: require('Comment.api') +253.164 001.202 000.586: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +253.955 000.088 000.088: require('luasnip.util.types') +254.062 000.098 000.098: require('luasnip.util.ext_opts') +254.171 000.101 000.101: require('luasnip.extras.filetype_functions') +254.272 000.094 000.094: require('luasnip.session') +254.636 000.137 000.137: require('luasnip.util.util') +254.743 000.099 000.099: require('luasnip.nodes.util') +254.843 000.092 000.092: require('luasnip.util.events') +254.861 000.475 000.147: require('luasnip.nodes.node') +255.012 000.094 000.094: require('luasnip.util.extend_decorator') +255.023 000.743 000.175: require('luasnip.nodes.insertNode') +255.408 000.109 000.109: require('luasnip.util.mark') +255.695 000.123 000.123: require('luasnip.nodes.textNode') +256.595 000.792 000.792: require('luasnip.util._builtin_vars') +256.841 001.133 000.341: require('luasnip.util.environ') +256.963 000.111 000.111: require('luasnip.util.pattern_tokenizer') +257.055 000.084 000.084: require('luasnip.util.dict') +257.172 000.110 000.110: require('luasnip.session.snippet_collection') +257.232 001.814 000.254: require('luasnip.nodes.snippet') +257.291 002.263 000.339: require('luasnip.nodes.choiceNode') +257.465 000.139 000.139: require('luasnip.nodes.functionNode') +257.663 000.187 000.187: require('luasnip.nodes.dynamicNode') +257.824 000.153 000.153: require('luasnip.nodes.restoreNode') +257.940 000.109 000.109: require('luasnip.extras') +258.135 000.088 000.088: require('luasnip.util.str') +258.144 000.193 000.104: require('luasnip.extras.fmt') +258.239 000.087 000.087: require('luasnip.extras.expand_conditions') +258.565 000.104 000.104: require('luasnip.util.parser.neovim_ast') +268.931 000.123 000.123: require('luasnip.util.directed_graph') +268.952 010.600 010.373: require('luasnip.util.parser.ast_utils') +269.185 000.096 000.096: require('luasnip.util.functions') +269.202 000.243 000.147: require('luasnip.util.parser.ast_parser') +269.421 000.212 000.212: require('luasnip.util.parser.neovim_parser') +269.442 011.193 000.138: require('luasnip.util.parser') +269.543 000.094 000.094: require('luasnip.nodes.absolute_indexer') +269.972 016.251 000.709: require('luasnip.config') +270.152 016.806 000.555: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +271.034 000.049 000.049: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +271.973 000.123 000.123: require('indent_blankline/utils') +271.982 000.313 000.190: require('indent_blankline') +272.343 000.105 000.105: require('indent_blankline.commands') +272.499 001.006 000.587: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +272.937 000.132 000.132: require('lsp-colors') +273.381 000.626 000.495: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +274.698 000.902 000.902: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +275.547 000.392 000.392: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +276.124 000.110 000.110: require('cmp.utils.api') +276.308 000.089 000.089: require('cmp.types.cmp') +276.520 000.102 000.102: require('cmp.utils.misc') +276.553 000.238 000.136: require('cmp.types.lsp') +276.641 000.081 000.081: require('cmp.types.vim') +276.647 000.514 000.105: require('cmp.types') +276.740 000.088 000.088: require('cmp.utils.highlight') +276.942 000.083 000.083: require('cmp.utils.debug') +276.958 000.211 000.128: require('cmp.utils.autocmd') +277.710 001.788 000.865: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +277.977 000.081 000.081: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +278.441 000.144 000.144: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +278.924 000.182 000.182: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +279.607 000.095 000.095: require('nvim-treesitter.statusline') +279.735 000.120 000.120: require('nvim-treesitter.query_predicates') +279.743 000.332 000.117: require('nvim-treesitter') +280.880 000.218 000.218: require('vim.treesitter.highlighter') +281.220 000.738 000.520: require('nvim-treesitter.highlight') +281.584 002.249 001.180: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +282.055 000.247 000.247: require('treesitter-context') +282.065 000.289 000.042: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +282.467 000.116 000.116: require('nvim-treesitter-refactor') +282.639 000.316 000.200: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +282.999 000.105 000.105: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +283.374 000.078 000.078: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +283.801 000.096 000.096: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +284.568 000.417 000.417: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +284.926 000.058 000.058: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +285.791 000.378 000.378: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +286.575 000.492 000.492: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +287.223 000.361 000.361: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +288.060 000.588 000.588: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +288.358 000.029 000.029: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +288.635 000.044 000.044: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +289.572 010.432: loading packages +291.291 000.474 000.474: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +295.675 005.526 005.052: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +296.520 000.147 000.147: require('cmp.utils.char') +296.536 000.263 000.115: require('cmp.utils.str') +296.633 000.090 000.090: require('cmp.utils.pattern') +296.969 000.081 000.081: require('cmp.utils.buffer') +296.982 000.246 000.166: require('cmp.utils.keymap') +296.995 000.354 000.108: require('cmp.utils.feedkeys') +297.107 000.107 000.107: require('cmp.utils.async') +297.291 000.081 000.081: require('cmp.utils.cache') +297.301 000.186 000.104: require('cmp.context') +297.636 000.107 000.107: require('cmp.config.mapping') +297.858 000.108 000.108: require('cmp.config.compare') +297.868 000.220 000.112: require('cmp.config.default') +297.896 000.466 000.139: require('cmp.config') +298.116 000.086 000.086: require('cmp.matcher') +298.130 000.228 000.142: require('cmp.entry') +298.150 000.844 000.150: require('cmp.source') +298.347 000.087 000.087: require('cmp.utils.event') +298.569 000.111 000.111: require('cmp.utils.window') +298.577 000.222 000.112: require('cmp.view.docs_view') +298.733 000.151 000.151: require('cmp.view.custom_entries_view') +298.868 000.128 000.128: require('cmp.view.wildmenu_entries_view') +298.986 000.112 000.112: require('cmp.view.native_entries_view') +299.096 000.102 000.102: require('cmp.view.ghost_text_view') +299.114 000.959 000.156: require('cmp.view') +299.197 003.078 000.275: require('cmp.core') +299.687 000.092 000.092: require('cmp.config.sources') +299.782 000.085 000.085: require('cmp.config.window') +299.886 003.913 000.659: require('cmp') +300.287 000.084 000.084: require('cmp_buffer.timer') +300.296 000.211 000.127: require('cmp_buffer.buffer') +300.304 000.319 000.108: require('cmp_buffer.source') +300.309 000.416 000.097: require('cmp_buffer') +300.342 004.448 000.119: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +300.758 000.175 000.175: require('cmp_cmdline') +300.793 000.281 000.106: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +301.292 000.176 000.176: require('cmp_nvim_lsp.source') +301.303 000.288 000.112: require('cmp_nvim_lsp') +301.353 000.407 000.119: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +301.714 000.146 000.146: require('cmp_path') +301.753 000.246 000.100: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +302.079 000.105 000.105: require('cmp_luasnip') +302.261 000.359 000.254: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +302.459 001.620: loading after plugins +302.488 000.029: inits 3 +302.501 000.013: reading ShaDa +302.942 000.097 000.097: require('luasnip.loaders._caches') +303.083 000.132 000.132: require('luasnip.util.path') +303.202 000.111 000.111: require('luasnip.loaders.util') +303.527 000.159 000.159: require('luasnip.loaders') +303.585 000.375 000.215: require('luasnip') +303.592 000.859 000.145: require('luasnip.loaders.from_lua') +303.889 000.122 000.122: require('luasnip.nodes.snippetProxy') +303.901 000.254 000.133: require('luasnip.loaders.from_snipmate') +304.069 000.123 000.123: require('luasnip.loaders.from_vscode') +305.197 001.459: opening buffers +305.422 000.225: BufEnter autocommands +305.429 000.007: editing files in windows +322.290 000.943 000.943: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.092 001.092: --- NVIM STARTING --- +027.470 026.378: event init +043.953 016.484: early init +045.599 001.646: locale set +051.045 005.446: init first window +060.894 009.849: inits 1 +060.923 000.029: window checked +060.933 000.011: parsing arguments +071.709 000.123 000.123: require('vim.shared') +071.945 000.108 000.108: require('vim._meta') +071.950 000.231 000.123: require('vim._editor') +071.954 000.411 000.057: require('vim._init_packages') +071.957 010.613: init lua interpreter +072.034 000.077: expanding arguments +073.708 001.674: inits 2 +074.323 000.616: init highlight +074.327 000.004: waiting for UI +078.106 003.778: done waiting for UI +078.157 000.052: init screen for UI +078.520 000.363: init default mappings +078.555 000.035: init default autocommands +088.938 004.488 004.488: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/ftplugin.vim +090.930 000.943 000.943: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/indent.vim +091.231 000.027 000.027: sourcing /usr/share/nvim/archlinux.vim +091.243 000.084 000.057: sourcing /etc/xdg/nvim/sysinit.vim +105.580 014.174 014.174: require('impatient') +105.713 000.118 000.118: require('impatient.profile') +109.123 000.739 000.739: require('keys') +111.607 002.472 002.472: require('opts') +112.518 000.214 000.214: require('packer.util') +112.571 000.683 000.470: require('packer') +113.172 000.202 000.202: require('packer.log') +113.182 000.366 000.164: require('packer.async') +113.454 000.161 000.161: require('packer.result') +113.465 000.277 000.116: require('packer.jobs') +113.478 000.858 000.215: require('packer.plugin_utils') +113.774 000.272 000.272: require('packer.snapshot') +114.919 003.300 001.486: require('pack') +116.141 000.252 000.252: require('vim.treesitter.language') +116.161 000.730 000.479: require('vim.treesitter.query') +117.088 000.211 000.211: require('vim.treesitter.languagetree') +117.193 000.526 000.315: require('vim.treesitter') +117.477 001.084 000.558: require('nvim-treesitter.parsers') +117.613 000.127 000.127: require('nvim-treesitter.utils') +117.627 001.344 000.133: require('nvim-treesitter.ts_utils') +117.641 001.470 000.126: require('nvim-treesitter.tsrange') +117.738 000.090 000.090: require('nvim-treesitter.caching') +117.759 002.507 000.217: require('nvim-treesitter.query') +117.790 002.780 000.273: require('nvim-treesitter.configs') +118.152 000.107 000.107: require('nvim-treesitter.info') +118.293 000.132 000.132: require('nvim-treesitter.shell_command_selectors') +118.339 000.451 000.212: require('nvim-treesitter.install') +156.898 041.970 038.738: require('plugins.treesitter') +157.216 000.091 000.091: require('telescope._extensions') +157.226 000.195 000.105: require('telescope') +157.946 000.092 000.092: require('plenary.bit') +158.045 000.090 000.090: require('plenary.functional') +158.093 000.029 000.029: require('ffi') +158.116 000.407 000.196: require('plenary.path') +158.132 000.520 000.113: require('plenary.strings') +158.310 000.173 000.173: require('telescope.deprecated') +158.887 000.298 000.298: require('plenary.log') +159.000 000.494 000.196: require('telescope.log') +159.285 000.138 000.138: require('plenary.job') +159.380 000.086 000.086: require('telescope.state') +159.395 000.386 000.162: require('telescope.utils') +159.405 001.086 000.207: require('telescope.sorters') +159.514 000.086 000.086: require('vim.inspect') +160.442 000.019 000.019: require('vim.F') +164.246 006.778 004.895: require('telescope.config') +164.541 000.161 000.161: require('plenary.window.border') +164.687 000.136 000.136: require('plenary.window') +164.772 000.076 000.076: require('plenary.popup.utils') +164.780 000.520 000.147: require('plenary.popup') +164.894 000.108 000.108: require('telescope.pickers.scroller') +164.993 000.091 000.091: require('telescope.actions.state') +165.092 000.092 000.092: require('telescope.actions.utils') +165.296 000.095 000.095: require('telescope.actions.mt') +165.373 000.274 000.179: require('telescope.actions.set') +165.577 000.097 000.097: require('telescope.config.resolve') +165.583 000.204 000.107: require('telescope.pickers.entry_display') +165.670 000.081 000.081: require('telescope.from_entry') +166.061 008.829 000.680: require('telescope.actions') +166.884 000.089 000.089: require('plenary.tbl') +166.896 000.201 000.112: require('plenary.vararg.rotate') +166.900 000.295 000.094: require('plenary.vararg') +167.037 000.125 000.125: require('plenary.errors') +167.063 000.564 000.144: require('plenary.async.async') +167.168 000.098 000.098: require('plenary.async.structs') +167.185 000.805 000.142: require('plenary.async.control') +167.596 000.295 000.295: require('telescope.make_entry') +168.063 000.142 000.142: require('plenary.async.util') +168.070 000.240 000.098: require('plenary.async.tests') +168.076 000.347 000.107: require('plenary.async') +168.088 000.480 000.133: require('telescope.finders.async_static_finder') +168.440 000.106 000.106: require('plenary.class') +168.476 000.270 000.163: require('telescope._') +168.482 000.389 000.119: require('telescope.finders.async_oneshot_finder') +168.596 000.108 000.108: require('telescope.finders.async_job_finder') +168.611 001.418 000.147: require('telescope.finders') +169.013 000.151 000.151: require('telescope.debounce') +169.240 000.217 000.217: require('telescope.mappings') +169.382 000.132 000.132: require('telescope.pickers.highlights') +169.541 000.146 000.146: require('telescope.pickers.window') +169.887 000.127 000.127: require('telescope.algos.linked_list') +169.898 000.304 000.178: require('telescope.entry_manager') +170.005 000.102 000.102: require('telescope.pickers.multi') +170.047 001.428 000.376: require('telescope.pickers') +170.069 003.829 000.178: require('telescope.builtin.__lsp') +170.126 004.055 000.227: require('telescope.builtin') +170.538 000.280 000.280: require('fzf_lib') +170.556 000.422 000.142: require('telescope._extensions.fzf') +171.114 000.177 000.177: require('telescope._extensions.file_browser.utils') +171.256 000.523 000.345: require('telescope._extensions.file_browser.actions') +171.607 000.207 000.207: require('telescope._extensions.file_browser.make_entry') +171.830 000.210 000.210: require('plenary.scandir') +171.885 000.621 000.204: require('telescope._extensions.file_browser.finders') +172.019 000.126 000.126: require('telescope._extensions.file_browser.picker') +172.179 000.153 000.153: require('telescope._extensions.file_browser.config') +172.195 001.582 000.159: require('telescope._extensions.file_browser') +177.155 000.039 000.039: require('vim.keymap') +177.505 020.593 005.471: require('plugins.telescope') +179.728 000.170 000.170: require('notify.util.queue') +179.739 000.342 000.172: require('notify.util') +179.999 000.254 000.254: require('notify.config.highlights') +180.010 000.712 000.116: require('notify.config') +180.101 000.086 000.086: require('notify.stages') +180.201 000.092 000.092: require('notify.service.notification') +180.473 000.076 000.076: require('notify.animate.spring') +180.479 000.174 000.098: require('notify.animate') +180.488 000.281 000.107: require('notify.windows') +180.766 000.095 000.095: require('notify.service.buffer.highlights') +180.775 000.195 000.100: require('notify.service.buffer') +180.780 000.287 000.091: require('notify.service') +180.878 000.093 000.093: require('notify.stages.util') +180.888 001.802 000.250: require('notify') +180.980 000.087 000.087: require('nvim-tree.iterators.node-iterator') +181.047 002.073 000.184: require('nvim-tree.utils') +181.058 002.174 000.101: require('nvim-tree.events') +181.322 000.081 000.081: require('nvim-tree.log') +181.491 000.161 000.161: require('nvim-tree.git.utils') +181.595 000.097 000.097: require('nvim-tree.git.runner') +181.696 000.094 000.094: require('nvim-tree.watcher') +181.707 000.555 000.122: require('nvim-tree.git') +181.802 000.090 000.090: require('nvim-tree.explorer.watch') +181.935 000.086 000.086: require('nvim-tree.explorer.common') +182.126 000.098 000.098: require('nvim-tree.explorer.node-builders') +182.222 000.087 000.087: require('nvim-tree.explorer.sorters') +182.325 000.086 000.086: require('nvim-tree.explorer.filters') +182.606 000.178 000.178: require('nvim-tree.view') +182.618 000.286 000.108: require('nvim-tree.live-filter') +182.623 000.680 000.123: require('nvim-tree.explorer.explore') +182.725 000.098 000.098: require('nvim-tree.explorer.reload') +182.733 001.669 000.160: require('nvim-tree.explorer') +182.740 003.940 000.096: require('nvim-tree.core') +182.854 000.110 000.110: require('nvim-tree.diagnostics') +182.951 000.089 000.089: require('nvim-tree.renderer.components.padding') +183.045 000.087 000.087: require('nvim-tree.renderer.components.icons') +183.143 000.092 000.092: require('nvim-tree.renderer.components.full-name') +183.231 000.081 000.081: require('nvim-tree.renderer.help') +183.343 000.105 000.105: require('nvim-tree.renderer.components.git') +183.459 000.110 000.110: require('nvim-tree.renderer.builder') +183.554 000.088 000.088: require('nvim-tree.marks') +183.569 004.957 000.255: require('nvim-tree.renderer') +183.714 000.133 000.133: require('nvim-tree.actions.tree-modifiers.collapse-all') +183.809 000.088 000.088: require('nvim-tree.actions.root.dir-up') +183.909 000.093 000.093: require('nvim-tree.actions.root.change-dir') +184.006 000.091 000.091: require('nvim-tree.actions.reloaders.reloaders') +184.106 000.090 000.090: require('nvim-tree.actions.finders.find-file') +184.111 006.027 000.576: require('nvim-tree.lib') +184.209 000.093 000.093: require('nvim-tree.colors') +184.329 000.110 000.110: require('nvim-tree.legacy') +184.447 000.109 000.109: require('nvim-tree.actions.fs.copy-paste') +184.645 000.092 000.092: require('nvim-tree.actions.tree-modifiers.expand-all') +184.740 000.088 000.088: require('nvim-tree.actions.tree-modifiers.toggles') +184.847 000.092 000.092: require('nvim-tree.actions.fs.create-file') +184.944 000.088 000.088: require('nvim-tree.actions.fs.rename-file') +185.063 000.112 000.112: require('nvim-tree.actions.fs.trash') +185.164 000.093 000.093: require('nvim-tree.actions.fs.remove-file') +185.257 000.084 000.084: require('nvim-tree.actions.moves.parent') +185.347 000.083 000.083: require('nvim-tree.actions.moves.sibling') +185.436 000.081 000.081: require('nvim-tree.actions.moves.item') +185.544 000.090 000.090: require('nvim-tree.actions.finders.search-node') +185.634 000.083 000.083: require('nvim-tree.actions.node.run-command') +185.729 000.089 000.089: require('nvim-tree.actions.node.file-popup') +185.840 000.104 000.104: require('nvim-tree.actions.node.system-open') +185.937 000.087 000.087: require('nvim-tree.marks.bulk-move') +185.943 001.485 000.221: require('nvim-tree.actions.dispatch') +185.973 008.278 000.454: require('nvim-tree') +186.053 000.074 000.074: require('nvim-tree.config') +192.349 000.155 000.155: require('nvim-tree.actions') +192.479 000.113 000.113: require('nvim-tree.actions.node.open-file') +196.244 000.112 000.112: require('nvim-tree.marks.navigation') +196.255 000.312 000.199: require('nvim-tree.api') +196.284 000.470 000.158: require('nvim-tree.keymap') +197.266 000.487 000.487: require('nvim-web-devicons') +202.059 024.544 014.966: require('plugins.nvim-tree') +202.450 000.103 000.103: require('lualine_require') +203.033 000.835 000.732: require('lualine') +203.120 000.078 000.078: require('plugins.linecolor') +211.064 000.113 000.113: require('lualine.utils.mode') +213.472 011.399 010.372: require('plugins.lualine') +213.595 122.306 002.998: sourcing /home/sxrdusr/.config/nvim/init.lua +213.617 007.239: sourcing vimrc file(s) +214.062 000.083 000.083: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +215.663 000.110 000.110: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/filetype.lua +218.896 002.865 002.865: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/filetype.vim +222.633 000.464 000.464: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/syntax/synload.vim +222.910 003.277 002.813: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/syntax/syntax.vim +230.982 002.165 002.165: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/gzip.vim +231.269 000.080 000.080: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/health.vim +234.916 002.388 002.388: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +235.394 004.055 001.667: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/matchit.vim +235.851 000.389 000.389: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/matchparen.vim +235.996 000.075 000.075: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/netrwPlugin.vim +236.395 000.024 000.024: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +236.416 000.357 000.333: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/rplugin.vim +236.661 000.185 000.185: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/shada.vim +236.780 000.051 000.051: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/spellfile.vim +236.906 000.061 000.061: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/tarPlugin.vim +237.061 000.091 000.091: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/tohtml.vim +237.174 000.046 000.046: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/tutor.vim +238.457 001.220 001.220: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/zipPlugin.vim +238.752 000.039 000.039: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +240.127 000.153 000.153: require('lspsaga') +240.603 000.125 000.125: require('lspsaga.window') +240.623 000.279 000.154: require('lspsaga.libs') +241.874 000.487 000.487: require('vim.lsp.log') +242.691 000.807 000.807: require('vim.lsp.protocol') +243.422 000.332 000.332: require('vim.lsp._snippet') +243.615 000.184 000.184: require('vim.highlight') +243.648 000.946 000.430: require('vim.lsp.util') +243.726 002.598 000.358: require('vim.lsp.handlers') +244.087 000.352 000.352: require('vim.lsp.rpc') +244.346 000.248 000.248: require('vim.lsp.sync') +244.661 000.306 000.306: require('vim.lsp.buf') +244.922 000.253 000.253: require('vim.lsp.diagnostic') +245.190 000.257 000.257: require('vim.lsp.codelens') +245.375 004.624 000.610: require('vim.lsp') +245.483 000.096 000.096: require('lspsaga.wrap') +245.499 004.869 000.149: require('lspsaga.codeaction') +245.544 005.350 000.202: require('lspsaga.lightbulb') +245.715 000.129 000.129: require('lspsaga.lspkind') +245.979 000.083 000.083: require('mason-core.path') +246.000 000.191 000.108: require('mason.settings') +246.299 000.084 000.084: require('mason-core.functional.data') +246.308 000.184 000.100: require('mason-core.functional.function') +246.351 000.344 000.159: require('mason-core.platform') +246.356 000.629 000.095: require('mason') +246.650 000.148 000.148: require('mason-core.functional') +246.787 000.115 000.115: require('mason-core.functional.list') +246.828 000.447 000.184: require('mason.api.command') +247.090 000.151 000.151: require('mason-core.log') +247.099 000.265 000.115: require('mason-lspconfig') +247.239 000.098 000.098: require('mason-lspconfig.settings') +247.367 000.107 000.107: require('mason-lspconfig.lspconfig_hook') +247.717 000.343 000.343: require('lspconfig.util') +247.999 000.096 000.096: require('mason-core.functional.table') +248.100 000.356 000.260: require('mason-lspconfig.mappings.server') +248.444 000.109 000.109: require('mason-core.async') +248.538 000.084 000.084: require('mason-core.async.uv') +248.552 000.314 000.121: require('mason-core.fs') +248.651 000.092 000.092: require('mason-core.optional') +248.748 000.089 000.089: require('mason-core.EventEmitter') +248.943 000.189 000.189: require('mason-registry.index') +248.967 000.858 000.174: require('mason-registry') +249.068 000.094 000.094: require('mason-lspconfig.server_config_extensions') +249.236 000.119 000.119: require('lspconfig.configs') +249.356 000.112 000.112: require('lspconfig.server_configurations.omnisharp') +249.701 000.098 000.098: require('mason-lspconfig.ensure_installed') +250.043 000.099 000.099: require('mason-core.result') +250.531 000.264 000.264: require('mason-core.process') +250.642 000.095 000.095: require('mason-core.functional.relation') +250.743 000.090 000.090: require('mason-core.functional.logic') +250.762 000.589 000.140: require('mason-core.spawn') +250.889 000.119 000.119: require('mason-core.receipt') +251.006 000.101 000.101: require('mason-core.functional.string') +251.040 000.990 000.181: require('mason-core.installer.context') +251.152 000.105 000.105: require('mason-core.installer.linker') +251.255 000.096 000.096: require('mason-core.async.control') +251.263 001.435 000.145: require('mason-core.installer') +251.392 000.124 000.124: require('mason-core.installer.handle') +251.882 000.093 000.093: require('mason-core.managers.powershell') +251.892 000.198 000.105: require('mason-core.fetch') +251.896 000.286 000.089: require('mason-core.managers.cargo.client') +251.931 000.430 000.143: require('mason-core.managers.cargo') +252.157 000.220 000.220: require('mason-core.managers.composer') +252.349 000.184 000.184: require('mason-core.managers.gem') +252.472 000.116 000.116: require('mason-core.managers.git') +252.713 000.124 000.124: require('mason-core.managers.std') +252.826 000.107 000.107: require('mason-core.managers.github.client') +252.842 000.363 000.132: require('mason-core.managers.github') +253.075 000.228 000.228: require('mason-core.managers.go') +253.279 000.192 000.192: require('mason-core.managers.luarocks') +255.465 002.178 002.178: require('mason-core.managers.npm') +255.647 000.171 000.171: require('mason-core.managers.pip3') +255.660 004.254 000.173: require('mason-core.package.version-check') +255.672 005.963 000.150: require('mason-core.package') +255.814 000.120 000.120: require('mason-registry.lua-language-server') +256.247 000.143 000.143: require('mason-registry.clangd') +256.412 000.142 000.142: require('mason-registry.rust-analyzer') +256.636 000.080 000.080: require('mason-core.notify') +256.741 000.092 000.092: require('mason-core.functional.number') +256.804 000.378 000.207: require('mason-lspconfig.api.command') +256.810 017.922 002.017: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +258.334 000.124 000.124: sourcing /tmp/.mount_nvimLES7HE/usr/share/nvim/runtime/plugin/man.lua +258.674 011.862: loading rtp plugins +260.488 000.126 000.126: require('Comment.config') +260.600 000.103 000.103: require('Comment.utils') +260.698 000.091 000.091: require('Comment.opfunc') +260.790 000.085 000.085: require('Comment.extra') +260.805 000.590 000.185: require('Comment.api') +261.303 001.171 000.580: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +262.020 000.084 000.084: require('luasnip.util.types') +262.125 000.095 000.095: require('luasnip.util.ext_opts') +262.226 000.094 000.094: require('luasnip.extras.filetype_functions') +262.320 000.088 000.088: require('luasnip.session') +262.672 000.136 000.136: require('luasnip.util.util') +262.777 000.096 000.096: require('luasnip.nodes.util') +262.872 000.088 000.088: require('luasnip.util.events') +262.889 000.459 000.138: require('luasnip.nodes.node') +263.033 000.092 000.092: require('luasnip.util.extend_decorator') +263.047 000.717 000.166: require('luasnip.nodes.insertNode') +263.389 000.102 000.102: require('luasnip.util.mark') +263.702 000.152 000.152: require('luasnip.nodes.textNode') +264.565 000.754 000.754: require('luasnip.util._builtin_vars') +264.807 001.092 000.338: require('luasnip.util.environ') +264.926 000.108 000.108: require('luasnip.util.pattern_tokenizer') +265.014 000.082 000.082: require('luasnip.util.dict') +265.129 000.108 000.108: require('luasnip.session.snippet_collection') +265.186 001.787 000.246: require('luasnip.nodes.snippet') +265.245 002.193 000.304: require('luasnip.nodes.choiceNode') +265.415 000.135 000.135: require('luasnip.nodes.functionNode') +265.607 000.182 000.182: require('luasnip.nodes.dynamicNode') +265.760 000.145 000.145: require('luasnip.nodes.restoreNode') +265.872 000.104 000.104: require('luasnip.extras') +266.061 000.084 000.084: require('luasnip.util.str') +266.070 000.187 000.103: require('luasnip.extras.fmt') +266.166 000.089 000.089: require('luasnip.extras.expand_conditions') +266.477 000.098 000.098: require('luasnip.util.parser.neovim_ast') +279.924 000.122 000.122: require('luasnip.util.directed_graph') +279.941 013.672 013.452: require('luasnip.util.parser.ast_utils') +280.168 000.093 000.093: require('luasnip.util.functions') +280.187 000.238 000.145: require('luasnip.util.parser.ast_parser') +280.414 000.221 000.221: require('luasnip.util.parser.neovim_parser') +280.432 014.256 000.125: require('luasnip.util.parser') +280.551 000.113 000.113: require('luasnip.nodes.absolute_indexer') +281.168 019.368 000.886: require('luasnip.config') +281.363 019.881 000.514: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +282.264 000.049 000.049: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +283.237 000.123 000.123: require('indent_blankline/utils') +283.246 000.329 000.206: require('indent_blankline') +283.723 000.159 000.159: require('indent_blankline.commands') +283.889 001.158 000.670: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +284.318 000.120 000.120: require('lsp-colors') +284.791 000.644 000.524: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +286.230 001.057 001.057: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +287.117 000.424 000.424: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +287.689 000.109 000.109: require('cmp.utils.api') +287.867 000.085 000.085: require('cmp.types.cmp') +288.082 000.103 000.103: require('cmp.utils.misc') +288.116 000.242 000.139: require('cmp.types.lsp') +288.203 000.080 000.080: require('cmp.types.vim') +288.209 000.511 000.103: require('cmp.types') +288.300 000.087 000.087: require('cmp.utils.highlight') +288.468 000.075 000.075: require('cmp.utils.debug') +288.487 000.180 000.104: require('cmp.utils.autocmd') +289.175 001.687 000.800: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +289.438 000.080 000.080: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +289.877 000.124 000.124: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +290.371 000.202 000.202: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +291.056 000.093 000.093: require('nvim-treesitter.statusline') +291.170 000.105 000.105: require('nvim-treesitter.query_predicates') +291.177 000.314 000.116: require('nvim-treesitter') +292.449 000.351 000.351: require('vim.treesitter.highlighter') +292.800 000.880 000.529: require('nvim-treesitter.highlight') +293.462 002.680 001.486: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +293.983 000.281 000.281: require('treesitter-context') +293.994 000.339 000.058: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +294.391 000.113 000.113: require('nvim-treesitter-refactor') +294.702 000.452 000.339: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +295.066 000.111 000.111: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +295.444 000.082 000.082: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +295.810 000.094 000.094: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +296.594 000.435 000.435: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +296.954 000.060 000.060: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +297.994 000.516 000.516: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +298.775 000.494 000.494: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +299.392 000.369 000.369: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +300.231 000.595 000.595: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +300.559 000.031 000.031: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +300.840 000.045 000.045: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +302.316 010.862: loading packages +304.000 000.477 000.477: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +308.385 005.527 005.050: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +309.211 000.138 000.138: require('cmp.utils.char') +309.226 000.246 000.108: require('cmp.utils.str') +309.320 000.084 000.084: require('cmp.utils.pattern') +309.610 000.079 000.079: require('cmp.utils.buffer') +309.623 000.201 000.121: require('cmp.utils.keymap') +309.635 000.307 000.107: require('cmp.utils.feedkeys') +309.744 000.104 000.104: require('cmp.utils.async') +309.917 000.078 000.078: require('cmp.utils.cache') +309.929 000.177 000.100: require('cmp.context') +310.244 000.102 000.102: require('cmp.config.mapping') +310.511 000.110 000.110: require('cmp.config.compare') +310.519 000.263 000.153: require('cmp.config.default') +310.547 000.500 000.136: require('cmp.config') +310.761 000.084 000.084: require('cmp.matcher') +310.780 000.227 000.142: require('cmp.entry') +310.799 000.864 000.138: require('cmp.source') +310.988 000.084 000.084: require('cmp.utils.event') +311.203 000.111 000.111: require('cmp.utils.window') +311.211 000.215 000.103: require('cmp.view.docs_view') +311.357 000.142 000.142: require('cmp.view.custom_entries_view') +311.490 000.126 000.126: require('cmp.view.wildmenu_entries_view') +311.604 000.107 000.107: require('cmp.view.native_entries_view') +311.710 000.100 000.100: require('cmp.view.ghost_text_view') +311.727 000.924 000.150: require('cmp.view') +311.803 002.979 000.272: require('cmp.core') +312.217 000.087 000.087: require('cmp.config.sources') +312.306 000.080 000.080: require('cmp.config.window') +312.410 003.722 000.577: require('cmp') +312.773 000.080 000.080: require('cmp_buffer.timer') +312.784 000.190 000.110: require('cmp_buffer.buffer') +312.790 000.291 000.101: require('cmp_buffer.source') +312.794 000.377 000.086: require('cmp_buffer') +312.824 004.222 000.123: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +313.238 000.172 000.172: require('cmp_cmdline') +313.309 000.311 000.139: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +313.744 000.113 000.113: require('cmp_nvim_lsp.source') +313.752 000.215 000.102: require('cmp_nvim_lsp') +313.803 000.339 000.125: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +314.151 000.135 000.135: require('cmp_path') +314.182 000.229 000.095: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +314.508 000.108 000.108: require('cmp_luasnip') +314.576 000.248 000.140: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +314.766 001.573: loading after plugins +314.793 000.027: inits 3 +314.807 000.013: reading ShaDa +315.224 000.089 000.089: require('luasnip.loaders._caches') +315.359 000.126 000.126: require('luasnip.util.path') +315.478 000.111 000.111: require('luasnip.loaders.util') +315.758 000.127 000.127: require('luasnip.loaders') +315.808 000.320 000.193: require('luasnip') +315.817 000.790 000.144: require('luasnip.loaders.from_lua') +316.103 000.118 000.118: require('luasnip.nodes.snippetProxy') +316.113 000.248 000.130: require('luasnip.loaders.from_snipmate') +316.273 000.116 000.116: require('luasnip.loaders.from_vscode') +316.685 000.723: opening buffers +316.958 000.273: BufEnter autocommands +316.964 000.006: editing files in windows +332.727 000.884 000.884: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.446 001.446: --- NVIM STARTING --- +034.391 032.946: event init +053.253 018.862: early init +055.138 001.885: locale set +061.173 006.035: init first window +072.093 010.921: inits 1 +072.119 000.025: window checked +072.127 000.008: parsing arguments +084.299 000.253 000.253: require('vim.shared') +084.825 000.245 000.245: require('vim._meta') +084.838 000.515 000.270: require('vim._editor') +084.846 000.907 000.138: require('vim._init_packages') +084.854 011.820: init lua interpreter +085.014 000.160: expanding arguments +086.871 001.857: inits 2 +088.296 001.425: init highlight +088.307 000.011: waiting for UI +091.281 002.974: done waiting for UI +091.320 000.039: init screen for UI +091.587 000.268: init default mappings +091.617 000.029: init default autocommands +105.862 004.615 004.615: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/ftplugin.vim +109.042 001.072 001.072: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/indent.vim +109.527 000.058 000.058: sourcing /usr/share/nvim/archlinux.vim +109.553 000.203 000.145: sourcing /etc/xdg/nvim/sysinit.vim +124.517 008.169 008.169: require('keys') +127.624 003.092 003.092: require('opts') +131.344 000.876 000.876: require('packer.util') +131.441 003.319 002.443: require('packer') +134.792 001.317 001.317: require('packer.log') +134.809 002.095 000.778: require('packer.async') +135.940 000.481 000.481: require('packer.result') +135.957 001.143 000.661: require('packer.jobs') +135.990 004.473 001.236: require('packer.plugin_utils') +137.171 001.140 001.140: require('packer.snapshot') +138.112 010.477 001.545: require('pack') +174.631 004.832 004.832: require('vim.treesitter.language') +174.731 034.723 029.891: require('vim.treesitter.query') +182.498 001.394 001.394: require('vim.treesitter.languagetree') +182.620 003.179 001.784: require('vim.treesitter') +182.807 005.430 002.251: require('nvim-treesitter.parsers') +183.323 000.510 000.510: require('nvim-treesitter.utils') +183.337 007.243 001.303: require('nvim-treesitter.ts_utils') +183.347 008.606 001.362: require('nvim-treesitter.tsrange') +183.675 000.325 000.325: require('nvim-treesitter.caching') +183.693 044.437 000.783: require('nvim-treesitter.query') +183.713 045.495 001.058: require('nvim-treesitter.configs') +185.283 000.496 000.496: require('nvim-treesitter.info') +185.901 000.611 000.611: require('nvim-treesitter.shell_command_selectors') +185.950 002.216 001.109: require('nvim-treesitter.install') +226.316 088.194 040.483: require('plugins.treesitter') +228.281 000.510 000.510: require('telescope._extensions') +228.291 001.388 000.878: require('telescope') +233.980 000.661 000.661: require('plenary.bit') +234.407 000.418 000.418: require('plenary.functional') +234.465 000.034 000.034: require('ffi') +234.502 002.597 001.485: require('plenary.path') +234.518 003.286 000.689: require('plenary.strings') +234.981 000.459 000.459: require('telescope.deprecated') +237.389 000.899 000.899: require('plenary.log') +237.465 001.393 000.494: require('telescope.log') +239.791 000.910 000.910: require('plenary.job') +240.261 000.462 000.462: require('telescope.state') +240.275 002.804 001.432: require('telescope.utils') +240.286 005.300 001.103: require('telescope.sorters') +240.377 000.064 000.064: require('vim.inspect') +240.801 000.009 000.009: require('vim.F') +243.617 013.288 004.171: require('telescope.config') +245.047 000.635 000.635: require('plenary.window.border') +245.396 000.343 000.343: require('plenary.window') +245.741 000.339 000.339: require('plenary.popup.utils') +245.751 002.123 000.807: require('plenary.popup') +246.288 000.534 000.534: require('telescope.pickers.scroller') +246.712 000.418 000.418: require('telescope.actions.state') +247.221 000.504 000.504: require('telescope.actions.utils') +248.426 000.575 000.575: require('telescope.actions.mt') +248.453 001.226 000.652: require('telescope.actions.set') +249.553 000.570 000.570: require('telescope.config.resolve') +249.638 001.181 000.611: require('telescope.pickers.entry_display') +250.094 000.451 000.451: require('telescope.from_entry') +250.351 022.055 002.330: require('telescope.actions') +254.012 000.350 000.350: require('plenary.tbl') +254.026 000.776 000.426: require('plenary.vararg.rotate') +254.030 001.103 000.327: require('plenary.vararg') +254.379 000.345 000.345: require('plenary.errors') +254.392 001.900 000.451: require('plenary.async.async') +254.792 000.396 000.396: require('plenary.async.structs') +254.807 002.825 000.529: require('plenary.async.control') +257.266 001.853 001.853: require('telescope.make_entry') +258.923 000.455 000.455: require('plenary.async.util') +258.934 000.802 000.347: require('plenary.async.tests') +258.939 001.187 000.385: require('plenary.async') +258.944 001.672 000.485: require('telescope.finders.async_static_finder') +260.499 000.373 000.373: require('plenary.class') +260.528 001.112 000.739: require('telescope._') +260.533 001.586 000.474: require('telescope.finders.async_oneshot_finder') +261.012 000.476 000.476: require('telescope.finders.async_job_finder') +261.026 006.214 000.628: require('telescope.finders') +263.707 000.618 000.618: require('telescope.debounce') +264.575 000.861 000.861: require('telescope.mappings') +265.147 000.563 000.563: require('telescope.pickers.highlights') +265.602 000.448 000.448: require('telescope.pickers.window') +266.839 000.597 000.597: require('telescope.algos.linked_list') +266.852 001.244 000.647: require('telescope.entry_manager') +267.303 000.447 000.447: require('telescope.pickers.multi') +267.343 006.314 002.133: require('telescope.pickers') +267.363 016.250 000.898: require('telescope.builtin.__lsp') +267.438 017.081 000.831: require('telescope.builtin') +268.963 000.874 000.874: require('fzf_lib') +268.976 001.531 000.657: require('telescope._extensions.fzf') +271.538 000.669 000.669: require('telescope._extensions.file_browser.utils') +271.680 002.230 001.561: require('telescope._extensions.file_browser.actions') +273.005 000.728 000.728: require('telescope._extensions.file_browser.make_entry') +274.099 001.086 001.086: require('plenary.scandir') +274.156 002.470 000.656: require('telescope._extensions.file_browser.finders') +274.619 000.457 000.457: require('telescope._extensions.file_browser.picker') +275.155 000.530 000.530: require('telescope._extensions.file_browser.config') +275.162 006.170 000.482: require('telescope._extensions.file_browser') +278.191 000.015 000.015: require('vim.keymap') +278.481 052.148 003.907: require('plugins.telescope') +285.455 000.308 000.308: require('notify.util.queue') +285.467 000.754 000.445: require('notify.util') +285.896 000.425 000.425: require('notify.config.highlights') +285.906 001.633 000.454: require('notify.config') +286.199 000.289 000.289: require('notify.stages') +286.532 000.328 000.328: require('notify.service.notification') +287.750 000.370 000.370: require('notify.animate.spring') +287.757 000.655 000.286: require('notify.animate') +287.764 001.227 000.571: require('notify.windows') +289.020 000.462 000.462: require('notify.service.buffer.highlights') +289.029 000.888 000.426: require('notify.service.buffer') +289.034 001.267 000.380: require('notify.service') +289.541 000.504 000.504: require('notify.stages.util') +289.551 005.996 000.749: require('notify') +289.891 000.337 000.337: require('nvim-tree.iterators.node-iterator') +289.949 007.136 000.803: require('nvim-tree.utils') +289.961 007.521 000.385: require('nvim-tree.events') +291.151 000.375 000.375: require('nvim-tree.log') +291.600 000.442 000.442: require('nvim-tree.git.utils') +292.069 000.463 000.463: require('nvim-tree.git.runner') +292.502 000.427 000.427: require('nvim-tree.watcher') +292.512 002.201 000.494: require('nvim-tree.git') +292.881 000.365 000.365: require('nvim-tree.explorer.watch') +293.219 000.332 000.332: require('nvim-tree.explorer.common') +293.979 000.387 000.387: require('nvim-tree.explorer.node-builders') +294.448 000.427 000.427: require('nvim-tree.explorer.sorters') +294.804 000.350 000.350: require('nvim-tree.explorer.filters') +296.091 000.838 000.838: require('nvim-tree.view') +296.102 001.293 000.455: require('nvim-tree.live-filter') +296.108 002.883 000.427: require('nvim-tree.explorer.explore') +296.528 000.417 000.417: require('nvim-tree.explorer.reload') +296.536 006.571 000.373: require('nvim-tree.explorer') +296.542 014.417 000.324: require('nvim-tree.core') +297.024 000.478 000.478: require('nvim-tree.diagnostics') +297.445 000.416 000.416: require('nvim-tree.renderer.components.padding') +297.856 000.406 000.406: require('nvim-tree.renderer.components.icons') +298.237 000.375 000.375: require('nvim-tree.renderer.components.full-name') +298.610 000.367 000.367: require('nvim-tree.renderer.help') +299.064 000.448 000.448: require('nvim-tree.renderer.components.git') +299.738 000.670 000.670: require('nvim-tree.renderer.builder') +300.117 000.372 000.372: require('nvim-tree.marks') +300.132 018.530 000.582: require('nvim-tree.renderer') +300.461 000.320 000.320: require('nvim-tree.actions.tree-modifiers.collapse-all') +300.771 000.305 000.305: require('nvim-tree.actions.root.dir-up') +301.187 000.412 000.412: require('nvim-tree.actions.root.change-dir') +301.543 000.350 000.350: require('nvim-tree.actions.reloaders.reloaders') +301.898 000.348 000.348: require('nvim-tree.actions.finders.find-file') +301.903 020.827 000.561: require('nvim-tree.lib') +302.310 000.402 000.402: require('nvim-tree.colors') +302.938 000.622 000.622: require('nvim-tree.legacy') +303.510 000.566 000.566: require('nvim-tree.actions.fs.copy-paste') +304.307 000.377 000.377: require('nvim-tree.actions.tree-modifiers.expand-all') +304.608 000.295 000.295: require('nvim-tree.actions.tree-modifiers.toggles') +305.033 000.418 000.418: require('nvim-tree.actions.fs.create-file') +305.373 000.335 000.335: require('nvim-tree.actions.fs.rename-file') +305.812 000.433 000.433: require('nvim-tree.actions.fs.trash') +306.212 000.394 000.394: require('nvim-tree.actions.fs.remove-file') +306.534 000.316 000.316: require('nvim-tree.actions.moves.parent') +306.873 000.333 000.333: require('nvim-tree.actions.moves.sibling') +307.195 000.316 000.316: require('nvim-tree.actions.moves.item') +307.593 000.389 000.389: require('nvim-tree.actions.finders.search-node') +307.893 000.293 000.293: require('nvim-tree.actions.node.run-command') +308.255 000.357 000.357: require('nvim-tree.actions.node.file-popup') +308.639 000.379 000.379: require('nvim-tree.actions.node.system-open') +308.972 000.327 000.327: require('nvim-tree.marks.bulk-move') +308.979 005.461 000.499: require('nvim-tree.actions.dispatch') +309.002 030.359 002.482: require('nvim-tree') +309.279 000.272 000.272: require('nvim-tree.config') +313.941 000.732 000.732: require('nvim-tree.actions') +314.588 000.636 000.636: require('nvim-tree.actions.node.open-file') +319.150 000.373 000.373: require('nvim-tree.marks.navigation') +319.161 000.910 000.538: require('nvim-tree.api') +319.173 001.467 000.556: require('nvim-tree.keymap') +321.363 001.634 001.634: require('nvim-web-devicons') +325.370 046.882 011.781: require('plugins.nvim-tree') +326.951 000.407 000.407: require('lualine_require') +327.467 001.916 001.508: require('lualine') +327.617 000.143 000.143: require('plugins.linecolor') +332.743 000.275 000.275: require('lualine.utils.mode') +339.312 013.933 011.599: require('plugins.lualine') +339.349 229.696 006.802: sourcing /home/sxrdusr/.config/nvim/init.lua +339.368 012.165: sourcing vimrc file(s) +339.660 000.053 000.053: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +348.941 007.971 007.971: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/filetype.lua +350.389 001.116 001.116: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/filetype.vim +352.816 000.289 000.289: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/syntax/synload.vim +353.026 001.998 001.709: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/syntax/syntax.vim +362.102 002.096 002.096: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/gzip.vim +362.366 000.082 000.082: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/health.vim +365.926 002.326 002.326: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +366.374 003.940 001.614: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/matchit.vim +366.845 000.408 000.408: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/matchparen.vim +366.988 000.075 000.075: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/netrwPlugin.vim +367.396 000.024 000.024: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +367.417 000.366 000.342: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/rplugin.vim +367.690 000.199 000.199: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/shada.vim +367.917 000.107 000.107: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/spellfile.vim +368.083 000.077 000.077: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/tarPlugin.vim +368.210 000.061 000.061: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/tohtml.vim +368.322 000.049 000.049: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/tutor.vim +369.032 000.646 000.646: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/zipPlugin.vim +369.289 000.036 000.036: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +376.726 005.767 005.767: require('lspsaga') +378.402 000.532 000.532: require('lspsaga.window') +378.422 001.147 000.615: require('lspsaga.libs') +389.942 001.342 001.342: require('vim.lsp.log') +392.272 002.318 002.318: require('vim.lsp.protocol') +401.933 003.948 003.948: require('vim.lsp._snippet') +403.138 001.193 001.193: require('vim.highlight') +403.242 010.961 005.820: require('vim.lsp.util') +403.387 018.830 004.210: require('vim.lsp.handlers') +405.766 002.373 002.373: require('vim.lsp.rpc') +407.189 001.413 001.413: require('vim.lsp.sync') +409.652 002.454 002.454: require('vim.lsp.buf') +410.617 000.956 000.956: require('vim.lsp.diagnostic') +411.642 001.017 001.017: require('vim.lsp.codelens') +411.828 032.776 005.732: require('vim.lsp') +412.130 000.294 000.294: require('lspsaga.wrap') +412.144 033.717 000.648: require('lspsaga.codeaction') +412.193 035.457 000.593: require('lspsaga.lightbulb') +412.561 000.325 000.325: require('lspsaga.lspkind') +413.496 000.317 000.317: require('mason-core.path') +413.516 000.581 000.264: require('mason.settings') +414.437 000.214 000.214: require('mason-core.functional.data') +414.448 000.531 000.317: require('mason-core.functional.function') +414.490 000.970 000.440: require('mason-core.platform') +414.496 001.923 000.371: require('mason') +415.290 000.369 000.369: require('mason-core.functional') +415.678 000.368 000.368: require('mason-core.functional.list') +415.717 001.197 000.461: require('mason.api.command') +416.606 000.463 000.463: require('mason-core.log') +416.615 000.893 000.430: require('mason-lspconfig') +416.821 000.202 000.202: require('mason-lspconfig.settings') +417.142 000.303 000.303: require('mason-lspconfig.lspconfig_hook') +418.153 001.006 001.006: require('lspconfig.util') +418.901 000.238 000.238: require('mason-core.functional.table') +419.004 000.655 000.418: require('mason-lspconfig.mappings.server') +420.276 000.481 000.481: require('mason-core.async') +420.497 000.214 000.214: require('mason-core.async.uv') +420.511 001.074 000.379: require('mason-core.fs') +420.786 000.271 000.271: require('mason-core.optional') +421.104 000.313 000.313: require('mason-core.EventEmitter') +421.522 000.412 000.412: require('mason-registry.index') +421.542 002.532 000.462: require('mason-registry') +421.738 000.191 000.191: require('mason-lspconfig.server_config_extensions') +422.345 000.601 000.601: require('lspconfig.configs') +422.688 000.337 000.337: require('lspconfig.server_configurations.omnisharp') +422.997 000.230 000.230: require('mason-lspconfig.ensure_installed') +424.154 000.316 000.316: require('mason-core.result') +425.593 000.568 000.568: require('mason-core.process') +425.846 000.244 000.244: require('mason-core.functional.relation') +426.105 000.249 000.249: require('mason-core.functional.logic') +426.120 001.428 000.367: require('mason-core.spawn') +426.454 000.329 000.329: require('mason-core.receipt') +426.731 000.262 000.262: require('mason-core.functional.string') +426.762 002.602 000.582: require('mason-core.installer.context') +427.049 000.282 000.282: require('mason-core.installer.linker') +427.332 000.278 000.278: require('mason-core.async.control') +427.342 003.909 000.431: require('mason-core.installer') +427.790 000.445 000.445: require('mason-core.installer.handle') +429.210 000.257 000.257: require('mason-core.managers.powershell') +429.217 000.596 000.339: require('mason-core.fetch') +429.221 000.800 000.204: require('mason-core.managers.cargo.client') +429.295 001.234 000.434: require('mason-core.managers.cargo') +429.685 000.384 000.384: require('mason-core.managers.composer') +430.162 000.472 000.472: require('mason-core.managers.gem') +430.485 000.316 000.316: require('mason-core.managers.git') +431.314 000.415 000.415: require('mason-core.managers.std') +431.638 000.318 000.318: require('mason-core.managers.github.client') +431.650 001.160 000.427: require('mason-core.managers.github') +432.174 000.520 000.520: require('mason-core.managers.go') +432.583 000.402 000.402: require('mason-core.managers.luarocks') +432.980 000.391 000.391: require('mason-core.managers.npm') +433.412 000.426 000.426: require('mason-core.managers.pip3') +433.421 005.623 000.317: require('mason-core.package.version-check') +433.431 010.428 000.451: require('mason-core.package') +433.830 000.366 000.366: require('mason-registry.lua-language-server') +434.422 000.329 000.329: require('mason-registry.clangd') +434.839 000.397 000.397: require('mason-registry.rust-analyzer') +435.484 000.210 000.210: require('mason-core.notify') +435.716 000.224 000.224: require('mason-core.functional.number') +435.772 000.908 000.473: require('mason-lspconfig.api.command') +435.779 066.357 002.308: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +439.475 002.338 002.338: sourcing /tmp/.mount_nvimiDDPJE/usr/share/nvim/runtime/plugin/man.lua +439.843 012.502: loading rtp plugins +442.029 000.114 000.114: require('Comment.config') +442.422 000.385 000.385: require('Comment.utils') +442.685 000.256 000.256: require('Comment.opfunc') +442.851 000.160 000.160: require('Comment.extra') +442.866 001.436 000.520: require('Comment.api') +443.317 001.976 000.541: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +444.238 000.106 000.106: require('luasnip.util.types') +444.437 000.191 000.191: require('luasnip.util.ext_opts') +444.592 000.150 000.150: require('luasnip.extras.filetype_functions') +444.701 000.103 000.103: require('luasnip.session') +445.990 000.652 000.652: require('luasnip.util.util') +446.208 000.211 000.211: require('luasnip.nodes.util') +446.297 000.083 000.083: require('luasnip.util.events') +446.313 001.341 000.396: require('luasnip.nodes.node') +446.475 000.118 000.118: require('luasnip.util.extend_decorator') +446.488 001.780 000.321: require('luasnip.nodes.insertNode') +447.282 000.230 000.230: require('luasnip.util.mark') +448.571 000.146 000.146: require('luasnip.nodes.textNode') +449.775 000.953 000.953: require('luasnip.util._builtin_vars') +450.037 001.457 000.505: require('luasnip.util.environ') +450.246 000.202 000.202: require('luasnip.util.pattern_tokenizer') +450.380 000.128 000.128: require('luasnip.util.dict') +450.730 000.343 000.343: require('luasnip.session.snippet_collection') +450.829 003.540 001.263: require('luasnip.nodes.snippet') +450.849 004.357 000.587: require('luasnip.nodes.choiceNode') +451.126 000.254 000.254: require('luasnip.nodes.functionNode') +451.619 000.452 000.452: require('luasnip.nodes.dynamicNode') +451.977 000.351 000.351: require('luasnip.nodes.restoreNode') +452.271 000.288 000.288: require('luasnip.extras') +452.718 000.171 000.171: require('luasnip.util.str') +452.728 000.449 000.278: require('luasnip.extras.fmt') +452.808 000.077 000.077: require('luasnip.extras.expand_conditions') +453.711 000.215 000.215: require('luasnip.util.parser.neovim_ast') +458.522 000.207 000.207: require('luasnip.util.directed_graph') +458.539 005.513 005.091: require('luasnip.util.parser.ast_utils') +459.047 000.120 000.120: require('luasnip.util.functions') +459.063 000.520 000.400: require('luasnip.util.parser.ast_parser') +459.638 000.572 000.572: require('luasnip.util.parser.neovim_parser') +459.651 006.836 000.232: require('luasnip.util.parser') +459.756 000.101 000.101: require('luasnip.nodes.absolute_indexer') +460.442 016.621 001.125: require('luasnip.config') +460.594 017.096 000.475: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +461.486 000.050 000.050: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +463.733 000.544 000.544: require('indent_blankline/utils') +463.745 001.635 001.091: require('indent_blankline') +464.372 000.237 000.237: require('indent_blankline.commands') +464.543 002.607 000.734: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +465.254 000.402 000.402: require('lsp-colors') +465.702 000.898 000.496: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +466.844 000.759 000.759: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +467.709 000.416 000.416: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +468.674 000.425 000.425: require('cmp.utils.api') +469.191 000.266 000.266: require('cmp.types.cmp') +470.001 000.463 000.463: require('cmp.utils.misc') +470.060 000.862 000.399: require('cmp.types.lsp') +470.289 000.224 000.224: require('cmp.types.vim') +470.295 001.614 000.262: require('cmp.types') +470.561 000.263 000.263: require('cmp.utils.highlight') +471.101 000.238 000.238: require('cmp.utils.debug') +471.116 000.550 000.312: require('cmp.utils.autocmd') +471.737 003.659 000.807: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +472.001 000.083 000.083: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +472.457 000.142 000.142: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +473.092 000.330 000.330: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +474.378 000.356 000.356: require('nvim-treesitter.statusline') +474.870 000.486 000.486: require('nvim-treesitter.query_predicates') +474.878 001.286 000.445: require('nvim-treesitter') +479.565 003.214 003.214: require('vim.treesitter.highlighter') +479.952 004.226 001.012: require('nvim-treesitter.highlight') +480.541 007.035 001.523: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +482.236 001.440 001.440: require('treesitter-context') +482.247 001.482 000.042: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +483.082 000.547 000.547: require('nvim-treesitter-refactor') +483.498 000.991 000.444: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +483.892 000.124 000.124: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +484.296 000.085 000.085: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +484.629 000.094 000.094: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +485.454 000.430 000.430: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +485.825 000.061 000.061: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +486.950 000.637 000.637: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +487.796 000.557 000.557: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +488.430 000.375 000.375: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +489.286 000.600 000.600: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +489.580 000.030 000.030: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +489.862 000.046 000.046: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +491.430 011.024: loading packages +493.086 000.470 000.470: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +497.379 005.411 004.941: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +500.257 000.501 000.501: require('cmp.utils.char') +500.273 000.919 000.418: require('cmp.utils.str') +500.546 000.269 000.269: require('cmp.utils.pattern') +501.678 000.247 000.247: require('cmp.utils.buffer') +501.690 000.802 000.554: require('cmp.utils.keymap') +501.702 001.149 000.348: require('cmp.utils.feedkeys') +502.073 000.368 000.368: require('cmp.utils.async') +502.672 000.260 000.260: require('cmp.utils.cache') +502.681 000.601 000.341: require('cmp.context') +504.215 000.421 000.421: require('cmp.config.mapping') +505.148 000.576 000.576: require('cmp.config.compare') +505.155 000.931 000.355: require('cmp.config.default') +505.188 001.869 000.517: require('cmp.config') +506.646 000.505 000.505: require('cmp.matcher') +506.659 001.467 000.962: require('cmp.entry') +506.671 003.987 000.652: require('cmp.source') +507.468 000.270 000.270: require('cmp.utils.event') +508.541 000.609 000.609: require('cmp.utils.window') +508.550 001.039 000.430: require('cmp.view.docs_view') +509.426 000.873 000.873: require('cmp.view.custom_entries_view') +510.050 000.618 000.618: require('cmp.view.wildmenu_entries_view') +510.582 000.526 000.526: require('cmp.view.native_entries_view') +510.984 000.394 000.394: require('cmp.view.ghost_text_view') +511.006 004.332 000.612: require('cmp.view') +511.082 012.635 001.010: require('cmp.core') +511.722 000.253 000.253: require('cmp.config.sources') +511.975 000.245 000.245: require('cmp.config.window') +512.091 014.421 001.288: require('cmp') +513.095 000.131 000.131: require('cmp_buffer.timer') +513.109 000.631 000.500: require('cmp_buffer.buffer') +513.124 000.906 000.274: require('cmp_buffer.source') +513.128 001.032 000.126: require('cmp_buffer') +513.165 015.538 000.086: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +513.841 000.456 000.456: require('cmp_cmdline') +513.874 000.532 000.076: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +514.568 000.254 000.254: require('cmp_nvim_lsp.source') +514.576 000.508 000.254: require('cmp_nvim_lsp') +514.632 000.604 000.096: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +515.335 000.509 000.509: require('cmp_path') +515.377 000.588 000.079: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +515.975 000.377 000.377: require('cmp_luasnip') +516.048 000.514 000.137: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +516.202 001.586: loading after plugins +516.230 000.028: inits 3 +516.270 000.040: reading ShaDa +516.927 000.117 000.117: require('luasnip.loaders._caches') +517.217 000.282 000.282: require('luasnip.util.path') +517.595 000.372 000.372: require('luasnip.loaders.util') +518.720 000.249 000.249: require('luasnip.loaders') +518.763 001.161 000.912: require('luasnip') +518.773 002.250 000.318: require('luasnip.loaders.from_lua') +519.505 000.161 000.161: require('luasnip.nodes.snippetProxy') +519.520 000.565 000.403: require('luasnip.loaders.from_snipmate') +519.981 000.416 000.416: require('luasnip.loaders.from_vscode') +521.013 001.514: opening buffers +521.250 000.236: BufEnter autocommands +521.256 000.007: editing files in windows +541.936 005.547 005.547: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.130 001.130: --- NVIM STARTING --- +028.662 027.532: event init +045.564 016.901: early init +047.354 001.791: locale set +053.076 005.722: init first window +063.419 010.343: inits 1 +063.444 000.025: window checked +063.452 000.008: parsing arguments +075.453 000.269 000.269: require('vim.shared') +075.970 000.243 000.243: require('vim._meta') +075.984 000.508 000.265: require('vim._editor') +075.992 000.906 000.129: require('vim._init_packages') +075.999 011.641: init lua interpreter +076.163 000.165: expanding arguments +078.127 001.963: inits 2 +079.512 001.385: init highlight +079.523 000.011: waiting for UI +082.429 002.906: done waiting for UI +082.481 000.051: init screen for UI +082.734 000.253: init default mappings +082.761 000.027: init default autocommands +096.037 004.070 004.070: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/ftplugin.vim +098.005 000.870 000.870: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/indent.vim +098.228 000.026 000.026: sourcing /usr/share/nvim/archlinux.vim +098.239 000.082 000.056: sourcing /etc/xdg/nvim/sysinit.vim +106.098 004.759 004.759: require('keys') +108.429 002.320 002.320: require('opts') +110.994 000.525 000.525: require('packer.util') +111.051 002.259 001.734: require('packer') +113.022 000.703 000.703: require('packer.log') +113.033 001.190 000.487: require('packer.async') +114.010 000.399 000.399: require('packer.result') +114.019 000.983 000.584: require('packer.jobs') +114.037 002.940 000.767: require('packer.plugin_utils') +114.709 000.650 000.650: require('packer.snapshot') +115.767 007.330 001.481: require('pack') +122.285 001.983 001.983: require('vim.treesitter.language') +122.321 004.812 002.828: require('vim.treesitter.query') +127.167 001.367 001.367: require('vim.treesitter.languagetree') +127.282 002.610 001.243: require('vim.treesitter') +127.465 003.928 001.318: require('nvim-treesitter.parsers') +127.973 000.502 000.502: require('nvim-treesitter.utils') +127.986 005.169 000.738: require('nvim-treesitter.ts_utils') +127.995 005.670 000.501: require('nvim-treesitter.tsrange') +128.361 000.362 000.362: require('nvim-treesitter.caching') +128.381 011.616 000.772: require('nvim-treesitter.query') +128.399 012.541 000.926: require('nvim-treesitter.configs') +129.960 000.492 000.492: require('nvim-treesitter.info') +130.546 000.578 000.578: require('nvim-treesitter.shell_command_selectors') +130.590 002.170 001.100: require('nvim-treesitter.install') +169.623 053.848 039.137: require('plugins.treesitter') +170.997 000.453 000.453: require('telescope._extensions') +171.008 000.966 000.513: require('telescope') +176.579 000.682 000.682: require('plenary.bit') +177.000 000.412 000.412: require('plenary.functional') +177.065 000.045 000.045: require('ffi') +177.103 002.623 001.485: require('plenary.path') +177.117 003.190 000.567: require('plenary.strings') +177.539 000.418 000.418: require('telescope.deprecated') +179.950 000.907 000.907: require('plenary.log') +180.034 001.388 000.481: require('telescope.log') +182.278 000.962 000.962: require('plenary.job') +182.711 000.423 000.423: require('telescope.state') +182.730 002.690 001.304: require('telescope.utils') +182.741 005.196 001.118: require('telescope.sorters') +182.830 000.070 000.070: require('vim.inspect') +183.420 000.009 000.009: require('vim.F') +186.156 013.120 004.238: require('telescope.config') +187.621 000.692 000.692: require('plenary.window.border') +187.974 000.344 000.344: require('plenary.window') +188.373 000.393 000.393: require('plenary.popup.utils') +188.389 002.223 000.794: require('plenary.popup') +188.911 000.516 000.516: require('telescope.pickers.scroller') +189.373 000.455 000.455: require('telescope.actions.state') +189.899 000.520 000.520: require('telescope.actions.utils') +191.115 000.591 000.591: require('telescope.actions.mt') +191.142 001.237 000.646: require('telescope.actions.set') +192.310 000.591 000.591: require('telescope.config.resolve') +192.455 001.309 000.718: require('telescope.pickers.entry_display') +192.880 000.420 000.420: require('telescope.from_entry') +193.232 022.221 002.421: require('telescope.actions') +196.969 000.355 000.355: require('plenary.tbl') +196.980 000.779 000.424: require('plenary.vararg.rotate') +196.983 001.106 000.327: require('plenary.vararg') +197.327 000.340 000.340: require('plenary.errors') +197.336 001.903 000.457: require('plenary.async.async') +197.766 000.426 000.426: require('plenary.async.structs') +197.780 002.921 000.592: require('plenary.async.control') +200.322 001.961 001.961: require('telescope.make_entry') +202.215 000.477 000.477: require('plenary.async.util') +202.224 000.921 000.444: require('plenary.async.tests') +202.229 001.339 000.419: require('plenary.async') +202.234 001.903 000.563: require('telescope.finders.async_static_finder') +204.011 000.466 000.466: require('plenary.class') +204.053 001.282 000.816: require('telescope._') +204.059 001.822 000.540: require('telescope.finders.async_oneshot_finder') +204.571 000.509 000.509: require('telescope.finders.async_job_finder') +204.589 006.805 000.611: require('telescope.finders') +207.500 000.676 000.676: require('telescope.debounce') +208.415 000.901 000.901: require('telescope.mappings') +209.040 000.615 000.615: require('telescope.pickers.highlights') +209.508 000.460 000.460: require('telescope.pickers.window') +210.723 000.587 000.587: require('telescope.algos.linked_list') +210.737 001.223 000.636: require('telescope.entry_manager') +211.200 000.458 000.458: require('telescope.pickers.multi') +211.247 006.653 002.320: require('telescope.pickers') +211.270 017.287 000.908: require('telescope.builtin.__lsp') +211.337 018.097 000.809: require('telescope.builtin') +212.713 000.700 000.700: require('fzf_lib') +212.727 001.383 000.682: require('telescope._extensions.fzf') +215.338 000.735 000.735: require('telescope._extensions.file_browser.utils') +215.473 002.261 001.526: require('telescope._extensions.file_browser.actions') +216.814 000.755 000.755: require('telescope._extensions.file_browser.make_entry') +217.929 001.107 001.107: require('plenary.scandir') +217.978 002.498 000.636: require('telescope._extensions.file_browser.finders') +218.472 000.489 000.489: require('telescope._extensions.file_browser.picker') +219.064 000.585 000.585: require('telescope._extensions.file_browser.config') +219.072 006.331 000.498: require('telescope._extensions.file_browser') +222.320 000.022 000.022: require('vim.keymap') +222.663 053.030 004.011: require('plugins.telescope') +229.348 000.311 000.311: require('notify.util.queue') +229.360 000.746 000.436: require('notify.util') +229.801 000.437 000.437: require('notify.config.highlights') +229.811 001.652 000.469: require('notify.config') +230.096 000.281 000.281: require('notify.stages') +230.429 000.328 000.328: require('notify.service.notification') +231.660 000.387 000.387: require('notify.animate.spring') +231.668 000.673 000.287: require('notify.animate') +231.676 001.241 000.568: require('notify.windows') +232.939 000.468 000.468: require('notify.service.buffer.highlights') +232.950 000.892 000.424: require('notify.service.buffer') +232.955 001.276 000.383: require('notify.service') +233.458 000.500 000.500: require('notify.stages.util') +233.469 005.847 000.570: require('notify') +233.816 000.343 000.343: require('nvim-tree.iterators.node-iterator') +233.876 007.006 000.816: require('nvim-tree.utils') +233.888 007.404 000.398: require('nvim-tree.events') +235.090 000.396 000.396: require('nvim-tree.log') +235.550 000.452 000.452: require('nvim-tree.git.utils') +236.022 000.467 000.467: require('nvim-tree.git.runner') +236.460 000.431 000.431: require('nvim-tree.watcher') +236.471 002.238 000.492: require('nvim-tree.git') +236.846 000.372 000.372: require('nvim-tree.explorer.watch') +237.192 000.340 000.340: require('nvim-tree.explorer.common') +237.942 000.374 000.374: require('nvim-tree.explorer.node-builders') +238.415 000.428 000.428: require('nvim-tree.explorer.sorters') +238.782 000.360 000.360: require('nvim-tree.explorer.filters') +240.087 000.849 000.849: require('nvim-tree.view') +240.099 001.311 000.462: require('nvim-tree.live-filter') +240.104 002.906 000.433: require('nvim-tree.explorer.explore') +240.531 000.423 000.423: require('nvim-tree.explorer.reload') +240.540 006.649 000.370: require('nvim-tree.explorer') +240.546 014.389 000.336: require('nvim-tree.core') +241.036 000.486 000.486: require('nvim-tree.diagnostics') +241.460 000.417 000.417: require('nvim-tree.renderer.components.padding') +241.895 000.429 000.429: require('nvim-tree.renderer.components.icons') +242.283 000.380 000.380: require('nvim-tree.renderer.components.full-name') +242.655 000.366 000.366: require('nvim-tree.renderer.help') +243.131 000.470 000.470: require('nvim-tree.renderer.components.git') +243.809 000.672 000.672: require('nvim-tree.renderer.builder') +244.178 000.362 000.362: require('nvim-tree.marks') +244.193 018.557 000.586: require('nvim-tree.renderer') +244.526 000.323 000.323: require('nvim-tree.actions.tree-modifiers.collapse-all') +244.826 000.294 000.294: require('nvim-tree.actions.root.dir-up') +245.239 000.407 000.407: require('nvim-tree.actions.root.change-dir') +245.597 000.351 000.351: require('nvim-tree.actions.reloaders.reloaders') +245.955 000.351 000.351: require('nvim-tree.actions.finders.find-file') +245.962 020.902 000.617: require('nvim-tree.lib') +246.374 000.408 000.408: require('nvim-tree.colors') +247.007 000.626 000.626: require('nvim-tree.legacy') +247.592 000.578 000.578: require('nvim-tree.actions.fs.copy-paste') +248.402 000.383 000.383: require('nvim-tree.actions.tree-modifiers.expand-all') +248.711 000.302 000.302: require('nvim-tree.actions.tree-modifiers.toggles') +249.141 000.423 000.423: require('nvim-tree.actions.fs.create-file') +249.494 000.346 000.346: require('nvim-tree.actions.fs.rename-file') +249.956 000.455 000.455: require('nvim-tree.actions.fs.trash') +250.366 000.404 000.404: require('nvim-tree.actions.fs.remove-file') +250.696 000.323 000.323: require('nvim-tree.actions.moves.parent') +251.027 000.325 000.325: require('nvim-tree.actions.moves.sibling') +251.358 000.324 000.324: require('nvim-tree.actions.moves.item') +251.755 000.387 000.387: require('nvim-tree.actions.finders.search-node') +252.054 000.293 000.293: require('nvim-tree.actions.node.run-command') +252.422 000.363 000.363: require('nvim-tree.actions.node.file-popup') +252.815 000.387 000.387: require('nvim-tree.actions.node.system-open') +253.155 000.334 000.334: require('nvim-tree.marks.bulk-move') +253.163 005.563 000.514: require('nvim-tree.actions.dispatch') +253.187 030.363 002.286: require('nvim-tree') +253.472 000.281 000.281: require('nvim-tree.config') +258.166 000.718 000.718: require('nvim-tree.actions') +258.838 000.660 000.660: require('nvim-tree.actions.node.open-file') +262.869 000.364 000.364: require('nvim-tree.marks.navigation') +262.880 000.869 000.505: require('nvim-tree.api') +262.891 001.433 000.564: require('nvim-tree.keymap') +264.972 001.417 001.417: require('nvim-web-devicons') +268.994 046.324 011.453: require('plugins.nvim-tree') +270.370 000.316 000.316: require('lualine_require') +270.882 001.704 001.388: require('lualine') +271.018 000.129 000.129: require('plugins.linecolor') +275.708 000.256 000.256: require('lualine.utils.mode') +282.774 013.771 011.683: require('plugins.lualine') +282.808 184.508 003.124: sourcing /home/sxrdusr/.config/nvim/init.lua +282.826 010.535: sourcing vimrc file(s) +283.117 000.051 000.051: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +285.405 000.888 000.888: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/filetype.lua +288.117 002.272 002.272: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/filetype.vim +292.092 000.281 000.281: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/syntax/synload.vim +292.295 003.051 002.770: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/syntax/syntax.vim +300.224 002.091 002.091: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/gzip.vim +300.446 000.070 000.070: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/health.vim +303.966 002.282 002.282: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +304.438 003.923 001.640: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/matchit.vim +304.891 000.386 000.386: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/matchparen.vim +305.113 000.103 000.103: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/netrwPlugin.vim +305.539 000.024 000.024: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +305.560 000.386 000.362: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/rplugin.vim +305.852 000.210 000.210: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/shada.vim +305.972 000.053 000.053: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/spellfile.vim +306.099 000.062 000.062: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/tarPlugin.vim +306.224 000.061 000.061: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/tohtml.vim +306.332 000.045 000.045: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/tutor.vim +307.601 001.207 001.207: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/zipPlugin.vim +307.896 000.038 000.038: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +315.401 005.658 005.658: require('lspsaga') +317.073 000.553 000.553: require('lspsaga.window') +317.093 001.174 000.621: require('lspsaga.libs') +327.566 001.347 001.347: require('vim.lsp.log') +329.533 001.954 001.954: require('vim.lsp.protocol') +335.456 002.092 002.092: require('vim.lsp._snippet') +336.370 000.904 000.904: require('vim.highlight') +336.415 006.873 003.878: require('vim.lsp.util') +336.447 013.200 003.026: require('vim.lsp.handlers') +338.763 002.311 002.311: require('vim.lsp.rpc') +340.121 001.348 001.348: require('vim.lsp.sync') +342.921 002.791 002.791: require('vim.lsp.buf') +344.093 001.161 001.161: require('vim.lsp.diagnostic') +345.202 001.102 001.102: require('vim.lsp.codelens') +345.388 027.654 005.740: require('vim.lsp') +345.692 000.295 000.295: require('lspsaga.wrap') +345.705 028.607 000.659: require('lspsaga.codeaction') +345.751 030.339 000.558: require('lspsaga.lightbulb') +346.108 000.317 000.317: require('lspsaga.lspkind') +346.885 000.249 000.249: require('mason-core.path') +346.905 000.522 000.274: require('mason.settings') +347.804 000.214 000.214: require('mason-core.functional.data') +347.824 000.525 000.310: require('mason-core.functional.function') +347.863 000.954 000.429: require('mason-core.platform') +347.868 001.714 000.238: require('mason') +348.650 000.336 000.336: require('mason-core.functional') +349.056 000.385 000.385: require('mason-core.functional.list') +349.098 001.207 000.486: require('mason.api.command') +349.944 000.489 000.489: require('mason-core.log') +349.953 000.851 000.363: require('mason-lspconfig') +350.166 000.209 000.209: require('mason-lspconfig.settings') +350.488 000.303 000.303: require('mason-lspconfig.lspconfig_hook') +351.357 000.863 000.863: require('lspconfig.util') +352.102 000.240 000.240: require('mason-core.functional.table') +352.205 000.679 000.439: require('mason-lspconfig.mappings.server') +353.344 000.475 000.475: require('mason-core.async') +353.567 000.215 000.215: require('mason-core.async.uv') +353.581 001.068 000.378: require('mason-core.fs') +353.858 000.274 000.274: require('mason-core.optional') +354.125 000.261 000.261: require('mason-core.EventEmitter') +354.540 000.408 000.408: require('mason-registry.index') +354.560 002.349 000.337: require('mason-registry') +354.774 000.194 000.194: require('mason-lspconfig.server_config_extensions') +355.406 000.626 000.626: require('lspconfig.configs') +355.759 000.346 000.346: require('lspconfig.server_configurations.omnisharp') +356.173 000.238 000.238: require('mason-lspconfig.ensure_installed') +357.319 000.316 000.316: require('mason-core.result') +358.773 000.589 000.589: require('mason-core.process') +359.014 000.232 000.232: require('mason-core.functional.relation') +359.271 000.248 000.248: require('mason-core.functional.logic') +359.286 001.434 000.366: require('mason-core.spawn') +359.639 000.348 000.348: require('mason-core.receipt') +359.919 000.265 000.265: require('mason-core.functional.string') +359.992 002.667 000.620: require('mason-core.installer.context') +360.293 000.295 000.295: require('mason-core.installer.linker') +360.573 000.274 000.274: require('mason-core.async.control') +360.584 003.980 000.428: require('mason-core.installer') +361.020 000.432 000.432: require('mason-core.installer.handle') +362.441 000.255 000.255: require('mason-core.managers.powershell') +362.449 000.590 000.334: require('mason-core.fetch') +362.453 000.800 000.210: require('mason-core.managers.cargo.client') +362.485 001.188 000.388: require('mason-core.managers.cargo') +362.937 000.447 000.447: require('mason-core.managers.composer') +363.425 000.481 000.481: require('mason-core.managers.gem') +363.736 000.304 000.304: require('mason-core.managers.git') +364.544 000.414 000.414: require('mason-core.managers.std') +364.866 000.316 000.316: require('mason-core.managers.github.client') +364.879 001.136 000.407: require('mason-core.managers.github') +365.439 000.556 000.556: require('mason-core.managers.go') +365.845 000.399 000.399: require('mason-core.managers.luarocks') +366.240 000.389 000.389: require('mason-core.managers.npm') +366.667 000.421 000.421: require('mason-core.managers.pip3') +366.677 005.650 000.327: require('mason-core.package.version-check') +366.688 010.508 000.446: require('mason-core.package') +367.072 000.351 000.351: require('mason-registry.lua-language-server') +367.593 000.337 000.337: require('mason-registry.clangd') +368.004 000.391 000.391: require('mason-registry.rust-analyzer') +368.654 000.215 000.215: require('mason-core.notify') +368.894 000.232 000.232: require('mason-core.functional.number') +368.937 000.921 000.475: require('mason-lspconfig.api.command') +368.943 060.914 002.513: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +372.883 002.516 002.516: sourcing /tmp/.mount_nvimrmYXl7/usr/share/nvim/runtime/plugin/man.lua +373.092 011.939: loading rtp plugins +375.285 000.120 000.120: require('Comment.config') +375.689 000.396 000.396: require('Comment.utils') +375.957 000.261 000.261: require('Comment.opfunc') +376.127 000.163 000.163: require('Comment.extra') +376.142 001.495 000.555: require('Comment.api') +376.586 002.031 000.535: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +377.477 000.089 000.089: require('luasnip.util.types') +377.675 000.191 000.191: require('luasnip.util.ext_opts') +377.832 000.150 000.150: require('luasnip.extras.filetype_functions') +377.934 000.097 000.097: require('luasnip.session') +379.260 000.652 000.652: require('luasnip.util.util') +379.484 000.217 000.217: require('luasnip.nodes.util') +379.576 000.085 000.085: require('luasnip.util.events') +379.592 001.391 000.437: require('luasnip.nodes.node') +379.758 000.120 000.120: require('luasnip.util.extend_decorator') +379.772 001.831 000.320: require('luasnip.nodes.insertNode') +380.477 000.226 000.226: require('luasnip.util.mark') +381.700 000.190 000.190: require('luasnip.nodes.textNode') +382.881 000.927 000.927: require('luasnip.util._builtin_vars') +383.108 001.398 000.472: require('luasnip.util.environ') +383.314 000.199 000.199: require('luasnip.util.pattern_tokenizer') +383.448 000.127 000.127: require('luasnip.util.dict') +383.802 000.347 000.347: require('luasnip.session.snippet_collection') +383.864 003.380 001.118: require('luasnip.nodes.snippet') +383.885 004.109 000.503: require('luasnip.nodes.choiceNode') +384.209 000.306 000.306: require('luasnip.nodes.functionNode') +384.709 000.453 000.453: require('luasnip.nodes.dynamicNode') +385.091 000.376 000.376: require('luasnip.nodes.restoreNode') +385.380 000.281 000.281: require('luasnip.extras') +385.829 000.173 000.173: require('luasnip.util.str') +385.843 000.455 000.282: require('luasnip.extras.fmt') +385.921 000.074 000.074: require('luasnip.extras.expand_conditions') +386.811 000.218 000.218: require('luasnip.util.parser.neovim_ast') +394.178 000.216 000.216: require('luasnip.util.directed_graph') +394.197 008.074 007.640: require('luasnip.util.parser.ast_utils') +394.712 000.119 000.119: require('luasnip.util.functions') +394.724 000.523 000.404: require('luasnip.util.parser.ast_parser') +395.338 000.610 000.610: require('luasnip.util.parser.neovim_parser') +395.354 009.426 000.219: require('luasnip.util.parser') +395.462 000.103 000.103: require('luasnip.nodes.absolute_indexer') +395.919 018.839 000.897: require('luasnip.config') +396.076 019.310 000.471: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +396.949 000.050 000.050: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +399.137 000.540 000.540: require('indent_blankline/utils') +399.147 001.578 001.038: require('indent_blankline') +399.631 000.228 000.228: require('indent_blankline.commands') +399.796 002.397 000.592: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +400.425 000.323 000.323: require('lsp-colors') +401.069 001.016 000.693: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +402.327 000.871 000.871: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +403.161 000.384 000.384: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +404.040 000.344 000.344: require('cmp.utils.api') +404.538 000.261 000.261: require('cmp.types.cmp') +405.386 000.498 000.498: require('cmp.utils.misc') +405.496 000.948 000.450: require('cmp.types.lsp') +405.726 000.223 000.223: require('cmp.types.vim') +405.732 001.684 000.251: require('cmp.types') +406.002 000.267 000.267: require('cmp.utils.highlight') +406.540 000.242 000.242: require('cmp.utils.debug') +406.556 000.548 000.306: require('cmp.utils.autocmd') +407.084 003.553 000.711: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +407.344 000.081 000.081: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +407.801 000.144 000.144: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +408.480 000.388 000.388: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +409.656 000.348 000.348: require('nvim-treesitter.statusline') +410.199 000.536 000.536: require('nvim-treesitter.query_predicates') +410.209 001.231 000.346: require('nvim-treesitter') +415.282 003.359 003.359: require('vim.treesitter.highlighter') +415.649 004.397 001.038: require('nvim-treesitter.highlight') +416.245 007.349 001.721: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +417.669 001.190 001.190: require('treesitter-context') +417.680 001.230 000.040: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +418.365 000.398 000.398: require('nvim-treesitter-refactor') +418.550 000.610 000.212: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +418.917 000.110 000.110: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +419.292 000.081 000.081: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +419.612 000.090 000.090: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +420.406 000.409 000.409: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +420.761 000.057 000.057: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +421.920 000.679 000.679: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +422.693 000.489 000.489: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +423.304 000.356 000.356: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +424.131 000.577 000.577: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +424.430 000.029 000.029: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +424.709 000.043 000.043: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +426.618 011.192: loading packages +428.473 000.582 000.582: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +435.277 008.051 007.469: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +439.647 000.636 000.636: require('cmp.utils.char') +439.672 001.332 000.696: require('cmp.utils.str') +440.141 000.462 000.462: require('cmp.utils.pattern') +441.991 000.487 000.487: require('cmp.utils.buffer') +442.020 001.349 000.862: require('cmp.utils.keymap') +442.036 001.884 000.535: require('cmp.utils.feedkeys') +442.696 000.654 000.654: require('cmp.utils.async') +443.685 000.436 000.436: require('cmp.utils.cache') +443.699 000.993 000.557: require('cmp.context') +446.228 000.680 000.680: require('cmp.config.mapping') +447.627 000.842 000.842: require('cmp.config.compare') +447.639 001.397 000.555: require('cmp.config.default') +447.677 002.938 000.861: require('cmp.config') +449.991 000.843 000.843: require('cmp.matcher') +450.012 002.328 001.484: require('cmp.entry') +450.031 006.326 001.060: require('cmp.source') +451.346 000.454 000.454: require('cmp.utils.event') +453.138 001.051 001.051: require('cmp.utils.window') +453.154 001.797 000.747: require('cmp.view.docs_view') +454.619 001.457 001.457: require('cmp.view.custom_entries_view') +455.631 001.002 001.002: require('cmp.view.wildmenu_entries_view') +456.455 000.814 000.814: require('cmp.view.native_entries_view') +457.096 000.631 000.631: require('cmp.view.ghost_text_view') +457.135 007.098 000.943: require('cmp.view') +457.324 020.479 001.729: require('cmp.core') +458.114 000.426 000.426: require('cmp.config.sources') +458.585 000.459 000.459: require('cmp.config.window') +458.791 023.106 001.741: require('cmp') +460.357 000.200 000.200: require('cmp_buffer.timer') +460.383 001.018 000.819: require('cmp_buffer.buffer') +460.396 001.462 000.444: require('cmp_buffer.source') +460.403 001.600 000.138: require('cmp_buffer') +460.617 025.003 000.297: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +461.566 000.629 000.629: require('cmp_cmdline') +461.645 000.769 000.141: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +462.627 000.390 000.390: require('cmp_nvim_lsp.source') +462.640 000.711 000.321: require('cmp_nvim_lsp') +462.717 000.840 000.129: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +463.711 000.710 000.710: require('cmp_path') +463.773 000.827 000.117: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +464.614 000.517 000.517: require('cmp_luasnip') +464.722 000.716 000.199: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +464.985 002.160: loading after plugins +465.026 000.041: inits 3 +465.094 000.068: reading ShaDa +465.979 000.175 000.175: require('luasnip.loaders._caches') +466.558 000.569 000.569: require('luasnip.util.path') +467.066 000.497 000.497: require('luasnip.loaders.util') +468.731 000.293 000.293: require('luasnip.loaders') +468.782 001.705 001.413: require('luasnip') +468.795 003.396 000.449: require('luasnip.loaders.from_lua') +469.563 000.191 000.191: require('luasnip.nodes.snippetProxy') +469.575 000.593 000.402: require('luasnip.loaders.from_snipmate') +470.027 000.403 000.403: require('luasnip.loaders.from_vscode') +471.125 001.641: opening buffers +471.367 000.241: BufEnter autocommands +471.374 000.007: editing files in windows +492.712 005.083 005.083: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.282 001.282: --- NVIM STARTING --- +029.206 027.924: event init +046.400 017.195: early init +048.223 001.823: locale set +053.937 005.714: init first window +064.347 010.410: inits 1 +064.372 000.025: window checked +064.380 000.008: parsing arguments +076.420 000.295 000.295: require('vim.shared') +076.917 000.241 000.241: require('vim._meta') +076.931 000.488 000.247: require('vim._editor') +076.938 000.901 000.118: require('vim._init_packages') +076.946 011.665: init lua interpreter +077.114 000.168: expanding arguments +079.080 001.966: inits 2 +080.421 001.341: init highlight +080.430 000.009: waiting for UI +083.335 002.905: done waiting for UI +083.386 000.051: init screen for UI +084.183 000.797: init default mappings +084.250 000.068: init default autocommands +095.904 004.673 004.673: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/ftplugin.vim +098.355 001.073 001.073: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/indent.vim +098.631 000.029 000.029: sourcing /usr/share/nvim/archlinux.vim +098.642 000.086 000.057: sourcing /etc/xdg/nvim/sysinit.vim +109.895 006.296 006.296: require('keys') +112.293 002.386 002.386: require('opts') +114.877 000.524 000.524: require('packer.util') +114.935 002.267 001.743: require('packer') +116.828 000.639 000.639: require('packer.log') +116.838 001.118 000.479: require('packer.async') +117.810 000.400 000.400: require('packer.result') +117.819 000.976 000.577: require('packer.jobs') +117.836 002.853 000.759: require('packer.plugin_utils') +118.494 000.636 000.636: require('packer.snapshot') +119.546 007.244 001.489: require('pack') +130.393 010.839 010.839: require('impatient') +131.485 000.276 000.276: require('vim.treesitter.language') +131.511 000.729 000.454: require('vim.treesitter.query') +132.514 000.241 000.241: require('vim.treesitter.languagetree') +132.575 000.456 000.215: require('vim.treesitter') +132.857 001.011 000.556: require('nvim-treesitter.parsers') +132.981 000.118 000.118: require('nvim-treesitter.utils') +132.995 001.348 000.218: require('nvim-treesitter.ts_utils') +133.005 001.489 000.141: require('nvim-treesitter.tsrange') +133.084 000.076 000.076: require('nvim-treesitter.caching') +133.105 002.472 000.178: require('nvim-treesitter.query') +133.133 002.641 000.168: require('nvim-treesitter.configs') +133.974 000.524 000.524: require('nvim-treesitter.info') +134.163 000.182 000.182: require('nvim-treesitter.shell_command_selectors') +134.209 000.904 000.198: require('nvim-treesitter.install') +172.984 042.575 039.031: require('plugins.treesitter') +173.299 000.131 000.131: require('telescope._extensions') +173.308 000.211 000.080: require('telescope') +174.714 000.323 000.323: require('plenary.bit') +175.035 000.315 000.315: require('plenary.functional') +175.105 000.031 000.031: require('ffi') +175.128 001.120 000.451: require('plenary.path') +175.141 001.487 000.367: require('plenary.strings') +175.261 000.116 000.116: require('telescope.deprecated') +175.722 000.276 000.276: require('plenary.log') +175.802 000.416 000.140: require('telescope.log') +176.040 000.117 000.117: require('plenary.job') +176.114 000.069 000.069: require('telescope.state') +176.129 000.321 000.136: require('telescope.utils') +176.149 000.882 000.145: require('telescope.sorters') +176.244 000.075 000.075: require('vim.inspect') +176.749 000.013 000.013: require('vim.F') +179.793 006.266 003.693: require('telescope.config') +180.432 000.092 000.092: require('plenary.window.border') +180.569 000.130 000.130: require('plenary.window') +180.636 000.061 000.061: require('plenary.popup.utils') +180.647 000.846 000.563: require('plenary.popup') +180.720 000.069 000.069: require('telescope.pickers.scroller') +180.793 000.068 000.068: require('telescope.actions.state') +180.866 000.068 000.068: require('telescope.actions.utils') +181.014 000.068 000.068: require('telescope.actions.mt') +181.045 000.175 000.107: require('telescope.actions.set') +181.358 000.152 000.152: require('telescope.config.resolve') +181.365 000.267 000.115: require('telescope.pickers.entry_display') +181.470 000.101 000.101: require('telescope.from_entry') +181.848 008.537 000.678: require('telescope.actions') +182.823 000.058 000.058: require('plenary.tbl') +182.833 000.129 000.071: require('plenary.vararg.rotate') +182.837 000.192 000.063: require('plenary.vararg') +182.898 000.058 000.058: require('plenary.errors') +182.906 000.330 000.081: require('plenary.async.async') +183.025 000.115 000.115: require('plenary.async.structs') +183.038 000.834 000.388: require('plenary.async.control') +183.329 000.214 000.214: require('telescope.make_entry') +183.599 000.074 000.074: require('plenary.async.util') +183.605 000.138 000.064: require('plenary.async.tests') +183.610 000.207 000.069: require('plenary.async') +183.614 000.279 000.072: require('telescope.finders.async_static_finder') +183.821 000.058 000.058: require('plenary.class') +183.846 000.163 000.105: require('telescope._') +183.851 000.234 000.071: require('telescope.finders.async_oneshot_finder') +183.919 000.066 000.066: require('telescope.finders.async_job_finder') +183.931 000.890 000.097: require('telescope.finders') +184.185 000.079 000.079: require('telescope.debounce') +184.335 000.144 000.144: require('telescope.mappings') +184.428 000.088 000.088: require('telescope.pickers.highlights') +184.499 000.066 000.066: require('telescope.pickers.window') +184.648 000.072 000.072: require('telescope.algos.linked_list') +184.656 000.152 000.080: require('telescope.entry_manager') +184.783 000.124 000.124: require('telescope.pickers.multi') +184.814 000.879 000.226: require('telescope.pickers') +184.829 002.770 000.167: require('telescope.builtin.__lsp') +184.852 002.997 000.227: require('telescope.builtin') +185.164 000.225 000.225: require('fzf_lib') +185.175 000.317 000.093: require('telescope._extensions.fzf') +185.568 000.096 000.096: require('telescope._extensions.file_browser.utils') +185.662 000.348 000.252: require('telescope._extensions.file_browser.actions') +185.891 000.137 000.137: require('telescope._extensions.file_browser.make_entry') +186.045 000.148 000.148: require('plenary.scandir') +186.092 000.425 000.140: require('telescope._extensions.file_browser.finders') +186.173 000.077 000.077: require('telescope._extensions.file_browser.picker') +186.271 000.093 000.093: require('telescope._extensions.file_browser.config') +186.277 001.039 000.097: require('telescope._extensions.file_browser') +189.722 000.012 000.012: require('vim.keymap') +189.980 016.986 003.873: require('plugins.telescope') +191.812 000.068 000.068: require('notify.util.queue') +191.822 000.421 000.352: require('notify.util') +192.063 000.237 000.237: require('notify.config.highlights') +192.078 001.067 000.409: require('notify.config') +192.463 000.380 000.380: require('notify.stages') +192.560 000.091 000.091: require('notify.service.notification') +192.902 000.085 000.085: require('notify.animate.spring') +192.908 000.166 000.081: require('notify.animate') +192.920 000.354 000.188: require('notify.windows') +193.224 000.108 000.108: require('notify.service.buffer.highlights') +193.235 000.219 000.112: require('notify.service.buffer') +193.243 000.320 000.101: require('notify.service') +193.375 000.129 000.129: require('notify.stages.util') +193.389 002.748 000.406: require('notify') +193.485 000.091 000.091: require('nvim-tree.iterators.node-iterator') +193.580 003.039 000.200: require('nvim-tree.utils') +193.599 003.130 000.091: require('nvim-tree.events') +193.918 000.090 000.090: require('nvim-tree.log') +194.118 000.194 000.194: require('nvim-tree.git.utils') +194.227 000.102 000.102: require('nvim-tree.git.runner') +194.333 000.101 000.101: require('nvim-tree.watcher') +194.345 000.616 000.129: require('nvim-tree.git') +194.437 000.089 000.089: require('nvim-tree.explorer.watch') +194.521 000.079 000.079: require('nvim-tree.explorer.common') +194.761 000.104 000.104: require('nvim-tree.explorer.node-builders') +194.865 000.098 000.098: require('nvim-tree.explorer.sorters') +194.953 000.083 000.083: require('nvim-tree.explorer.filters') +195.346 000.289 000.289: require('nvim-tree.view') +195.370 000.412 000.123: require('nvim-tree.live-filter') +195.381 000.815 000.117: require('nvim-tree.explorer.explore') +195.522 000.136 000.136: require('nvim-tree.explorer.reload') +195.542 001.939 000.204: require('nvim-tree.explorer') +195.554 005.142 000.073: require('nvim-tree.core') +195.717 000.158 000.158: require('nvim-tree.diagnostics') +195.848 000.124 000.124: require('nvim-tree.renderer.components.padding') +195.995 000.140 000.140: require('nvim-tree.renderer.components.icons') +196.151 000.149 000.149: require('nvim-tree.renderer.components.full-name') +196.312 000.153 000.153: require('nvim-tree.renderer.help') +196.492 000.171 000.171: require('nvim-tree.renderer.components.git') +196.678 000.179 000.179: require('nvim-tree.renderer.builder') +196.813 000.127 000.127: require('nvim-tree.marks') +196.834 006.502 000.159: require('nvim-tree.renderer') +197.065 000.215 000.215: require('nvim-tree.actions.tree-modifiers.collapse-all') +197.186 000.112 000.112: require('nvim-tree.actions.root.dir-up') +197.335 000.142 000.142: require('nvim-tree.actions.root.change-dir') +197.451 000.108 000.108: require('nvim-tree.actions.reloaders.reloaders') +197.551 000.092 000.092: require('nvim-tree.actions.finders.find-file') +197.557 007.300 000.128: require('nvim-tree.lib') +197.687 000.127 000.127: require('nvim-tree.colors') +197.844 000.150 000.150: require('nvim-tree.legacy') +197.974 000.125 000.125: require('nvim-tree.actions.fs.copy-paste') +198.172 000.086 000.086: require('nvim-tree.actions.tree-modifiers.expand-all') +198.258 000.080 000.080: require('nvim-tree.actions.tree-modifiers.toggles') +198.368 000.102 000.102: require('nvim-tree.actions.fs.create-file') +198.462 000.090 000.090: require('nvim-tree.actions.fs.rename-file') +198.587 000.119 000.119: require('nvim-tree.actions.fs.trash') +198.728 000.135 000.135: require('nvim-tree.actions.fs.remove-file') +198.838 000.098 000.098: require('nvim-tree.actions.moves.parent') +198.925 000.080 000.080: require('nvim-tree.actions.moves.sibling') +199.012 000.081 000.081: require('nvim-tree.actions.moves.item') +199.114 000.087 000.087: require('nvim-tree.actions.finders.search-node') +199.278 000.160 000.160: require('nvim-tree.actions.node.run-command') +199.385 000.101 000.101: require('nvim-tree.actions.node.file-popup') +199.549 000.159 000.159: require('nvim-tree.actions.node.system-open') +199.652 000.095 000.095: require('nvim-tree.marks.bulk-move') +199.667 001.685 000.210: require('nvim-tree.actions.dispatch') +199.728 009.650 000.262: require('nvim-tree') +199.813 000.080 000.080: require('nvim-tree.config') +203.971 000.220 000.220: require('nvim-tree.actions') +204.111 000.129 000.129: require('nvim-tree.actions.node.open-file') +209.463 000.522 000.522: require('nvim-tree.marks.navigation') +209.477 001.387 000.866: require('nvim-tree.api') +209.608 002.226 000.838: require('nvim-tree.keymap') +212.901 002.345 002.345: require('nvim-web-devicons') +217.310 027.323 012.673: require('plugins.nvim-tree') +217.684 000.085 000.085: require('lualine_require') +218.261 000.793 000.708: require('lualine') +218.340 000.072 000.072: require('plugins.linecolor') +222.766 000.090 000.090: require('lualine.utils.mode') +229.111 011.786 010.831: require('plugins.lualine') +229.143 130.389 004.953: sourcing /home/sxrdusr/.config/nvim/init.lua +229.161 008.689: sourcing vimrc file(s) +229.452 000.053 000.053: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +230.601 000.057 000.057: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/filetype.lua +232.794 002.048 002.048: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/filetype.vim +236.078 000.256 000.256: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/syntax/synload.vim +236.340 002.832 002.576: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/syntax/syntax.vim +242.671 001.056 001.056: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/gzip.vim +242.829 000.065 000.065: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/health.vim +245.729 001.412 001.412: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +246.361 003.446 002.034: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/matchit.vim +246.870 000.420 000.420: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/matchparen.vim +247.052 000.090 000.090: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/netrwPlugin.vim +247.500 000.025 000.025: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +247.522 000.383 000.358: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/rplugin.vim +247.811 000.203 000.203: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/shada.vim +247.967 000.065 000.065: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/spellfile.vim +248.132 000.075 000.075: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/tarPlugin.vim +248.296 000.078 000.078: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/tohtml.vim +248.442 000.059 000.059: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/tutor.vim +249.216 000.687 000.687: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/zipPlugin.vim +249.516 000.038 000.038: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +250.932 000.127 000.127: require('lspsaga') +251.194 000.086 000.086: require('lspsaga.window') +251.213 000.185 000.099: require('lspsaga.libs') +252.990 000.425 000.425: require('vim.lsp.log') +253.817 000.818 000.818: require('vim.lsp.protocol') +254.531 000.456 000.456: require('vim.lsp._snippet') +254.675 000.136 000.136: require('vim.highlight') +254.704 000.879 000.287: require('vim.lsp.util') +254.723 002.459 000.337: require('vim.lsp.handlers') +254.916 000.189 000.189: require('vim.lsp.rpc') +255.049 000.125 000.125: require('vim.lsp.sync') +255.512 000.456 000.456: require('vim.lsp.buf') +255.898 000.378 000.378: require('vim.lsp.diagnostic') +256.286 000.381 000.381: require('vim.lsp.codelens') +256.435 005.130 001.140: require('vim.lsp') +256.519 000.076 000.076: require('lspsaga.wrap') +256.530 005.313 000.107: require('lspsaga.codeaction') +256.569 005.629 000.131: require('lspsaga.lightbulb') +256.699 000.095 000.095: require('lspsaga.lspkind') +256.886 000.058 000.058: require('mason-core.path') +256.903 000.134 000.076: require('mason.settings') +257.101 000.054 000.054: require('mason-core.functional.data') +257.109 000.123 000.069: require('mason-core.functional.function') +257.145 000.238 000.115: require('mason-core.platform') +257.150 000.437 000.066: require('mason') +257.357 000.105 000.105: require('mason-core.functional') +257.475 000.101 000.101: require('mason-core.functional.list') +257.521 000.349 000.143: require('mason.api.command') +257.719 000.110 000.110: require('mason-core.log') +257.726 000.201 000.091: require('mason-lspconfig') +257.798 000.068 000.068: require('mason-lspconfig.settings') +257.891 000.077 000.077: require('mason-lspconfig.lspconfig_hook') +258.211 000.315 000.315: require('lspconfig.util') +258.438 000.079 000.079: require('mason-core.functional.table') +258.544 000.310 000.231: require('mason-lspconfig.mappings.server') +258.849 000.091 000.091: require('mason-core.async') +258.922 000.065 000.065: require('mason-core.async.uv') +258.933 000.303 000.147: require('mason-core.fs') +259.009 000.073 000.073: require('mason-core.optional') +259.080 000.067 000.067: require('mason-core.EventEmitter') +259.241 000.156 000.156: require('mason-registry.index') +259.260 000.710 000.112: require('mason-registry') +259.341 000.076 000.076: require('mason-lspconfig.server_config_extensions') +259.439 000.093 000.093: require('lspconfig.configs') +259.568 000.085 000.085: require('lspconfig.server_configurations.omnisharp') +259.680 000.072 000.072: require('mason-lspconfig.ensure_installed') +259.937 000.075 000.075: require('mason-core.result') +260.355 000.248 000.248: require('mason-core.process') +260.434 000.070 000.070: require('mason-core.functional.relation') +260.509 000.067 000.067: require('mason-core.functional.logic') +260.524 000.485 000.101: require('mason-core.spawn') +260.611 000.082 000.082: require('mason-core.receipt') +260.695 000.069 000.069: require('mason-core.functional.string') +260.727 000.784 000.147: require('mason-core.installer.context') +260.802 000.071 000.071: require('mason-core.installer.linker') +260.878 000.071 000.071: require('mason-core.async.control') +260.886 001.109 000.108: require('mason-core.installer') +260.986 000.097 000.097: require('mason-core.installer.handle') +261.352 000.075 000.075: require('mason-core.managers.powershell') +261.358 000.152 000.077: require('mason-core.fetch') +261.362 000.213 000.061: require('mason-core.managers.cargo.client') +261.471 000.410 000.197: require('mason-core.managers.cargo') +261.626 000.150 000.150: require('mason-core.managers.composer') +261.751 000.118 000.118: require('mason-core.managers.gem') +261.836 000.080 000.080: require('mason-core.managers.git') +262.055 000.129 000.129: require('mason-core.managers.std') +262.144 000.084 000.084: require('mason-core.managers.github.client') +262.158 000.317 000.104: require('mason-core.managers.github') +262.335 000.174 000.174: require('mason-core.managers.go') +262.467 000.127 000.127: require('mason-core.managers.luarocks') +262.578 000.106 000.106: require('mason-core.managers.npm') +262.694 000.111 000.111: require('mason-core.managers.pip3') +262.705 001.714 000.122: require('mason-core.package.version-check') +262.717 003.032 000.112: require('mason-core.package') +262.825 000.089 000.089: require('mason-registry.lua-language-server') +263.139 000.116 000.116: require('mason-registry.clangd') +263.374 000.126 000.126: require('mason-registry.rust-analyzer') +263.531 000.060 000.060: require('mason-core.notify') +263.611 000.074 000.074: require('mason-core.functional.number') +263.665 000.282 000.149: require('mason-lspconfig.api.command') +263.672 014.021 001.730: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +264.646 000.093 000.093: sourcing /tmp/.mount_nvimSUUymO/usr/share/nvim/runtime/plugin/man.lua +264.859 009.930: loading rtp plugins +266.616 000.071 000.071: require('Comment.config') +266.723 000.099 000.099: require('Comment.utils') +266.800 000.072 000.072: require('Comment.opfunc') +266.873 000.068 000.068: require('Comment.extra') +266.888 000.475 000.165: require('Comment.api') +267.312 000.956 000.481: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +267.990 000.074 000.074: require('luasnip.util.types') +268.278 000.281 000.281: require('luasnip.util.ext_opts') +268.369 000.085 000.085: require('luasnip.extras.filetype_functions') +268.451 000.077 000.077: require('luasnip.session') +268.969 000.166 000.166: require('luasnip.util.util') +269.057 000.081 000.081: require('luasnip.nodes.util') +269.128 000.066 000.066: require('luasnip.util.events') +269.145 000.440 000.128: require('luasnip.nodes.node') +269.338 000.080 000.080: require('luasnip.util.extend_decorator') +269.350 000.893 000.373: require('luasnip.nodes.insertNode') +269.673 000.091 000.091: require('luasnip.util.mark') +270.003 000.192 000.192: require('luasnip.nodes.textNode') +271.216 001.044 001.044: require('luasnip.util._builtin_vars') +271.484 001.472 000.428: require('luasnip.util.environ') +271.584 000.093 000.093: require('luasnip.util.pattern_tokenizer') +271.677 000.087 000.087: require('luasnip.util.dict') +271.776 000.093 000.093: require('luasnip.session.snippet_collection') +271.836 002.157 000.219: require('luasnip.nodes.snippet') +271.857 002.504 000.256: require('luasnip.nodes.choiceNode') +272.071 000.154 000.154: require('luasnip.nodes.functionNode') +272.213 000.134 000.134: require('luasnip.nodes.dynamicNode') +272.335 000.116 000.116: require('luasnip.nodes.restoreNode') +272.429 000.089 000.089: require('luasnip.extras') +272.581 000.069 000.069: require('luasnip.util.str') +272.593 000.156 000.088: require('luasnip.extras.fmt') +272.659 000.062 000.062: require('luasnip.extras.expand_conditions') +274.837 000.115 000.115: require('luasnip.util.parser.neovim_ast') +285.484 000.102 000.102: require('luasnip.util.directed_graph') +285.508 012.765 012.548: require('luasnip.util.parser.ast_utils') +285.683 000.077 000.077: require('luasnip.util.functions') +285.694 000.181 000.104: require('luasnip.util.parser.ast_parser') +285.864 000.166 000.166: require('luasnip.util.parser.neovim_parser') +285.880 013.211 000.100: require('luasnip.util.parser') +285.961 000.076 000.076: require('luasnip.nodes.absolute_indexer') +286.571 018.788 000.878: require('luasnip.config') +286.736 019.252 000.463: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +287.625 000.052 000.052: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +288.516 000.096 000.096: require('indent_blankline/utils') +288.525 000.261 000.164: require('indent_blankline') +289.078 000.085 000.085: require('indent_blankline.commands') +289.243 001.156 000.810: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +289.661 000.100 000.100: require('lsp-colors') +290.066 000.560 000.459: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +291.337 000.883 000.883: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +292.198 000.399 000.399: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +292.735 000.093 000.093: require('cmp.utils.api') +292.879 000.068 000.068: require('cmp.types.cmp') +293.040 000.078 000.078: require('cmp.utils.misc') +293.161 000.276 000.197: require('cmp.types.lsp') +293.233 000.066 000.066: require('cmp.types.vim') +293.239 000.498 000.088: require('cmp.types') +293.311 000.069 000.069: require('cmp.utils.highlight') +293.438 000.060 000.060: require('cmp.utils.debug') +293.453 000.137 000.077: require('cmp.utils.autocmd') +294.094 001.520 000.724: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +294.361 000.084 000.084: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +294.791 000.107 000.107: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +295.290 000.200 000.200: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +295.922 000.069 000.069: require('nvim-treesitter.statusline') +296.008 000.079 000.079: require('nvim-treesitter.query_predicates') +296.014 000.235 000.087: require('nvim-treesitter') +297.249 000.211 000.211: require('vim.treesitter.highlighter') +297.604 000.717 000.506: require('nvim-treesitter.highlight') +298.233 002.511 001.559: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +298.701 000.250 000.250: require('treesitter-context') +298.712 000.288 000.038: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +299.085 000.089 000.089: require('nvim-treesitter-refactor') +299.521 000.552 000.463: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +299.907 000.123 000.123: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +300.288 000.079 000.079: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +300.657 000.094 000.094: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +301.449 000.439 000.439: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +301.814 000.060 000.060: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +302.983 000.662 000.662: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +303.777 000.499 000.499: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +304.414 000.381 000.381: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +305.285 000.605 000.605: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +305.595 000.030 000.030: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +305.881 000.045 000.045: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +306.951 010.557: loading packages +308.634 000.475 000.475: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +313.061 005.554 005.079: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +313.787 000.116 000.116: require('cmp.utils.char') +313.803 000.204 000.088: require('cmp.utils.str') +313.877 000.070 000.070: require('cmp.utils.pattern') +314.102 000.060 000.060: require('cmp.utils.buffer') +314.113 000.161 000.101: require('cmp.utils.keymap') +314.124 000.242 000.080: require('cmp.utils.feedkeys') +314.212 000.084 000.084: require('cmp.utils.async') +314.351 000.064 000.064: require('cmp.utils.cache') +314.358 000.141 000.077: require('cmp.context') +314.613 000.081 000.081: require('cmp.config.mapping') +314.787 000.091 000.091: require('cmp.config.compare') +314.796 000.176 000.085: require('cmp.config.default') +314.822 000.365 000.108: require('cmp.config') +314.996 000.067 000.067: require('cmp.matcher') +315.009 000.183 000.116: require('cmp.entry') +315.023 000.661 000.114: require('cmp.source') +315.170 000.064 000.064: require('cmp.utils.event') +315.349 000.099 000.099: require('cmp.utils.window') +315.357 000.181 000.082: require('cmp.view.docs_view') +315.477 000.117 000.117: require('cmp.view.custom_entries_view') +315.589 000.107 000.107: require('cmp.view.wildmenu_entries_view') +315.680 000.086 000.086: require('cmp.view.native_entries_view') +315.757 000.073 000.073: require('cmp.view.ghost_text_view') +315.774 000.748 000.120: require('cmp.view') +315.888 002.417 000.267: require('cmp.core') +316.199 000.074 000.074: require('cmp.config.sources') +316.266 000.059 000.059: require('cmp.config.window') +316.365 003.024 000.473: require('cmp') +316.650 000.063 000.063: require('cmp_buffer.timer') +316.662 000.153 000.090: require('cmp_buffer.buffer') +316.667 000.232 000.079: require('cmp_buffer.source') +316.671 000.301 000.069: require('cmp_buffer') +316.767 003.486 000.161: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +317.148 000.154 000.154: require('cmp_cmdline') +317.183 000.237 000.084: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +317.538 000.084 000.084: require('cmp_nvim_lsp.source') +317.546 000.168 000.084: require('cmp_nvim_lsp') +317.596 000.258 000.089: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +318.051 000.260 000.260: require('cmp_path') +318.087 000.339 000.079: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +318.379 000.087 000.087: require('cmp_luasnip') +318.445 000.203 000.116: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +318.598 001.570: loading after plugins +318.676 000.078: inits 3 +318.691 000.015: reading ShaDa +319.079 000.072 000.072: require('luasnip.loaders._caches') +319.267 000.181 000.181: require('luasnip.util.path') +319.366 000.092 000.092: require('luasnip.loaders.util') +319.603 000.104 000.104: require('luasnip.loaders') +319.642 000.271 000.167: require('luasnip') +319.649 000.734 000.119: require('luasnip.loaders.from_lua') +319.877 000.075 000.075: require('luasnip.nodes.snippetProxy') +319.886 000.177 000.102: require('luasnip.loaders.from_snipmate') +320.022 000.091 000.091: require('luasnip.loaders.from_vscode') +320.658 000.965: opening buffers +320.916 000.258: BufEnter autocommands +320.923 000.007: editing files in windows +335.685 000.594 000.594: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.315 001.315: --- NVIM STARTING --- +029.519 028.204: event init +045.885 016.366: early init +047.405 001.520: locale set +052.798 005.393: init first window +063.084 010.286: inits 1 +063.111 000.026: window checked +063.119 000.008: parsing arguments +075.078 000.268 000.268: require('vim.shared') +075.596 000.245 000.245: require('vim._meta') +075.609 000.509 000.263: require('vim._editor') +075.617 000.903 000.126: require('vim._init_packages') +075.624 011.602: init lua interpreter +075.789 000.165: expanding arguments +077.774 001.985: inits 2 +079.125 001.351: init highlight +079.134 000.009: waiting for UI +082.047 002.914: done waiting for UI +082.119 000.071: init screen for UI +082.613 000.495: init default mappings +082.660 000.047: init default autocommands +093.091 004.347 004.347: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/ftplugin.vim +095.882 001.064 001.064: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/indent.vim +096.229 000.037 000.037: sourcing /usr/share/nvim/archlinux.vim +096.246 000.117 000.080: sourcing /etc/xdg/nvim/sysinit.vim +106.342 005.865 005.865: require('keys') +108.711 002.358 002.358: require('opts') +112.148 001.046 001.046: require('packer.util') +112.298 003.211 002.165: require('packer') +116.366 001.643 001.643: require('packer.log') +116.396 002.522 000.879: require('packer.async') +118.234 000.752 000.752: require('packer.result') +118.250 001.845 001.093: require('packer.jobs') +118.281 005.884 001.517: require('packer.plugin_utils') +119.461 001.139 001.139: require('packer.snapshot') +120.985 012.265 002.031: require('pack') +137.495 016.498 016.498: require('impatient') +138.790 000.212 000.212: require('vim.treesitter.language') +138.824 000.831 000.619: require('vim.treesitter.query') +140.076 000.251 000.251: require('vim.treesitter.languagetree') +140.174 000.578 000.326: require('vim.treesitter') +140.627 001.447 000.869: require('nvim-treesitter.parsers') +140.797 000.161 000.161: require('nvim-treesitter.utils') +140.818 001.862 000.253: require('nvim-treesitter.ts_utils') +140.835 002.005 000.143: require('nvim-treesitter.tsrange') +141.528 000.687 000.687: require('nvim-treesitter.caching') +141.559 003.700 000.177: require('nvim-treesitter.query') +141.598 003.967 000.267: require('nvim-treesitter.configs') +142.951 000.527 000.527: require('nvim-treesitter.info') +143.550 000.590 000.590: require('nvim-treesitter.shell_command_selectors') +143.619 001.783 000.666: require('nvim-treesitter.install') +192.821 055.307 049.557: require('plugins.treesitter') +193.168 000.081 000.081: require('telescope._extensions') +193.177 000.173 000.092: require('telescope') +193.960 000.087 000.087: require('plenary.bit') +194.045 000.078 000.078: require('plenary.functional') +194.102 000.040 000.040: require('ffi') +194.152 000.438 000.234: require('plenary.path') +194.171 000.539 000.101: require('plenary.strings') +194.537 000.363 000.363: require('telescope.deprecated') +195.061 000.255 000.255: require('plenary.log') +195.141 000.488 000.233: require('telescope.log') +195.420 000.156 000.156: require('plenary.job') +195.511 000.085 000.085: require('telescope.state') +195.526 000.380 000.139: require('telescope.utils') +195.538 000.993 000.126: require('telescope.sorters') +195.706 000.144 000.144: require('vim.inspect') +196.270 000.015 000.015: require('vim.F') +200.294 006.805 004.751: require('telescope.config') +201.142 000.155 000.155: require('plenary.window.border') +201.222 000.074 000.074: require('plenary.window') +201.445 000.214 000.214: require('plenary.popup.utils') +201.461 001.156 000.713: require('plenary.popup') +201.595 000.128 000.128: require('telescope.pickers.scroller') +201.749 000.148 000.148: require('telescope.actions.state') +201.827 000.072 000.072: require('telescope.actions.utils') +201.984 000.071 000.071: require('telescope.actions.mt') +202.017 000.184 000.113: require('telescope.actions.set') +202.212 000.078 000.078: require('telescope.config.resolve') +202.218 000.157 000.079: require('telescope.pickers.entry_display') +202.292 000.070 000.070: require('telescope.from_entry') +202.894 009.714 000.995: require('telescope.actions') +203.744 000.059 000.059: require('plenary.tbl') +203.753 000.131 000.073: require('plenary.vararg.rotate') +203.756 000.192 000.061: require('plenary.vararg') +203.872 000.113 000.113: require('plenary.errors') +203.892 000.393 000.087: require('plenary.async.async') +203.963 000.068 000.068: require('plenary.async.structs') +203.978 000.558 000.097: require('plenary.async.control') +204.289 000.233 000.233: require('telescope.make_entry') +204.577 000.085 000.085: require('plenary.async.util') +204.584 000.151 000.066: require('plenary.async.tests') +204.589 000.225 000.074: require('plenary.async') +204.594 000.299 000.074: require('telescope.finders.async_static_finder') +204.816 000.062 000.062: require('plenary.class') +204.845 000.177 000.116: require('telescope._') +204.850 000.253 000.076: require('telescope.finders.async_oneshot_finder') +204.930 000.076 000.076: require('telescope.finders.async_job_finder') +204.942 000.959 000.098: require('telescope.finders') +205.285 000.099 000.099: require('telescope.debounce') +205.562 000.270 000.270: require('telescope.mappings') +205.686 000.115 000.115: require('telescope.pickers.highlights') +205.793 000.101 000.101: require('telescope.pickers.window') +205.962 000.076 000.076: require('telescope.algos.linked_list') +205.970 000.171 000.096: require('telescope.entry_manager') +206.040 000.067 000.067: require('telescope.pickers.multi') +206.079 001.133 000.311: require('telescope.pickers') +206.097 002.802 000.151: require('telescope.builtin.__lsp') +206.126 003.202 000.400: require('telescope.builtin') +206.457 000.236 000.236: require('fzf_lib') +206.469 000.338 000.102: require('telescope._extensions.fzf') +206.811 000.097 000.097: require('telescope._extensions.file_browser.utils') +206.921 000.358 000.261: require('telescope._extensions.file_browser.actions') +207.218 000.200 000.200: require('telescope._extensions.file_browser.make_entry') +207.387 000.161 000.161: require('plenary.scandir') +207.444 000.519 000.158: require('telescope._extensions.file_browser.finders') +207.545 000.097 000.097: require('telescope._extensions.file_browser.picker') +207.650 000.099 000.099: require('telescope._extensions.file_browser.config') +207.657 001.177 000.103: require('telescope._extensions.file_browser') +211.310 000.020 000.020: require('vim.keymap') +211.563 018.727 004.104: require('plugins.telescope') +212.720 000.062 000.062: require('notify.util.queue') +212.735 000.155 000.093: require('notify.util') +213.007 000.269 000.269: require('notify.config.highlights') +213.022 000.525 000.101: require('notify.config') +213.094 000.068 000.068: require('notify.stages') +213.169 000.069 000.069: require('notify.service.notification') +213.682 000.175 000.175: require('notify.animate.spring') +213.690 000.392 000.217: require('notify.animate') +213.704 000.530 000.139: require('notify.windows') +214.066 000.097 000.097: require('notify.service.buffer.highlights') +214.077 000.258 000.161: require('notify.service.buffer') +214.082 000.375 000.117: require('notify.service') +214.184 000.099 000.099: require('notify.stages.util') +214.194 001.784 000.118: require('notify') +214.350 000.152 000.152: require('nvim-tree.iterators.node-iterator') +214.431 002.141 000.206: require('nvim-tree.utils') +214.445 002.227 000.086: require('nvim-tree.events') +214.713 000.088 000.088: require('nvim-tree.log') +214.890 000.171 000.171: require('nvim-tree.git.utils') +215.009 000.114 000.114: require('nvim-tree.git.runner') +215.174 000.161 000.161: require('nvim-tree.watcher') +215.192 000.657 000.124: require('nvim-tree.git') +215.298 000.103 000.103: require('nvim-tree.explorer.watch') +215.406 000.102 000.102: require('nvim-tree.explorer.common') +215.643 000.101 000.101: require('nvim-tree.explorer.node-builders') +215.743 000.094 000.094: require('nvim-tree.explorer.sorters') +215.833 000.085 000.085: require('nvim-tree.explorer.filters') +216.211 000.273 000.273: require('nvim-tree.view') +216.236 000.399 000.126: require('nvim-tree.live-filter') +216.246 000.795 000.117: require('nvim-tree.explorer.explore') +216.401 000.150 000.150: require('nvim-tree.explorer.reload') +216.415 001.967 000.159: require('nvim-tree.explorer') +216.427 004.273 000.079: require('nvim-tree.core') +216.599 000.166 000.166: require('nvim-tree.diagnostics') +216.736 000.128 000.128: require('nvim-tree.renderer.components.padding') +216.878 000.135 000.135: require('nvim-tree.renderer.components.icons') +217.023 000.137 000.137: require('nvim-tree.renderer.components.full-name') +217.159 000.130 000.130: require('nvim-tree.renderer.help') +217.462 000.200 000.200: require('nvim-tree.renderer.components.git') +217.671 000.201 000.201: require('nvim-tree.renderer.builder') +217.860 000.182 000.182: require('nvim-tree.marks') +217.885 005.824 000.272: require('nvim-tree.renderer') +218.041 000.140 000.140: require('nvim-tree.actions.tree-modifiers.collapse-all') +218.225 000.176 000.176: require('nvim-tree.actions.root.dir-up') +218.363 000.130 000.130: require('nvim-tree.actions.root.change-dir') +218.464 000.095 000.095: require('nvim-tree.actions.reloaders.reloaders') +218.613 000.139 000.139: require('nvim-tree.actions.finders.find-file') +218.622 006.686 000.182: require('nvim-tree.lib') +218.780 000.153 000.153: require('nvim-tree.colors') +218.941 000.154 000.154: require('nvim-tree.legacy') +219.076 000.130 000.130: require('nvim-tree.actions.fs.copy-paste') +219.307 000.103 000.103: require('nvim-tree.actions.tree-modifiers.expand-all') +219.397 000.084 000.084: require('nvim-tree.actions.tree-modifiers.toggles') +219.500 000.097 000.097: require('nvim-tree.actions.fs.create-file') +219.594 000.088 000.088: require('nvim-tree.actions.fs.rename-file') +219.723 000.124 000.124: require('nvim-tree.actions.fs.trash') +219.830 000.101 000.101: require('nvim-tree.actions.fs.remove-file') +219.918 000.080 000.080: require('nvim-tree.actions.moves.parent') +220.008 000.085 000.085: require('nvim-tree.actions.moves.sibling') +220.096 000.082 000.082: require('nvim-tree.actions.moves.item') +220.192 000.086 000.086: require('nvim-tree.actions.finders.search-node') +220.275 000.078 000.078: require('nvim-tree.actions.node.run-command') +220.377 000.098 000.098: require('nvim-tree.actions.node.file-popup') +220.493 000.111 000.111: require('nvim-tree.actions.node.system-open') +220.617 000.095 000.095: require('nvim-tree.marks.bulk-move') +220.629 001.547 000.234: require('nvim-tree.actions.dispatch') +220.682 008.952 000.284: require('nvim-tree') +220.763 000.077 000.077: require('nvim-tree.config') +225.457 000.258 000.258: require('nvim-tree.actions') +225.612 000.138 000.138: require('nvim-tree.actions.node.open-file') +231.177 000.215 000.215: require('nvim-tree.marks.navigation') +231.192 000.752 000.537: require('nvim-tree.api') +231.319 001.308 000.556: require('nvim-tree.keymap') +233.412 001.322 001.322: require('nvim-web-devicons') +237.819 026.249 014.194: require('plugins.nvim-tree') +238.149 000.080 000.080: require('lualine_require') +238.693 000.744 000.664: require('lualine') +238.769 000.068 000.068: require('plugins.linecolor') +246.769 000.098 000.098: require('lualine.utils.mode') +249.215 011.383 010.473: require('plugins.lualine') +249.247 152.936 004.285: sourcing /home/sxrdusr/.config/nvim/init.lua +249.266 008.141: sourcing vimrc file(s) +249.558 000.053 000.053: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +250.909 000.165 000.165: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/filetype.lua +252.249 001.187 001.187: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/filetype.vim +254.478 000.324 000.324: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/syntax/synload.vim +254.864 002.122 001.798: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/syntax/syntax.vim +261.357 001.228 001.228: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/gzip.vim +261.572 000.105 000.105: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/health.vim +264.456 001.402 001.402: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +264.907 003.231 001.828: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/matchit.vim +265.364 000.392 000.392: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/matchparen.vim +265.507 000.075 000.075: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/netrwPlugin.vim +265.913 000.024 000.024: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +265.934 000.361 000.337: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/rplugin.vim +266.179 000.184 000.184: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/shada.vim +266.298 000.051 000.051: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/spellfile.vim +266.427 000.062 000.062: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/tarPlugin.vim +266.555 000.063 000.063: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/tohtml.vim +266.666 000.045 000.045: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/tutor.vim +267.424 000.693 000.693: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/zipPlugin.vim +267.688 000.035 000.035: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +269.082 000.120 000.120: require('lspsaga') +269.341 000.083 000.083: require('lspsaga.window') +269.360 000.181 000.097: require('lspsaga.libs') +270.284 000.369 000.369: require('vim.lsp.log') +270.982 000.690 000.690: require('vim.lsp.protocol') +271.405 000.179 000.179: require('vim.lsp._snippet') +271.540 000.128 000.128: require('vim.highlight') +271.568 000.579 000.272: require('vim.lsp.util') +271.602 001.846 000.207: require('vim.lsp.handlers') +271.792 000.185 000.185: require('vim.lsp.rpc') +271.899 000.100 000.100: require('vim.lsp.sync') +272.049 000.144 000.144: require('vim.lsp.buf') +272.158 000.102 000.102: require('vim.lsp.diagnostic') +272.268 000.104 000.104: require('vim.lsp.codelens') +272.410 002.961 000.479: require('vim.lsp') +272.488 000.069 000.069: require('lspsaga.wrap') +272.498 003.134 000.105: require('lspsaga.codeaction') +272.539 003.448 000.133: require('lspsaga.lightbulb') +272.662 000.089 000.089: require('lspsaga.lspkind') +272.840 000.056 000.056: require('mason-core.path') +272.856 000.130 000.074: require('mason.settings') +273.051 000.055 000.055: require('mason-core.functional.data') +273.059 000.122 000.068: require('mason-core.functional.function') +273.095 000.234 000.112: require('mason-core.platform') +273.099 000.427 000.063: require('mason') +273.317 000.110 000.110: require('mason-core.functional') +273.431 000.094 000.094: require('mason-core.functional.list') +273.472 000.351 000.146: require('mason.api.command') +273.730 000.170 000.170: require('mason-core.log') +273.738 000.261 000.091: require('mason-lspconfig') +273.810 000.069 000.069: require('mason-lspconfig.settings') +273.930 000.083 000.083: require('mason-lspconfig.lspconfig_hook') +274.191 000.255 000.255: require('lspconfig.util') +274.407 000.070 000.070: require('mason-core.functional.table') +274.515 000.300 000.230: require('mason-lspconfig.mappings.server') +274.819 000.121 000.121: require('mason-core.async') +274.889 000.063 000.063: require('mason-core.async.uv') +274.903 000.305 000.121: require('mason-core.fs') +274.984 000.077 000.077: require('mason-core.optional') +275.055 000.066 000.066: require('mason-core.EventEmitter') +275.213 000.154 000.154: require('mason-registry.index') +275.233 000.711 000.111: require('mason-registry') +275.320 000.069 000.069: require('mason-lspconfig.server_config_extensions') +275.415 000.090 000.090: require('lspconfig.configs') +275.544 000.085 000.085: require('lspconfig.server_configurations.omnisharp') +275.748 000.074 000.074: require('mason-lspconfig.ensure_installed') +276.005 000.072 000.072: require('mason-core.result') +276.417 000.240 000.240: require('mason-core.process') +276.495 000.070 000.070: require('mason-core.functional.relation') +276.570 000.064 000.064: require('mason-core.functional.logic') +276.586 000.480 000.107: require('mason-core.spawn') +276.672 000.081 000.081: require('mason-core.receipt') +276.761 000.078 000.078: require('mason-core.functional.string') +276.793 000.783 000.144: require('mason-core.installer.context') +276.869 000.072 000.072: require('mason-core.installer.linker') +276.943 000.070 000.070: require('mason-core.async.control') +276.955 001.111 000.114: require('mason-core.installer') +277.048 000.090 000.090: require('mason-core.installer.handle') +277.418 000.067 000.067: require('mason-core.managers.powershell') +277.428 000.146 000.079: require('mason-core.fetch') +277.432 000.212 000.066: require('mason-core.managers.cargo.client') +277.559 000.435 000.223: require('mason-core.managers.cargo') +277.681 000.116 000.116: require('mason-core.managers.composer') +277.797 000.110 000.110: require('mason-core.managers.gem') +277.878 000.076 000.076: require('mason-core.managers.git') +278.059 000.095 000.095: require('mason-core.managers.std') +278.142 000.078 000.078: require('mason-core.managers.github.client') +278.155 000.273 000.100: require('mason-core.managers.github') +278.342 000.183 000.183: require('mason-core.managers.go') +278.486 000.139 000.139: require('mason-core.managers.luarocks') +278.592 000.101 000.101: require('mason-core.managers.npm') +278.705 000.108 000.108: require('mason-core.managers.pip3') +278.716 001.661 000.121: require('mason-core.package.version-check') +278.728 002.974 000.112: require('mason-core.package') +278.830 000.089 000.089: require('mason-registry.lua-language-server') +279.275 000.122 000.122: require('mason-registry.clangd') +279.487 000.147 000.147: require('mason-registry.rust-analyzer') +279.655 000.067 000.067: require('mason-core.notify') +279.733 000.071 000.071: require('mason-core.functional.number') +279.785 000.289 000.152: require('mason-lspconfig.api.command') +279.791 011.969 001.915: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +280.735 000.090 000.090: sourcing /tmp/.mount_nvimCHM7IC/usr/share/nvim/runtime/plugin/man.lua +280.920 009.546: loading rtp plugins +282.674 000.073 000.073: require('Comment.config') +282.771 000.089 000.089: require('Comment.utils') +282.846 000.071 000.071: require('Comment.opfunc') +282.917 000.066 000.066: require('Comment.extra') +282.933 000.458 000.160: require('Comment.api') +283.468 001.047 000.589: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +284.190 000.090 000.090: require('luasnip.util.types') +284.274 000.076 000.076: require('luasnip.util.ext_opts') +284.352 000.074 000.074: require('luasnip.extras.filetype_functions') +284.425 000.068 000.068: require('luasnip.session') +284.739 000.127 000.127: require('luasnip.util.util') +284.819 000.075 000.075: require('luasnip.nodes.util') +284.887 000.062 000.062: require('luasnip.util.events') +284.908 000.387 000.123: require('luasnip.nodes.node') +285.048 000.095 000.095: require('luasnip.util.extend_decorator') +285.063 000.633 000.151: require('luasnip.nodes.insertNode') +285.330 000.083 000.083: require('luasnip.util.mark') +285.616 000.140 000.140: require('luasnip.nodes.textNode') +286.531 000.827 000.827: require('luasnip.util._builtin_vars') +286.833 001.209 000.383: require('luasnip.util.environ') +286.926 000.086 000.086: require('luasnip.util.pattern_tokenizer') +286.999 000.068 000.068: require('luasnip.util.dict') +287.096 000.092 000.092: require('luasnip.session.snippet_collection') +287.152 001.816 000.221: require('luasnip.nodes.snippet') +287.188 002.122 000.223: require('luasnip.nodes.choiceNode') +287.368 000.112 000.112: require('luasnip.nodes.functionNode') +287.544 000.169 000.169: require('luasnip.nodes.dynamicNode') +287.688 000.138 000.138: require('luasnip.nodes.restoreNode') +287.780 000.086 000.086: require('luasnip.extras') +287.977 000.068 000.068: require('luasnip.util.str') +287.989 000.202 000.133: require('luasnip.extras.fmt') +288.054 000.061 000.061: require('luasnip.extras.expand_conditions') +290.201 000.078 000.078: require('luasnip.util.parser.neovim_ast') +300.163 000.097 000.097: require('luasnip.util.directed_graph') +300.185 012.054 011.879: require('luasnip.util.parser.ast_utils') +300.367 000.085 000.085: require('luasnip.util.functions') +300.387 000.196 000.111: require('luasnip.util.parser.ast_parser') +300.563 000.173 000.173: require('luasnip.util.parser.neovim_parser') +300.577 012.513 000.090: require('luasnip.util.parser') +300.655 000.074 000.074: require('luasnip.nodes.absolute_indexer') +301.222 017.241 000.824: require('luasnip.config') +301.385 017.742 000.502: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +302.266 000.049 000.049: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +303.147 000.099 000.099: require('indent_blankline/utils') +303.156 000.256 000.156: require('indent_blankline') +303.623 000.093 000.093: require('indent_blankline.commands') +303.782 001.055 000.706: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +304.216 000.098 000.098: require('lsp-colors') +305.024 000.956 000.858: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +306.488 001.075 001.075: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +307.360 000.411 000.411: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +307.912 000.092 000.092: require('cmp.utils.api') +308.048 000.066 000.066: require('cmp.types.cmp') +308.210 000.080 000.080: require('cmp.utils.misc') +308.328 000.274 000.194: require('cmp.types.lsp') +308.401 000.067 000.067: require('cmp.types.vim') +308.406 000.487 000.081: require('cmp.types') +308.475 000.065 000.065: require('cmp.utils.highlight') +308.602 000.060 000.060: require('cmp.utils.debug') +308.617 000.137 000.077: require('cmp.utils.autocmd') +309.515 001.773 000.991: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +309.780 000.081 000.081: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +310.207 000.104 000.104: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +310.692 000.172 000.172: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +311.299 000.065 000.065: require('nvim-treesitter.statusline') +311.390 000.084 000.084: require('nvim-treesitter.query_predicates') +311.397 000.237 000.087: require('nvim-treesitter') +312.386 000.250 000.250: require('vim.treesitter.highlighter') +312.746 000.762 000.512: require('nvim-treesitter.highlight') +313.417 002.309 001.310: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +313.878 000.234 000.234: require('treesitter-context') +313.888 000.278 000.043: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +314.260 000.086 000.086: require('nvim-treesitter-refactor') +314.421 000.273 000.187: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +314.787 000.110 000.110: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +315.167 000.079 000.079: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +315.536 000.092 000.092: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +316.316 000.428 000.428: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +316.677 000.059 000.059: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +317.659 000.460 000.460: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +318.449 000.494 000.494: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +319.069 000.362 000.362: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +319.927 000.594 000.594: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +320.227 000.030 000.030: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +320.530 000.061 000.061: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +322.022 011.008: loading packages +323.663 000.443 000.443: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +328.017 005.446 005.003: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +328.726 000.122 000.122: require('cmp.utils.char') +328.741 000.206 000.084: require('cmp.utils.str') +328.812 000.067 000.067: require('cmp.utils.pattern') +329.041 000.067 000.067: require('cmp.utils.buffer') +329.055 000.166 000.099: require('cmp.utils.keymap') +329.064 000.247 000.081: require('cmp.utils.feedkeys') +329.153 000.085 000.085: require('cmp.utils.async') +329.288 000.060 000.060: require('cmp.utils.cache') +329.295 000.137 000.076: require('cmp.context') +329.538 000.082 000.082: require('cmp.config.mapping') +329.700 000.081 000.081: require('cmp.config.compare') +329.705 000.160 000.079: require('cmp.config.default') +329.731 000.347 000.104: require('cmp.config') +329.907 000.066 000.066: require('cmp.matcher') +329.920 000.185 000.119: require('cmp.entry') +329.934 000.636 000.104: require('cmp.source') +330.070 000.059 000.059: require('cmp.utils.event') +330.244 000.086 000.086: require('cmp.utils.window') +330.251 000.175 000.089: require('cmp.view.docs_view') +330.368 000.115 000.115: require('cmp.view.custom_entries_view') +330.485 000.111 000.111: require('cmp.view.wildmenu_entries_view') +330.590 000.100 000.100: require('cmp.view.native_entries_view') +330.668 000.073 000.073: require('cmp.view.ghost_text_view') +330.686 000.748 000.115: require('cmp.view') +330.759 002.340 000.215: require('cmp.core') +331.206 000.068 000.068: require('cmp.config.sources') +331.275 000.061 000.061: require('cmp.config.window') +331.378 003.082 000.613: require('cmp') +331.667 000.065 000.065: require('cmp_buffer.timer') +331.676 000.156 000.090: require('cmp_buffer.buffer') +331.684 000.236 000.080: require('cmp_buffer.source') +331.688 000.305 000.069: require('cmp_buffer') +331.717 003.480 000.093: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +332.116 000.150 000.150: require('cmp_cmdline') +332.152 000.259 000.108: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +332.495 000.072 000.072: require('cmp_nvim_lsp.source') +332.502 000.149 000.078: require('cmp_nvim_lsp') +332.552 000.244 000.094: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +332.866 000.115 000.115: require('cmp_path') +332.896 000.193 000.079: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +333.187 000.090 000.090: require('cmp_luasnip') +333.256 000.210 000.120: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +333.412 001.558: loading after plugins +333.475 000.062: inits 3 +333.487 000.013: reading ShaDa +333.892 000.092 000.092: require('luasnip.loaders._caches') +334.006 000.108 000.108: require('luasnip.util.path') +334.098 000.086 000.086: require('luasnip.loaders.util') +334.316 000.100 000.100: require('luasnip.loaders') +334.355 000.252 000.151: require('luasnip') +334.362 000.653 000.115: require('luasnip.loaders.from_lua') +334.576 000.074 000.074: require('luasnip.nodes.snippetProxy') +334.586 000.175 000.101: require('luasnip.loaders.from_snipmate') +334.714 000.088 000.088: require('luasnip.loaders.from_vscode') +335.773 001.369: opening buffers +335.985 000.212: BufEnter autocommands +335.991 000.006: editing files in windows +351.037 000.897 000.897: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.080 001.080: --- NVIM STARTING --- +027.406 026.326: event init +043.818 016.412: early init +045.469 001.651: locale set +050.897 005.428: init first window +060.729 009.831: inits 1 +060.758 000.029: window checked +060.768 000.010: parsing arguments +071.499 000.121 000.121: require('vim.shared') +071.736 000.114 000.114: require('vim._meta') +071.742 000.234 000.119: require('vim._editor') +071.746 000.411 000.057: require('vim._init_packages') +071.749 010.570: init lua interpreter +071.828 000.079: expanding arguments +073.656 001.828: inits 2 +074.260 000.605: init highlight +074.265 000.004: waiting for UI +076.636 002.371: done waiting for UI +076.670 000.035: init screen for UI +076.912 000.241: init default mappings +076.939 000.028: init default autocommands +085.849 003.940 003.940: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/ftplugin.vim +087.715 000.864 000.864: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/indent.vim +087.951 000.027 000.027: sourcing /usr/share/nvim/archlinux.vim +087.963 000.086 000.059: sourcing /etc/xdg/nvim/sysinit.vim +096.976 005.642 005.642: require('keys') +099.478 002.489 002.489: require('opts') +102.067 000.524 000.524: require('packer.util') +102.123 002.264 001.740: require('packer') +103.995 000.611 000.611: require('packer.log') +104.017 001.096 000.485: require('packer.async') +105.004 000.395 000.395: require('packer.result') +105.013 000.991 000.596: require('packer.jobs') +105.029 002.859 000.772: require('packer.plugin_utils') +105.671 000.619 000.619: require('packer.snapshot') +106.678 007.192 001.450: require('pack') +117.616 010.929 010.929: require('impatient') +118.465 000.192 000.192: require('vim.treesitter.language') +118.485 000.545 000.353: require('vim.treesitter.query') +119.777 000.239 000.239: require('vim.treesitter.languagetree') +119.839 000.619 000.380: require('vim.treesitter') +120.125 001.208 000.589: require('nvim-treesitter.parsers') +120.247 000.116 000.116: require('nvim-treesitter.utils') +120.262 001.550 000.226: require('nvim-treesitter.ts_utils') +120.271 001.781 000.231: require('nvim-treesitter.tsrange') +120.346 000.072 000.072: require('nvim-treesitter.caching') +120.368 002.520 000.122: require('nvim-treesitter.query') +120.394 002.687 000.167: require('nvim-treesitter.configs') +120.789 000.085 000.085: require('nvim-treesitter.info') +120.911 000.116 000.116: require('nvim-treesitter.shell_command_selectors') +120.959 000.452 000.250: require('nvim-treesitter.install') +163.436 045.806 042.666: require('plugins.treesitter') +163.913 000.263 000.263: require('telescope._extensions') +163.923 000.350 000.088: require('telescope') +164.650 000.083 000.083: require('plenary.bit') +164.727 000.071 000.071: require('plenary.functional') +164.774 000.028 000.028: require('ffi') +164.798 000.360 000.178: require('plenary.path') +164.812 000.452 000.092: require('plenary.strings') +164.881 000.066 000.066: require('telescope.deprecated') +165.525 000.355 000.355: require('plenary.log') +165.613 000.628 000.273: require('telescope.log') +166.068 000.281 000.281: require('plenary.job') +166.146 000.071 000.071: require('telescope.state') +166.167 000.548 000.196: require('telescope.utils') +166.178 001.291 000.115: require('telescope.sorters') +166.339 000.139 000.139: require('vim.inspect') +166.544 000.011 000.011: require('vim.F') +169.773 005.637 003.678: require('telescope.config') +170.373 000.089 000.089: require('plenary.window.border') +170.442 000.063 000.063: require('plenary.window') +170.504 000.057 000.057: require('plenary.popup.utils') +170.515 000.733 000.525: require('plenary.popup') +170.584 000.065 000.065: require('telescope.pickers.scroller') +170.652 000.064 000.064: require('telescope.actions.state') +170.724 000.067 000.067: require('telescope.actions.utils') +170.865 000.067 000.067: require('telescope.actions.mt') +170.895 000.167 000.099: require('telescope.actions.set') +171.089 000.072 000.072: require('telescope.config.resolve') +171.099 000.152 000.080: require('telescope.pickers.entry_display') +171.158 000.056 000.056: require('telescope.from_entry') +171.494 007.567 000.626: require('telescope.actions') +172.112 000.077 000.077: require('plenary.tbl') +172.121 000.172 000.094: require('plenary.vararg.rotate') +172.125 000.232 000.060: require('plenary.vararg') +172.186 000.058 000.058: require('plenary.errors') +172.198 000.367 000.077: require('plenary.async.async') +172.264 000.063 000.063: require('plenary.async.structs') +172.278 000.518 000.089: require('plenary.async.control') +172.615 000.234 000.234: require('telescope.make_entry') +172.879 000.074 000.074: require('plenary.async.util') +172.886 000.136 000.063: require('plenary.async.tests') +172.890 000.203 000.066: require('plenary.async') +172.894 000.273 000.070: require('telescope.finders.async_static_finder') +173.099 000.057 000.057: require('plenary.class') +173.124 000.162 000.106: require('telescope._') +173.129 000.232 000.070: require('telescope.finders.async_oneshot_finder') +173.199 000.066 000.066: require('telescope.finders.async_job_finder') +173.208 000.925 000.119: require('telescope.finders') +173.492 000.103 000.103: require('telescope.debounce') +173.650 000.152 000.152: require('telescope.mappings') +173.736 000.081 000.081: require('telescope.pickers.highlights') +173.812 000.070 000.070: require('telescope.pickers.window') +173.959 000.070 000.070: require('telescope.algos.linked_list') +173.966 000.150 000.080: require('telescope.entry_manager') +174.031 000.062 000.062: require('telescope.pickers.multi') +174.060 000.849 000.232: require('telescope.pickers') +174.075 002.421 000.129: require('telescope.builtin.__lsp') +174.124 002.624 000.203: require('telescope.builtin') +174.430 000.222 000.222: require('fzf_lib') +174.440 000.310 000.088: require('telescope._extensions.fzf') +174.788 000.093 000.093: require('telescope._extensions.file_browser.utils') +174.884 000.353 000.260: require('telescope._extensions.file_browser.actions') +175.118 000.142 000.142: require('telescope._extensions.file_browser.make_entry') +175.267 000.143 000.143: require('plenary.scandir') +175.316 000.427 000.142: require('telescope._extensions.file_browser.finders') +175.401 000.081 000.081: require('telescope._extensions.file_browser.picker') +175.494 000.088 000.088: require('telescope._extensions.file_browser.config') +175.500 001.050 000.100: require('telescope._extensions.file_browser') +179.114 000.014 000.014: require('vim.keymap') +179.332 015.886 003.971: require('plugins.telescope') +180.337 000.061 000.061: require('notify.util.queue') +180.346 000.147 000.085: require('notify.util') +180.570 000.221 000.221: require('notify.config.highlights') +180.587 000.469 000.102: require('notify.config') +180.765 000.174 000.174: require('notify.stages') +180.841 000.069 000.069: require('notify.service.notification') +181.057 000.060 000.060: require('notify.animate.spring') +181.063 000.120 000.060: require('notify.animate') +181.076 000.230 000.110: require('notify.windows') +181.365 000.108 000.108: require('notify.service.buffer.highlights') +181.379 000.225 000.116: require('notify.service.buffer') +181.385 000.306 000.081: require('notify.service') +181.497 000.108 000.108: require('notify.stages.util') +181.507 001.480 000.123: require('notify') +181.616 000.106 000.106: require('nvim-tree.iterators.node-iterator') +181.725 001.805 000.219: require('nvim-tree.utils') +181.738 001.887 000.083: require('nvim-tree.events') +181.989 000.078 000.078: require('nvim-tree.log') +182.151 000.156 000.156: require('nvim-tree.git.utils') +182.251 000.095 000.095: require('nvim-tree.git.runner') +182.369 000.113 000.113: require('nvim-tree.watcher') +182.393 000.567 000.125: require('nvim-tree.git') +182.492 000.095 000.095: require('nvim-tree.explorer.watch') +182.580 000.083 000.083: require('nvim-tree.explorer.common') +182.807 000.090 000.090: require('nvim-tree.explorer.node-builders') +182.903 000.089 000.089: require('nvim-tree.explorer.sorters') +183.040 000.132 000.132: require('nvim-tree.explorer.filters') +183.398 000.251 000.251: require('nvim-tree.view') +183.410 000.366 000.114: require('nvim-tree.live-filter') +183.421 000.797 000.120: require('nvim-tree.explorer.explore') +183.517 000.093 000.093: require('nvim-tree.explorer.reload') +183.527 001.785 000.150: require('nvim-tree.explorer') +183.545 003.754 000.082: require('nvim-tree.core') +183.660 000.111 000.111: require('nvim-tree.diagnostics') +183.753 000.087 000.087: require('nvim-tree.renderer.components.padding') +183.842 000.084 000.084: require('nvim-tree.renderer.components.icons') +183.948 000.101 000.101: require('nvim-tree.renderer.components.full-name') +184.037 000.085 000.085: require('nvim-tree.renderer.help') +184.170 000.127 000.127: require('nvim-tree.renderer.components.git') +184.303 000.128 000.128: require('nvim-tree.renderer.builder') +184.399 000.091 000.091: require('nvim-tree.marks') +184.415 004.706 000.137: require('nvim-tree.renderer') +184.518 000.089 000.089: require('nvim-tree.actions.tree-modifiers.collapse-all') +184.609 000.086 000.086: require('nvim-tree.actions.root.dir-up') +184.703 000.089 000.089: require('nvim-tree.actions.root.change-dir') +184.787 000.079 000.079: require('nvim-tree.actions.reloaders.reloaders') +184.875 000.079 000.079: require('nvim-tree.actions.finders.find-file') +184.880 005.245 000.117: require('nvim-tree.lib') +184.995 000.111 000.111: require('nvim-tree.colors') +185.150 000.149 000.149: require('nvim-tree.legacy') +185.288 000.132 000.132: require('nvim-tree.actions.fs.copy-paste') +185.532 000.098 000.098: require('nvim-tree.actions.tree-modifiers.expand-all') +185.617 000.078 000.078: require('nvim-tree.actions.tree-modifiers.toggles') +185.756 000.132 000.132: require('nvim-tree.actions.fs.create-file') +185.858 000.095 000.095: require('nvim-tree.actions.fs.rename-file') +185.985 000.121 000.121: require('nvim-tree.actions.fs.trash') +186.111 000.121 000.121: require('nvim-tree.actions.fs.remove-file') +186.203 000.085 000.085: require('nvim-tree.actions.moves.parent') +186.287 000.079 000.079: require('nvim-tree.actions.moves.sibling') +186.369 000.076 000.076: require('nvim-tree.actions.moves.item') +186.482 000.089 000.089: require('nvim-tree.actions.finders.search-node') +186.565 000.078 000.078: require('nvim-tree.actions.node.run-command') +186.658 000.088 000.088: require('nvim-tree.actions.node.file-popup') +186.795 000.132 000.132: require('nvim-tree.actions.node.system-open') +186.898 000.095 000.095: require('nvim-tree.marks.bulk-move') +186.906 001.612 000.242: require('nvim-tree.actions.dispatch') +186.960 007.522 000.273: require('nvim-tree') +187.039 000.075 000.075: require('nvim-tree.config') +192.091 000.306 000.306: require('nvim-tree.actions') +192.263 000.152 000.152: require('nvim-tree.actions.node.open-file') +196.580 000.258 000.258: require('nvim-tree.marks.navigation') +196.599 001.236 000.978: require('nvim-tree.api') +196.734 001.594 000.357: require('nvim-tree.keymap') +199.512 002.025 002.025: require('nvim-web-devicons') +203.706 024.367 012.694: require('plugins.nvim-tree') +204.070 000.080 000.080: require('lualine_require') +204.613 000.770 000.690: require('lualine') +204.685 000.065 000.065: require('plugins.linecolor') +213.446 000.088 000.088: require('lualine.utils.mode') +215.545 011.829 010.906: require('plugins.lualine') +215.554 127.545 003.406: sourcing /home/sxrdusr/.config/nvim/init.lua +215.571 006.197: sourcing vimrc file(s) +215.888 000.054 000.054: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +217.247 000.068 000.068: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/filetype.lua +218.594 001.163 001.163: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/filetype.vim +222.514 000.412 000.412: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/syntax/synload.vim +222.762 003.325 002.913: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/syntax/syntax.vim +231.144 002.457 002.457: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/gzip.vim +231.338 000.069 000.069: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/health.vim +234.897 002.302 002.302: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +235.369 003.968 001.667: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/matchit.vim +235.874 000.439 000.439: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/matchparen.vim +236.128 000.132 000.132: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/netrwPlugin.vim +236.569 000.021 000.021: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +236.590 000.393 000.372: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/rplugin.vim +236.889 000.215 000.215: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/shada.vim +237.045 000.083 000.083: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/spellfile.vim +237.420 000.309 000.309: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/tarPlugin.vim +237.699 000.210 000.210: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/tohtml.vim +237.832 000.066 000.066: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/tutor.vim +239.418 001.521 001.521: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/zipPlugin.vim +240.901 001.250 001.250: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +242.244 000.130 000.130: require('lspsaga') +242.541 000.087 000.087: require('lspsaga.window') +242.561 000.223 000.135: require('lspsaga.libs') +243.563 000.403 000.403: require('vim.lsp.log') +244.323 000.753 000.753: require('vim.lsp.protocol') +244.738 000.179 000.179: require('vim.lsp._snippet') +244.874 000.130 000.130: require('vim.highlight') +244.902 000.572 000.264: require('vim.lsp.util') +244.921 001.953 000.225: require('vim.lsp.handlers') +245.149 000.225 000.225: require('vim.lsp.rpc') +245.278 000.122 000.122: require('vim.lsp.sync') +245.455 000.170 000.170: require('vim.lsp.buf') +245.583 000.123 000.123: require('vim.lsp.diagnostic') +245.762 000.173 000.173: require('vim.lsp.codelens') +245.998 003.347 000.582: require('vim.lsp') +246.078 000.072 000.072: require('lspsaga.wrap') +246.088 003.523 000.104: require('lspsaga.codeaction') +246.147 003.895 000.150: require('lspsaga.lightbulb') +246.279 000.090 000.090: require('lspsaga.lspkind') +246.456 000.056 000.056: require('mason-core.path') +246.472 000.128 000.072: require('mason.settings') +246.696 000.053 000.053: require('mason-core.functional.data') +246.704 000.122 000.069: require('mason-core.functional.function') +246.741 000.265 000.143: require('mason-core.platform') +246.746 000.457 000.064: require('mason') +246.951 000.103 000.103: require('mason-core.functional') +247.046 000.077 000.077: require('mason-core.functional.list') +247.086 000.318 000.138: require('mason.api.command') +247.253 000.093 000.093: require('mason-core.log') +247.260 000.170 000.077: require('mason-lspconfig') +247.323 000.059 000.059: require('mason-lspconfig.settings') +247.407 000.066 000.066: require('mason-lspconfig.lspconfig_hook') +247.643 000.232 000.232: require('lspconfig.util') +247.953 000.084 000.084: require('mason-core.functional.table') +248.053 000.296 000.211: require('mason-lspconfig.mappings.server') +248.324 000.084 000.084: require('mason-core.async') +248.393 000.062 000.062: require('mason-core.async.uv') +248.404 000.269 000.123: require('mason-core.fs') +248.477 000.069 000.069: require('mason-core.optional') +248.549 000.068 000.068: require('mason-core.EventEmitter') +248.699 000.145 000.145: require('mason-registry.index') +248.726 000.667 000.117: require('mason-registry') +248.799 000.068 000.068: require('mason-lspconfig.server_config_extensions') +248.932 000.129 000.129: require('lspconfig.configs') +249.152 000.176 000.176: require('lspconfig.server_configurations.omnisharp') +249.411 000.075 000.075: require('mason-lspconfig.ensure_installed') +249.664 000.076 000.076: require('mason-core.result') +250.074 000.234 000.234: require('mason-core.process') +250.151 000.069 000.069: require('mason-core.functional.relation') +250.225 000.066 000.066: require('mason-core.functional.logic') +250.238 000.475 000.106: require('mason-core.spawn') +250.323 000.082 000.082: require('mason-core.receipt') +250.409 000.071 000.071: require('mason-core.functional.string') +250.437 000.768 000.141: require('mason-core.installer.context') +250.513 000.072 000.072: require('mason-core.installer.linker') +250.587 000.070 000.070: require('mason-core.async.control') +250.595 001.086 000.101: require('mason-core.installer') +250.695 000.097 000.097: require('mason-core.installer.handle') +251.037 000.066 000.066: require('mason-core.managers.powershell') +251.043 000.138 000.073: require('mason-core.fetch') +251.047 000.200 000.061: require('mason-core.managers.cargo.client') +251.294 000.526 000.327: require('mason-core.managers.cargo') +251.449 000.148 000.148: require('mason-core.managers.composer') +251.567 000.112 000.112: require('mason-core.managers.gem') +251.649 000.077 000.077: require('mason-core.managers.git') +251.832 000.090 000.090: require('mason-core.managers.std') +251.912 000.075 000.075: require('mason-core.managers.github.client') +251.925 000.271 000.106: require('mason-core.managers.github') +252.028 000.100 000.100: require('mason-core.managers.go') +252.155 000.122 000.122: require('mason-core.managers.luarocks') +252.261 000.101 000.101: require('mason-core.managers.npm') +252.406 000.139 000.139: require('mason-core.managers.pip3') +252.423 001.722 000.125: require('mason-core.package.version-check') +252.433 003.015 000.110: require('mason-core.package') +252.549 000.091 000.091: require('mason-registry.lua-language-server') +252.939 000.191 000.191: require('mason-registry.clangd') +253.173 000.194 000.194: require('mason-registry.rust-analyzer') +253.330 000.055 000.055: require('mason-core.notify') +253.408 000.068 000.068: require('mason-core.functional.number') +253.465 000.282 000.159: require('mason-lspconfig.api.command') +253.471 012.397 001.794: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +254.877 000.113 000.113: sourcing /tmp/.mount_nvimPFskb9/usr/share/nvim/runtime/plugin/man.lua +255.100 011.297: loading rtp plugins +256.891 000.076 000.076: require('Comment.config') +256.985 000.086 000.086: require('Comment.utils') +257.060 000.070 000.070: require('Comment.opfunc') +257.130 000.065 000.065: require('Comment.extra') +257.145 000.468 000.170: require('Comment.api') +257.568 000.946 000.477: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +258.251 000.068 000.068: require('luasnip.util.types') +258.335 000.077 000.077: require('luasnip.util.ext_opts') +258.413 000.073 000.073: require('luasnip.extras.filetype_functions') +258.485 000.067 000.067: require('luasnip.session') +258.793 000.118 000.118: require('luasnip.util.util') +258.874 000.075 000.075: require('luasnip.nodes.util') +258.941 000.063 000.063: require('luasnip.util.events') +258.958 000.376 000.119: require('luasnip.nodes.node') +259.103 000.096 000.096: require('luasnip.util.extend_decorator') +259.115 000.625 000.153: require('luasnip.nodes.insertNode') +259.378 000.090 000.090: require('luasnip.util.mark') +259.606 000.093 000.093: require('luasnip.nodes.textNode') +260.491 000.806 000.806: require('luasnip.util._builtin_vars') +260.690 001.078 000.272: require('luasnip.util.environ') +260.786 000.090 000.090: require('luasnip.util.pattern_tokenizer') +260.853 000.062 000.062: require('luasnip.util.dict') +260.946 000.088 000.088: require('luasnip.session.snippet_collection') +261.000 001.615 000.205: require('luasnip.nodes.snippet') +261.029 001.911 000.206: require('luasnip.nodes.choiceNode') +261.206 000.114 000.114: require('luasnip.nodes.functionNode') +261.370 000.157 000.157: require('luasnip.nodes.dynamicNode') +261.490 000.114 000.114: require('luasnip.nodes.restoreNode') +261.582 000.086 000.086: require('luasnip.extras') +263.685 002.019 002.019: require('luasnip.util.str') +263.699 002.110 000.091: require('luasnip.extras.fmt') +263.788 000.083 000.083: require('luasnip.extras.expand_conditions') +264.029 000.075 000.075: require('luasnip.util.parser.neovim_ast') +277.336 000.093 000.093: require('luasnip.util.directed_graph') +277.357 013.492 013.325: require('luasnip.util.parser.ast_utils') +277.516 000.067 000.067: require('luasnip.util.functions') +277.529 000.167 000.100: require('luasnip.util.parser.ast_parser') +277.696 000.163 000.163: require('luasnip.util.parser.neovim_parser') +277.708 013.913 000.090: require('luasnip.util.parser') +277.779 000.066 000.066: require('luasnip.nodes.absolute_indexer') +278.395 020.332 000.867: require('luasnip.config') +278.560 020.810 000.478: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +279.482 000.049 000.049: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +280.347 000.091 000.091: require('indent_blankline/utils') +280.356 000.243 000.152: require('indent_blankline') +280.865 000.093 000.093: require('indent_blankline.commands') +281.069 001.130 000.793: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +281.484 000.096 000.096: require('lsp-colors') +281.881 000.545 000.449: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +283.314 001.039 001.039: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +284.157 000.385 000.385: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +284.682 000.088 000.088: require('cmp.utils.api') +284.811 000.061 000.061: require('cmp.types.cmp') +284.973 000.083 000.083: require('cmp.utils.misc') +285.067 000.251 000.168: require('cmp.types.lsp') +285.136 000.063 000.063: require('cmp.types.vim') +285.142 000.453 000.079: require('cmp.types') +285.208 000.062 000.062: require('cmp.utils.highlight') +285.330 000.055 000.055: require('cmp.utils.debug') +285.351 000.139 000.084: require('cmp.utils.autocmd') +285.930 001.404 000.661: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +286.193 000.079 000.079: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +286.604 000.102 000.102: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +287.061 000.154 000.154: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +287.709 000.068 000.068: require('nvim-treesitter.statusline') +287.795 000.080 000.080: require('nvim-treesitter.query_predicates') +287.802 000.235 000.087: require('nvim-treesitter') +289.115 000.255 000.255: require('vim.treesitter.highlighter') +289.471 000.761 000.506: require('nvim-treesitter.highlight') +289.873 002.400 001.404: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +290.336 000.219 000.219: require('treesitter-context') +290.346 000.259 000.040: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +290.708 000.080 000.080: require('nvim-treesitter-refactor') +290.977 000.375 000.295: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +291.352 000.109 000.109: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +291.727 000.077 000.077: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +292.092 000.092 000.092: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +292.887 000.424 000.424: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +293.259 000.060 000.060: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +294.235 000.484 000.484: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +295.020 000.494 000.494: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +295.620 000.349 000.349: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +296.512 000.601 000.601: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +296.818 000.030 000.030: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +297.099 000.045 000.045: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +298.594 011.053: loading packages +300.317 000.483 000.483: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +304.622 005.447 004.964: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +305.441 000.235 000.235: require('cmp.utils.char') +305.461 000.333 000.098: require('cmp.utils.str') +305.537 000.071 000.071: require('cmp.utils.pattern') +305.802 000.083 000.083: require('cmp.utils.buffer') +305.818 000.210 000.128: require('cmp.utils.keymap') +305.827 000.285 000.075: require('cmp.utils.feedkeys') +305.917 000.087 000.087: require('cmp.utils.async') +306.045 000.057 000.057: require('cmp.utils.cache') +306.058 000.135 000.078: require('cmp.context') +306.303 000.077 000.077: require('cmp.config.mapping') +306.465 000.079 000.079: require('cmp.config.compare') +306.470 000.161 000.081: require('cmp.config.default') +306.496 000.349 000.111: require('cmp.config') +306.668 000.065 000.065: require('cmp.matcher') +306.681 000.182 000.116: require('cmp.entry') +306.692 000.631 000.100: require('cmp.source') +306.832 000.064 000.064: require('cmp.utils.event') +306.997 000.088 000.088: require('cmp.utils.window') +307.004 000.167 000.079: require('cmp.view.docs_view') +307.117 000.110 000.110: require('cmp.view.custom_entries_view') +307.224 000.102 000.102: require('cmp.view.wildmenu_entries_view') +307.309 000.080 000.080: require('cmp.view.native_entries_view') +307.385 000.072 000.072: require('cmp.view.ghost_text_view') +307.402 000.707 000.112: require('cmp.view') +307.510 002.498 000.249: require('cmp.core') +307.774 000.074 000.074: require('cmp.config.sources') +307.838 000.058 000.058: require('cmp.config.window') +307.940 003.047 000.417: require('cmp') +308.208 000.061 000.061: require('cmp_buffer.timer') +308.217 000.143 000.082: require('cmp_buffer.buffer') +308.222 000.220 000.078: require('cmp_buffer.source') +308.226 000.281 000.061: require('cmp_buffer') +308.256 003.417 000.089: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +308.633 000.153 000.153: require('cmp_cmdline') +308.667 000.236 000.083: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +308.999 000.072 000.072: require('cmp_nvim_lsp.source') +309.006 000.147 000.075: require('cmp_nvim_lsp') +309.084 000.268 000.121: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +309.398 000.114 000.114: require('cmp_path') +309.432 000.197 000.083: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +309.712 000.085 000.085: require('cmp_luasnip') +309.781 000.199 000.115: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +309.930 001.571: loading after plugins +309.992 000.062: inits 3 +310.006 000.014: reading ShaDa +310.393 000.068 000.068: require('luasnip.loaders._caches') +310.505 000.105 000.105: require('luasnip.util.path') +310.592 000.082 000.082: require('luasnip.loaders.util') +310.822 000.111 000.111: require('luasnip.loaders') +310.860 000.263 000.151: require('luasnip') +310.867 000.635 000.118: require('luasnip.loaders.from_lua') +311.072 000.071 000.071: require('luasnip.nodes.snippetProxy') +311.081 000.167 000.096: require('luasnip.loaders.from_snipmate') +311.240 000.091 000.091: require('luasnip.loaders.from_vscode') +311.943 001.045: opening buffers +312.150 000.207: BufEnter autocommands +312.157 000.006: editing files in windows +327.507 000.688 000.688: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.319 001.319: --- NVIM STARTING --- +030.721 029.402: event init +047.792 017.071: early init +049.585 001.792: locale set +055.317 005.732: init first window +065.751 010.434: inits 1 +065.775 000.025: window checked +065.783 000.008: parsing arguments +077.866 000.266 000.266: require('vim.shared') +078.373 000.236 000.236: require('vim._meta') +078.386 000.497 000.261: require('vim._editor') +078.394 000.903 000.139: require('vim._init_packages') +078.401 011.715: init lua interpreter +078.562 000.161: expanding arguments +080.531 001.969: inits 2 +081.878 001.347: init highlight +081.888 000.010: waiting for UI +084.866 002.978: done waiting for UI +084.916 000.050: init screen for UI +085.278 000.361: init default mappings +085.312 000.035: init default autocommands +097.149 004.626 004.626: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/ftplugin.vim +100.189 001.071 001.071: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/indent.vim +100.744 000.057 000.057: sourcing /usr/share/nvim/archlinux.vim +100.769 000.180 000.123: sourcing /etc/xdg/nvim/sysinit.vim +114.486 007.066 007.066: require('keys') +116.767 002.270 002.270: require('opts') +119.360 000.518 000.518: require('packer.util') +119.441 002.273 001.755: require('packer') +121.592 000.885 000.885: require('packer.log') +121.606 001.371 000.486: require('packer.async') +122.581 000.395 000.395: require('packer.result') +122.589 000.978 000.583: require('packer.jobs') +122.606 003.115 000.766: require('packer.plugin_utils') +123.247 000.619 000.619: require('packer.snapshot') +124.534 007.759 001.752: require('pack') +143.252 018.703 018.703: require('impatient') +145.195 000.383 000.383: require('vim.treesitter.language') +145.225 001.260 000.877: require('vim.treesitter.query') +146.906 000.447 000.447: require('vim.treesitter.languagetree') +147.037 000.947 000.500: require('vim.treesitter') +147.497 001.828 000.882: require('nvim-treesitter.parsers') +147.696 000.190 000.190: require('nvim-treesitter.utils') +147.719 002.227 000.209: require('nvim-treesitter.ts_utils') +147.732 002.501 000.273: require('nvim-treesitter.tsrange') +147.854 000.116 000.116: require('nvim-treesitter.caching') +147.890 004.072 000.195: require('nvim-treesitter.query') +147.933 004.487 000.416: require('nvim-treesitter.configs') +148.437 000.212 000.212: require('nvim-treesitter.info') +148.898 000.450 000.450: require('nvim-treesitter.shell_command_selectors') +148.976 001.005 000.343: require('nvim-treesitter.install') +198.789 055.516 050.023: require('plugins.treesitter') +199.156 000.076 000.076: require('telescope._extensions') +199.170 000.197 000.121: require('telescope') +199.903 000.086 000.086: require('plenary.bit') +199.981 000.071 000.071: require('plenary.functional') +200.068 000.067 000.067: require('ffi') +200.094 000.469 000.244: require('plenary.path') +200.107 000.558 000.089: require('plenary.strings') +200.177 000.067 000.067: require('telescope.deprecated') +200.582 000.238 000.238: require('plenary.log') +200.663 000.379 000.141: require('telescope.log') +201.029 000.245 000.245: require('plenary.job') +201.108 000.073 000.073: require('telescope.state') +201.123 000.454 000.136: require('telescope.utils') +201.136 000.954 000.122: require('telescope.sorters') +201.247 000.088 000.088: require('vim.inspect') +201.726 000.011 000.011: require('vim.F') +205.122 005.710 004.033: require('telescope.config') +205.782 000.089 000.089: require('plenary.window.border') +205.852 000.062 000.062: require('plenary.window') +205.913 000.056 000.056: require('plenary.popup.utils') +205.925 000.793 000.585: require('plenary.popup') +205.993 000.065 000.065: require('telescope.pickers.scroller') +206.062 000.064 000.064: require('telescope.actions.state') +206.136 000.069 000.069: require('telescope.actions.utils') +206.279 000.068 000.068: require('telescope.actions.mt') +206.310 000.169 000.101: require('telescope.actions.set') +206.504 000.073 000.073: require('telescope.config.resolve') +206.510 000.147 000.075: require('telescope.pickers.entry_display') +206.575 000.061 000.061: require('telescope.from_entry') +206.997 007.823 000.744: require('telescope.actions') +207.559 000.058 000.058: require('plenary.tbl') +207.568 000.123 000.065: require('plenary.vararg.rotate') +207.572 000.184 000.061: require('plenary.vararg') +207.667 000.092 000.092: require('plenary.errors') +207.677 000.352 000.076: require('plenary.async.async') +207.862 000.182 000.182: require('plenary.async.structs') +207.879 000.623 000.089: require('plenary.async.control') +208.162 000.201 000.201: require('telescope.make_entry') +208.425 000.073 000.073: require('plenary.async.util') +208.431 000.135 000.063: require('plenary.async.tests') +208.435 000.204 000.068: require('plenary.async') +208.440 000.273 000.069: require('telescope.finders.async_static_finder') +208.641 000.058 000.058: require('plenary.class') +208.667 000.161 000.103: require('telescope._') +208.672 000.229 000.068: require('telescope.finders.async_oneshot_finder') +208.741 000.066 000.066: require('telescope.finders.async_job_finder') +208.751 000.867 000.098: require('telescope.finders') +209.003 000.075 000.075: require('telescope.debounce') +209.169 000.161 000.161: require('telescope.mappings') +209.256 000.081 000.081: require('telescope.pickers.highlights') +209.330 000.069 000.069: require('telescope.pickers.window') +209.471 000.069 000.069: require('telescope.algos.linked_list') +209.479 000.144 000.075: require('telescope.entry_manager') +209.542 000.061 000.061: require('telescope.pickers.multi') +209.574 000.820 000.230: require('telescope.pickers') +209.589 002.444 000.134: require('telescope.builtin.__lsp') +209.612 002.607 000.163: require('telescope.builtin') +209.917 000.224 000.224: require('fzf_lib') +209.927 000.310 000.087: require('telescope._extensions.fzf') +210.257 000.090 000.090: require('telescope._extensions.file_browser.utils') +210.353 000.324 000.234: require('telescope._extensions.file_browser.actions') +210.580 000.137 000.137: require('telescope._extensions.file_browser.make_entry') +210.726 000.140 000.140: require('plenary.scandir') +210.774 000.416 000.139: require('telescope._extensions.file_browser.finders') +210.858 000.079 000.079: require('telescope._extensions.file_browser.picker') +210.951 000.088 000.088: require('telescope._extensions.file_browser.config') +210.957 001.019 000.112: require('telescope._extensions.file_browser') +213.828 000.012 000.012: require('vim.keymap') +214.133 015.325 003.356: require('plugins.telescope') +215.166 000.060 000.060: require('notify.util.queue') +215.175 000.142 000.083: require('notify.util') +215.388 000.209 000.209: require('notify.config.highlights') +215.402 000.458 000.106: require('notify.config') +215.472 000.066 000.066: require('notify.stages') +215.542 000.065 000.065: require('notify.service.notification') +215.796 000.078 000.078: require('notify.animate.spring') +215.801 000.160 000.082: require('notify.animate') +215.809 000.262 000.102: require('notify.windows') +216.106 000.110 000.110: require('notify.service.buffer.highlights') +216.116 000.217 000.107: require('notify.service.buffer') +216.123 000.311 000.094: require('notify.service') +216.229 000.103 000.103: require('notify.stages.util') +216.244 001.471 000.207: require('notify') +216.328 000.080 000.080: require('nvim-tree.iterators.node-iterator') +216.417 001.742 000.190: require('nvim-tree.utils') +216.453 001.850 000.108: require('nvim-tree.events') +216.712 000.089 000.089: require('nvim-tree.log') +216.874 000.156 000.156: require('nvim-tree.git.utils') +216.970 000.091 000.091: require('nvim-tree.git.runner') +217.064 000.090 000.090: require('nvim-tree.watcher') +217.075 000.536 000.110: require('nvim-tree.git') +217.170 000.092 000.092: require('nvim-tree.explorer.watch') +217.254 000.078 000.078: require('nvim-tree.explorer.common') +217.514 000.128 000.128: require('nvim-tree.explorer.node-builders') +217.619 000.099 000.099: require('nvim-tree.explorer.sorters') +217.714 000.090 000.090: require('nvim-tree.explorer.filters') +218.054 000.223 000.223: require('nvim-tree.view') +218.067 000.349 000.125: require('nvim-tree.live-filter') +218.074 000.777 000.112: require('nvim-tree.explorer.explore') +218.180 000.102 000.102: require('nvim-tree.explorer.reload') +218.193 001.736 000.150: require('nvim-tree.explorer') +218.201 003.654 000.068: require('nvim-tree.core') +218.320 000.115 000.115: require('nvim-tree.diagnostics') +218.413 000.087 000.087: require('nvim-tree.renderer.components.padding') +218.510 000.093 000.093: require('nvim-tree.renderer.components.icons') +218.610 000.095 000.095: require('nvim-tree.renderer.components.full-name') +218.693 000.078 000.078: require('nvim-tree.renderer.help') +218.820 000.122 000.122: require('nvim-tree.renderer.components.git') +218.949 000.124 000.124: require('nvim-tree.renderer.builder') +219.045 000.091 000.091: require('nvim-tree.marks') +219.065 004.592 000.133: require('nvim-tree.renderer') +219.158 000.083 000.083: require('nvim-tree.actions.tree-modifiers.collapse-all') +219.256 000.094 000.094: require('nvim-tree.actions.root.dir-up') +219.354 000.092 000.092: require('nvim-tree.actions.root.change-dir') +219.445 000.087 000.087: require('nvim-tree.actions.reloaders.reloaders') +219.533 000.082 000.082: require('nvim-tree.actions.finders.find-file') +219.538 005.136 000.107: require('nvim-tree.lib') +219.654 000.112 000.112: require('nvim-tree.colors') +219.809 000.149 000.149: require('nvim-tree.legacy') +219.940 000.126 000.126: require('nvim-tree.actions.fs.copy-paste') +220.210 000.120 000.120: require('nvim-tree.actions.tree-modifiers.expand-all') +220.313 000.096 000.096: require('nvim-tree.actions.tree-modifiers.toggles') +220.456 000.134 000.134: require('nvim-tree.actions.fs.create-file') +220.597 000.133 000.133: require('nvim-tree.actions.fs.rename-file') +220.741 000.133 000.133: require('nvim-tree.actions.fs.trash') +220.840 000.093 000.093: require('nvim-tree.actions.fs.remove-file') +220.929 000.079 000.079: require('nvim-tree.actions.moves.parent') +221.015 000.081 000.081: require('nvim-tree.actions.moves.sibling') +221.098 000.078 000.078: require('nvim-tree.actions.moves.item') +221.197 000.085 000.085: require('nvim-tree.actions.finders.search-node') +221.282 000.080 000.080: require('nvim-tree.actions.node.run-command') +221.377 000.090 000.090: require('nvim-tree.actions.node.file-popup') +221.479 000.097 000.097: require('nvim-tree.actions.node.system-open') +221.574 000.084 000.084: require('nvim-tree.marks.bulk-move') +221.586 001.639 000.257: require('nvim-tree.actions.dispatch') +221.649 007.424 000.262: require('nvim-tree') +221.726 000.073 000.073: require('nvim-tree.config') +225.771 000.220 000.220: require('nvim-tree.actions') +225.914 000.131 000.131: require('nvim-tree.actions.node.open-file') +230.601 000.428 000.428: require('nvim-tree.marks.navigation') +230.613 000.910 000.482: require('nvim-tree.api') +230.739 001.334 000.423: require('nvim-tree.keymap') +232.960 001.583 001.583: require('nvim-web-devicons') +237.002 022.861 012.097: require('plugins.nvim-tree') +237.294 000.076 000.076: require('lualine_require') +237.847 000.737 000.661: require('lualine') +237.917 000.063 000.063: require('plugins.linecolor') +245.353 000.079 000.079: require('lualine.utils.mode') +247.774 010.763 009.884: require('plugins.lualine') +247.783 146.914 006.650: sourcing /home/sxrdusr/.config/nvim/init.lua +247.800 009.697: sourcing vimrc file(s) +248.092 000.053 000.053: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +249.536 000.063 000.063: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/filetype.lua +252.421 002.539 002.539: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/filetype.vim +255.626 000.259 000.259: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/syntax/synload.vim +255.875 002.652 002.393: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/syntax/syntax.vim +264.298 002.416 002.416: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/gzip.vim +264.568 000.071 000.071: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/health.vim +268.136 002.317 002.317: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +268.581 003.942 001.625: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/matchit.vim +269.046 000.402 000.402: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/matchparen.vim +269.193 000.077 000.077: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/netrwPlugin.vim +269.596 000.021 000.021: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +269.616 000.360 000.339: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/rplugin.vim +269.864 000.186 000.186: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/shada.vim +270.034 000.101 000.101: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/spellfile.vim +270.474 000.343 000.343: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/tarPlugin.vim +270.876 000.269 000.269: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/tohtml.vim +271.243 000.249 000.249: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/tutor.vim +273.325 001.871 001.871: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/zipPlugin.vim +275.008 001.252 001.252: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +276.428 000.132 000.132: require('lspsaga') +276.723 000.115 000.115: require('lspsaga.window') +276.745 000.219 000.104: require('lspsaga.libs') +277.875 000.496 000.496: require('vim.lsp.log') +278.559 000.676 000.676: require('vim.lsp.protocol') +279.115 000.243 000.243: require('vim.lsp._snippet') +279.299 000.178 000.178: require('vim.highlight') +279.329 000.762 000.341: require('vim.lsp.util') +279.348 002.182 000.248: require('vim.lsp.handlers') +279.618 000.266 000.266: require('vim.lsp.rpc') +279.748 000.123 000.123: require('vim.lsp.sync') +279.924 000.169 000.169: require('vim.lsp.buf') +280.123 000.193 000.193: require('vim.lsp.diagnostic') +280.307 000.178 000.178: require('vim.lsp.codelens') +280.454 003.614 000.502: require('vim.lsp') +280.531 000.069 000.069: require('lspsaga.wrap') +280.541 003.792 000.109: require('lspsaga.codeaction') +280.582 004.146 000.135: require('lspsaga.lightbulb') +280.712 000.090 000.090: require('lspsaga.lspkind') +280.888 000.054 000.054: require('mason-core.path') +280.905 000.127 000.073: require('mason.settings') +281.098 000.053 000.053: require('mason-core.functional.data') +281.107 000.120 000.067: require('mason-core.functional.function') +281.164 000.255 000.135: require('mason-core.platform') +281.169 000.446 000.064: require('mason') +281.386 000.115 000.115: require('mason-core.functional') +281.494 000.089 000.089: require('mason-core.functional.list') +281.542 000.350 000.146: require('mason.api.command') +281.730 000.105 000.105: require('mason-core.log') +281.740 000.194 000.089: require('mason-lspconfig') +281.808 000.064 000.064: require('mason-lspconfig.settings') +281.901 000.076 000.076: require('mason-lspconfig.lspconfig_hook') +282.200 000.294 000.294: require('lspconfig.util') +282.434 000.073 000.073: require('mason-core.functional.table') +282.539 000.313 000.240: require('mason-lspconfig.mappings.server') +282.810 000.086 000.086: require('mason-core.async') +282.878 000.061 000.061: require('mason-core.async.uv') +282.892 000.271 000.124: require('mason-core.fs') +282.962 000.066 000.066: require('mason-core.optional') +283.034 000.068 000.068: require('mason-core.EventEmitter') +283.206 000.167 000.167: require('mason-registry.index') +283.228 000.682 000.110: require('mason-registry') +283.298 000.066 000.066: require('mason-lspconfig.server_config_extensions') +283.428 000.125 000.125: require('lspconfig.configs') +283.560 000.087 000.087: require('lspconfig.server_configurations.omnisharp') +283.773 000.072 000.072: require('mason-lspconfig.ensure_installed') +284.028 000.072 000.072: require('mason-core.result') +284.440 000.229 000.229: require('mason-core.process') +284.519 000.070 000.070: require('mason-core.functional.relation') +284.595 000.067 000.067: require('mason-core.functional.logic') +284.608 000.468 000.101: require('mason-core.spawn') +284.698 000.085 000.085: require('mason-core.receipt') +284.781 000.071 000.071: require('mason-core.functional.string') +284.810 000.776 000.153: require('mason-core.installer.context') +284.890 000.076 000.076: require('mason-core.installer.linker') +284.972 000.078 000.078: require('mason-core.async.control') +284.981 001.107 000.105: require('mason-core.installer') +285.078 000.094 000.094: require('mason-core.installer.handle') +285.427 000.066 000.066: require('mason-core.managers.powershell') +285.433 000.140 000.074: require('mason-core.fetch') +285.436 000.205 000.065: require('mason-core.managers.cargo.client') +285.472 000.319 000.114: require('mason-core.managers.cargo') +285.581 000.104 000.104: require('mason-core.managers.composer') +285.755 000.169 000.169: require('mason-core.managers.gem') +285.850 000.089 000.089: require('mason-core.managers.git') +286.034 000.095 000.095: require('mason-core.managers.std') +286.124 000.084 000.084: require('mason-core.managers.github.client') +286.134 000.279 000.099: require('mason-core.managers.github') +286.323 000.186 000.186: require('mason-core.managers.go') +286.458 000.129 000.129: require('mason-core.managers.luarocks') +286.603 000.139 000.139: require('mason-core.managers.npm') +286.811 000.202 000.202: require('mason-core.managers.pip3') +286.831 001.746 000.130: require('mason-core.package.version-check') +286.851 003.071 000.124: require('mason-core.package') +287.185 000.212 000.212: require('mason-registry.lua-language-server') +287.599 000.121 000.121: require('mason-registry.clangd') +287.807 000.156 000.156: require('mason-registry.rust-analyzer') +287.971 000.059 000.059: require('mason-core.notify') +288.048 000.070 000.070: require('mason-core.functional.number') +288.105 000.288 000.159: require('mason-lspconfig.api.command') +288.111 012.924 001.940: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +289.627 000.116 000.116: sourcing /tmp/.mount_nvimc6bcRu/usr/share/nvim/runtime/plugin/man.lua +289.926 012.241: loading rtp plugins +291.669 000.068 000.068: require('Comment.config') +291.770 000.093 000.093: require('Comment.utils') +291.845 000.070 000.070: require('Comment.opfunc') +291.913 000.063 000.063: require('Comment.extra') +291.931 000.454 000.161: require('Comment.api') +292.336 000.918 000.463: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +293.020 000.065 000.065: require('luasnip.util.types') +293.097 000.070 000.070: require('luasnip.util.ext_opts') +293.175 000.073 000.073: require('luasnip.extras.filetype_functions') +293.253 000.073 000.073: require('luasnip.session') +293.586 000.123 000.123: require('luasnip.util.util') +293.668 000.075 000.075: require('luasnip.nodes.util') +293.740 000.067 000.067: require('luasnip.util.events') +293.759 000.415 000.150: require('luasnip.nodes.node') +293.874 000.069 000.069: require('luasnip.util.extend_decorator') +293.890 000.632 000.147: require('luasnip.nodes.insertNode') +294.141 000.080 000.080: require('luasnip.util.mark') +294.372 000.092 000.092: require('luasnip.nodes.textNode') +295.150 000.699 000.699: require('luasnip.util._builtin_vars') +295.399 001.020 000.321: require('luasnip.util.environ') +295.489 000.083 000.083: require('luasnip.util.pattern_tokenizer') +295.557 000.063 000.063: require('luasnip.util.dict') +295.649 000.087 000.087: require('luasnip.session.snippet_collection') +295.706 001.558 000.213: require('luasnip.nodes.snippet') +295.735 001.841 000.203: require('luasnip.nodes.choiceNode') +295.954 000.158 000.158: require('luasnip.nodes.functionNode') +296.138 000.175 000.175: require('luasnip.nodes.dynamicNode') +296.263 000.119 000.119: require('luasnip.nodes.restoreNode') +296.351 000.082 000.082: require('luasnip.extras') +298.885 000.081 000.081: require('luasnip.util.str') +298.898 002.540 002.459: require('luasnip.extras.fmt') +298.964 000.061 000.061: require('luasnip.extras.expand_conditions') +299.206 000.074 000.074: require('luasnip.util.parser.neovim_ast') +310.443 000.088 000.088: require('luasnip.util.directed_graph') +310.466 011.416 011.254: require('luasnip.util.parser.ast_utils') +310.629 000.069 000.069: require('luasnip.util.functions') +310.643 000.173 000.103: require('luasnip.util.parser.ast_parser') +310.828 000.181 000.181: require('luasnip.util.parser.neovim_parser') +310.841 011.869 000.099: require('luasnip.util.parser') +310.920 000.075 000.075: require('luasnip.nodes.absolute_indexer') +311.421 018.589 000.756: require('luasnip.config') +311.587 019.067 000.477: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +312.464 000.049 000.049: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +313.335 000.094 000.094: require('indent_blankline/utils') +313.345 000.250 000.155: require('indent_blankline') +313.879 000.080 000.080: require('indent_blankline.commands') +314.049 001.124 000.794: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim/plugin/indent_blankline.vim +314.476 000.103 000.103: require('lsp-colors') +315.271 000.951 000.848: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +316.489 000.830 000.830: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +317.341 000.380 000.380: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +317.862 000.085 000.085: require('cmp.utils.api') +318.005 000.073 000.073: require('cmp.types.cmp') +318.157 000.075 000.075: require('cmp.utils.misc') +318.188 000.177 000.102: require('cmp.types.lsp') +318.250 000.057 000.057: require('cmp.types.vim') +318.255 000.386 000.079: require('cmp.types') +318.323 000.065 000.065: require('cmp.utils.highlight') +318.445 000.056 000.056: require('cmp.utils.debug') +318.463 000.135 000.078: require('cmp.utils.autocmd') +319.108 001.399 000.728: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +319.363 000.080 000.080: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +319.779 000.099 000.099: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +320.253 000.163 000.163: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +320.855 000.065 000.065: require('nvim-treesitter.statusline') +320.945 000.083 000.083: require('nvim-treesitter.query_predicates') +320.952 000.230 000.082: require('nvim-treesitter') +322.295 000.193 000.193: require('vim.treesitter.highlighter') +322.662 000.704 000.510: require('nvim-treesitter.highlight') +323.417 002.749 001.816: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +323.932 000.256 000.256: require('treesitter-context') +323.942 000.298 000.043: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +324.311 000.082 000.082: require('nvim-treesitter-refactor') +324.529 000.327 000.245: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +324.909 000.111 000.111: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +325.289 000.079 000.079: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +325.655 000.092 000.092: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +326.420 000.419 000.419: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +326.828 000.061 000.061: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +327.883 000.564 000.564: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +328.663 000.487 000.487: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +329.274 000.359 000.359: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +330.130 000.601 000.601: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +330.437 000.030 000.030: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +330.720 000.045 000.045: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +332.100 010.893: loading packages +333.792 000.490 000.490: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +338.131 005.488 004.998: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +338.944 000.173 000.173: require('cmp.utils.char') +338.960 000.260 000.087: require('cmp.utils.str') +339.037 000.072 000.072: require('cmp.utils.pattern') +339.257 000.059 000.059: require('cmp.utils.buffer') +339.268 000.156 000.097: require('cmp.utils.keymap') +339.279 000.237 000.082: require('cmp.utils.feedkeys') +339.372 000.089 000.089: require('cmp.utils.async') +339.505 000.058 000.058: require('cmp.utils.cache') +339.512 000.135 000.076: require('cmp.context') +339.751 000.077 000.077: require('cmp.config.mapping') +339.918 000.085 000.085: require('cmp.config.compare') +339.924 000.165 000.080: require('cmp.config.default') +339.950 000.350 000.108: require('cmp.config') +340.139 000.066 000.066: require('cmp.matcher') +340.154 000.199 000.133: require('cmp.entry') +340.168 000.653 000.104: require('cmp.source') +340.306 000.058 000.058: require('cmp.utils.event') +340.467 000.084 000.084: require('cmp.utils.window') +340.474 000.163 000.078: require('cmp.view.docs_view') +340.593 000.116 000.116: require('cmp.view.custom_entries_view') +340.706 000.109 000.109: require('cmp.view.wildmenu_entries_view') +340.794 000.083 000.083: require('cmp.view.native_entries_view') +340.869 000.071 000.071: require('cmp.view.ghost_text_view') +340.886 000.715 000.116: require('cmp.view') +340.961 002.378 000.217: require('cmp.core') +341.208 000.064 000.064: require('cmp.config.sources') +341.271 000.055 000.055: require('cmp.config.window') +341.368 002.921 000.423: require('cmp') +341.641 000.060 000.060: require('cmp_buffer.timer') +341.652 000.145 000.085: require('cmp_buffer.buffer') +341.658 000.223 000.078: require('cmp_buffer.source') +341.662 000.289 000.066: require('cmp_buffer') +341.699 003.345 000.135: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +342.059 000.148 000.148: require('cmp_cmdline') +342.093 000.222 000.075: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +342.424 000.070 000.070: require('cmp_nvim_lsp.source') +342.434 000.147 000.076: require('cmp_nvim_lsp') +342.494 000.251 000.105: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +342.793 000.115 000.115: require('cmp_path') +342.826 000.184 000.070: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +343.121 000.086 000.086: require('cmp_luasnip') +343.190 000.203 000.118: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +343.339 001.544: loading after plugins +343.447 000.108: inits 3 +343.452 000.005: reading ShaDa +343.839 000.070 000.070: require('luasnip.loaders._caches') +343.956 000.110 000.110: require('luasnip.util.path') +344.050 000.088 000.088: require('luasnip.loaders.util') +344.269 000.099 000.099: require('luasnip.loaders') +344.305 000.250 000.151: require('luasnip') +344.318 000.637 000.119: require('luasnip.loaders.from_lua') +344.553 000.102 000.102: require('luasnip.nodes.snippetProxy') +344.567 000.203 000.101: require('luasnip.loaders.from_snipmate') +344.694 000.088 000.088: require('luasnip.loaders.from_vscode') +345.712 001.333: opening buffers +345.922 000.210: BufEnter autocommands +345.929 000.007: editing files in windows +363.002 000.669 000.669: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.322 001.322: --- NVIM STARTING --- +029.108 027.786: event init +046.110 017.002: early init +047.930 001.821: locale set +053.675 005.744: init first window +064.058 010.383: inits 1 +064.083 000.025: window checked +064.091 000.008: parsing arguments +075.019 000.133 000.133: require('vim.shared') +075.240 000.108 000.108: require('vim._meta') +075.247 000.218 000.109: require('vim._editor') +075.251 000.404 000.054: require('vim._init_packages') +075.254 010.759: init lua interpreter +075.336 000.082: expanding arguments +077.080 001.744: inits 2 +077.695 000.615: init highlight +077.699 000.004: waiting for UI +080.125 002.426: done waiting for UI +080.175 000.050: init screen for UI +080.470 000.294: init default mappings +080.497 000.027: init default autocommands +091.758 004.623 004.623: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/ftplugin.vim +095.325 001.210 001.210: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/indent.vim +095.907 000.058 000.058: sourcing /usr/share/nvim/archlinux.vim +095.932 000.182 000.125: sourcing /etc/xdg/nvim/sysinit.vim +111.541 008.988 008.988: require('keys') +115.565 004.013 004.013: require('opts') +120.844 001.016 001.016: require('packer.util') +120.952 004.563 003.547: require('packer') +124.638 001.239 001.239: require('packer.log') +124.655 002.203 000.964: require('packer.async') +126.342 000.685 000.685: require('packer.result') +126.357 001.694 001.009: require('packer.jobs') +126.384 005.338 001.441: require('packer.plugin_utils') +127.605 001.102 001.102: require('packer.snapshot') +129.209 013.625 002.622: require('pack') +145.528 016.305 016.305: require('impatient') +146.779 000.225 000.225: require('vim.treesitter.language') +146.806 000.728 000.503: require('vim.treesitter.query') +148.454 000.354 000.354: require('vim.treesitter.languagetree') +148.543 000.890 000.536: require('vim.treesitter') +148.929 001.667 000.777: require('nvim-treesitter.parsers') +149.095 000.158 000.158: require('nvim-treesitter.utils') +149.110 002.017 000.192: require('nvim-treesitter.ts_utils') +149.127 002.315 000.298: require('nvim-treesitter.tsrange') +149.233 000.101 000.101: require('nvim-treesitter.caching') +149.259 003.314 000.170: require('nvim-treesitter.query') +149.296 003.607 000.293: require('nvim-treesitter.configs') +149.827 000.157 000.157: require('nvim-treesitter.info') +150.068 000.234 000.234: require('nvim-treesitter.shell_command_selectors') +150.133 000.656 000.264: require('nvim-treesitter.install') +198.197 052.650 048.387: require('plugins.treesitter') +198.978 000.175 000.175: require('telescope._extensions') +198.988 000.419 000.244: require('telescope') +199.670 000.080 000.080: require('plenary.bit') +199.751 000.074 000.074: require('plenary.functional') +199.872 000.035 000.035: require('ffi') +199.897 000.444 000.255: require('plenary.path') +199.911 000.544 000.100: require('plenary.strings') +199.991 000.077 000.077: require('telescope.deprecated') +200.551 000.253 000.253: require('plenary.log') +200.660 000.556 000.304: require('telescope.log') +200.909 000.124 000.124: require('plenary.job') +200.988 000.073 000.073: require('telescope.state') +201.011 000.344 000.147: require('telescope.utils') +201.022 001.025 000.124: require('telescope.sorters') +201.131 000.085 000.085: require('vim.inspect') +201.401 000.009 000.009: require('vim.F') +205.141 005.915 004.175: require('telescope.config') +205.454 000.098 000.098: require('plenary.window.border') +206.220 000.759 000.759: require('plenary.window') +206.291 000.062 000.062: require('plenary.popup.utils') +206.300 001.140 000.221: require('plenary.popup') +206.374 000.070 000.070: require('telescope.pickers.scroller') +206.471 000.092 000.092: require('telescope.actions.state') +206.548 000.072 000.072: require('telescope.actions.utils') +206.700 000.070 000.070: require('telescope.actions.mt') +206.731 000.178 000.108: require('telescope.actions.set') +206.953 000.091 000.091: require('telescope.config.resolve') +206.959 000.171 000.080: require('telescope.pickers.entry_display') +207.019 000.056 000.056: require('telescope.from_entry') +207.478 008.486 000.793: require('telescope.actions') +208.123 000.061 000.061: require('plenary.tbl') +208.134 000.133 000.073: require('plenary.vararg.rotate') +208.138 000.196 000.062: require('plenary.vararg') +208.205 000.064 000.064: require('plenary.errors') +208.218 000.340 000.080: require('plenary.async.async') +208.295 000.074 000.074: require('plenary.async.structs') +208.310 000.514 000.100: require('plenary.async.control') +208.644 000.244 000.244: require('telescope.make_entry') +208.929 000.077 000.077: require('plenary.async.util') +208.935 000.142 000.066: require('plenary.async.tests') +208.940 000.220 000.078: require('plenary.async') +208.944 000.295 000.075: require('telescope.finders.async_static_finder') +209.164 000.060 000.060: require('plenary.class') +209.192 000.177 000.117: require('telescope._') +209.197 000.250 000.073: require('telescope.finders.async_oneshot_finder') +209.270 000.070 000.070: require('telescope.finders.async_job_finder') +209.280 000.965 000.106: require('telescope.finders') +209.749 000.157 000.157: require('telescope.debounce') +209.958 000.201 000.201: require('telescope.mappings') +210.050 000.086 000.086: require('telescope.pickers.highlights') +210.123 000.067 000.067: require('telescope.pickers.window') +210.263 000.066 000.066: require('telescope.algos.linked_list') +210.271 000.143 000.078: require('telescope.entry_manager') +210.337 000.064 000.064: require('telescope.pickers.multi') +210.372 001.087 000.369: require('telescope.pickers') +210.386 002.716 000.149: require('telescope.builtin.__lsp') +210.436 002.947 000.231: require('telescope.builtin') +210.773 000.249 000.249: require('fzf_lib') +210.783 000.341 000.092: require('telescope._extensions.fzf') +211.122 000.091 000.091: require('telescope._extensions.file_browser.utils') +211.200 000.319 000.229: require('telescope._extensions.file_browser.actions') +211.438 000.145 000.145: require('telescope._extensions.file_browser.make_entry') +211.592 000.147 000.147: require('plenary.scandir') +211.643 000.439 000.147: require('telescope._extensions.file_browser.finders') +211.726 000.078 000.078: require('telescope._extensions.file_browser.picker') +211.821 000.091 000.091: require('telescope._extensions.file_browser.config') +211.827 001.030 000.102: require('telescope._extensions.file_browser') +215.018 000.012 000.012: require('vim.keymap') +215.222 017.012 003.777: require('plugins.telescope') +216.619 000.066 000.066: require('notify.util.queue') +216.628 000.405 000.339: require('notify.util') +216.852 000.220 000.220: require('notify.config.highlights') +216.866 000.729 000.104: require('notify.config') +217.028 000.158 000.158: require('notify.stages') +217.107 000.072 000.072: require('notify.service.notification') +217.362 000.090 000.090: require('notify.animate.spring') +217.368 000.164 000.074: require('notify.animate') +217.376 000.264 000.100: require('notify.windows') +217.666 000.105 000.105: require('notify.service.buffer.highlights') +217.677 000.209 000.104: require('notify.service.buffer') +217.683 000.304 000.095: require('notify.service') +217.796 000.110 000.110: require('notify.stages.util') +217.806 001.754 000.117: require('notify') +217.895 000.086 000.086: require('nvim-tree.iterators.node-iterator') +217.998 002.054 000.213: require('nvim-tree.utils') +218.018 002.239 000.185: require('nvim-tree.events') +218.391 000.101 000.101: require('nvim-tree.log') +218.565 000.167 000.167: require('nvim-tree.git.utils') +218.670 000.100 000.100: require('nvim-tree.git.runner') +218.777 000.102 000.102: require('nvim-tree.watcher') +218.810 000.653 000.184: require('nvim-tree.git') +218.907 000.093 000.093: require('nvim-tree.explorer.watch') +218.987 000.075 000.075: require('nvim-tree.explorer.common') +219.196 000.087 000.087: require('nvim-tree.explorer.node-builders') +219.280 000.078 000.078: require('nvim-tree.explorer.sorters') +219.363 000.078 000.078: require('nvim-tree.explorer.filters') +219.691 000.235 000.235: require('nvim-tree.view') +219.701 000.334 000.099: require('nvim-tree.live-filter') +219.708 000.677 000.100: require('nvim-tree.explorer.explore') +219.838 000.127 000.127: require('nvim-tree.explorer.reload') +219.849 001.827 000.201: require('nvim-tree.explorer') +219.857 004.139 000.073: require('nvim-tree.core') +219.989 000.129 000.129: require('nvim-tree.diagnostics') +220.084 000.089 000.089: require('nvim-tree.renderer.components.padding') +220.180 000.091 000.091: require('nvim-tree.renderer.components.icons') +220.281 000.097 000.097: require('nvim-tree.renderer.components.full-name') +220.366 000.080 000.080: require('nvim-tree.renderer.help') +220.500 000.128 000.128: require('nvim-tree.renderer.components.git') +220.628 000.123 000.123: require('nvim-tree.renderer.builder') +220.724 000.091 000.091: require('nvim-tree.marks') +220.744 005.108 000.142: require('nvim-tree.renderer') +220.838 000.084 000.084: require('nvim-tree.actions.tree-modifiers.collapse-all') +220.936 000.093 000.093: require('nvim-tree.actions.root.dir-up') +221.036 000.096 000.096: require('nvim-tree.actions.root.change-dir') +221.124 000.082 000.082: require('nvim-tree.actions.reloaders.reloaders') +221.213 000.083 000.083: require('nvim-tree.actions.finders.find-file') +221.219 005.692 000.146: require('nvim-tree.lib') +221.342 000.120 000.120: require('nvim-tree.colors') +221.500 000.151 000.151: require('nvim-tree.legacy') +221.623 000.118 000.118: require('nvim-tree.actions.fs.copy-paste') +221.826 000.086 000.086: require('nvim-tree.actions.tree-modifiers.expand-all') +221.919 000.087 000.087: require('nvim-tree.actions.tree-modifiers.toggles') +222.020 000.093 000.093: require('nvim-tree.actions.fs.create-file') +222.111 000.086 000.086: require('nvim-tree.actions.fs.rename-file') +222.241 000.124 000.124: require('nvim-tree.actions.fs.trash') +222.345 000.098 000.098: require('nvim-tree.actions.fs.remove-file') +222.427 000.075 000.075: require('nvim-tree.actions.moves.parent') +222.511 000.079 000.079: require('nvim-tree.actions.moves.sibling') +222.593 000.076 000.076: require('nvim-tree.actions.moves.item') +222.688 000.082 000.082: require('nvim-tree.actions.finders.search-node') +222.768 000.074 000.074: require('nvim-tree.actions.node.run-command') +222.863 000.091 000.091: require('nvim-tree.actions.node.file-popup') +222.971 000.103 000.103: require('nvim-tree.actions.node.system-open') +223.078 000.099 000.099: require('nvim-tree.marks.bulk-move') +223.086 001.453 000.198: require('nvim-tree.actions.dispatch') +223.158 007.841 000.307: require('nvim-tree') +223.239 000.076 000.076: require('nvim-tree.config') +227.868 000.224 000.224: require('nvim-tree.actions') +228.009 000.128 000.128: require('nvim-tree.actions.node.open-file') +232.689 000.182 000.182: require('nvim-tree.marks.navigation') +232.700 000.678 000.496: require('nvim-tree.api') +232.818 001.097 000.419: require('nvim-tree.keymap') +234.928 001.392 001.392: require('nvim-web-devicons') +238.932 023.703 012.946: require('plugins.nvim-tree') +239.221 000.075 000.075: require('lualine_require') +239.776 000.738 000.663: require('lualine') +239.865 000.078 000.078: require('plugins.linecolor') +248.350 000.085 000.085: require('lualine.utils.mode') +250.201 011.260 010.360: require('plugins.lualine') +250.210 154.176 006.621: sourcing /home/sxrdusr/.config/nvim/init.lua +250.227 009.539: sourcing vimrc file(s) +250.562 000.098 000.098: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +251.765 000.124 000.124: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/filetype.lua +253.184 001.213 001.213: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/filetype.vim +255.318 000.259 000.259: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/syntax/synload.vim +255.565 001.872 001.613: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/syntax/syntax.vim +261.462 001.488 001.488: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/gzip.vim +261.738 000.176 000.176: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/health.vim +264.612 001.404 001.404: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +265.083 003.248 001.845: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/matchit.vim +265.547 000.397 000.397: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/matchparen.vim +265.699 000.083 000.083: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/netrwPlugin.vim +266.102 000.023 000.023: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +266.122 000.357 000.335: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/rplugin.vim +266.369 000.188 000.188: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/shada.vim +266.530 000.085 000.085: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/spellfile.vim +266.916 000.319 000.319: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/tarPlugin.vim +267.194 000.210 000.210: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/tohtml.vim +267.330 000.070 000.070: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/tutor.vim +268.418 001.023 001.023: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/zipPlugin.vim +269.943 001.270 001.270: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +271.634 000.129 000.129: require('lspsaga') +271.896 000.081 000.081: require('lspsaga.window') +271.917 000.184 000.103: require('lspsaga.libs') +272.998 000.411 000.411: require('vim.lsp.log') +273.656 000.651 000.651: require('vim.lsp.protocol') +274.070 000.175 000.175: require('vim.lsp._snippet') +274.203 000.126 000.126: require('vim.highlight') +274.231 000.567 000.267: require('vim.lsp.util') +274.265 001.891 000.262: require('vim.lsp.handlers') +274.453 000.184 000.184: require('vim.lsp.rpc') +274.578 000.119 000.119: require('vim.lsp.sync') +274.751 000.165 000.165: require('vim.lsp.buf') +274.881 000.123 000.123: require('vim.lsp.diagnostic') +275.010 000.123 000.123: require('vim.lsp.codelens') +275.159 003.151 000.545: require('vim.lsp') +275.236 000.070 000.070: require('lspsaga.wrap') +275.247 003.325 000.105: require('lspsaga.codeaction') +275.287 003.644 000.134: require('lspsaga.lightbulb') +275.414 000.089 000.089: require('lspsaga.lspkind') +275.590 000.054 000.054: require('mason-core.path') +275.607 000.128 000.074: require('mason.settings') +275.797 000.052 000.052: require('mason-core.functional.data') +275.805 000.118 000.066: require('mason-core.functional.function') +275.841 000.229 000.112: require('mason-core.platform') +275.846 000.421 000.063: require('mason') +276.050 000.105 000.105: require('mason-core.functional') +276.160 000.089 000.089: require('mason-core.functional.list') +276.208 000.340 000.145: require('mason.api.command') +276.402 000.108 000.108: require('mason-core.log') +276.410 000.197 000.090: require('mason-lspconfig') +276.490 000.077 000.077: require('mason-lspconfig.settings') +276.585 000.076 000.076: require('mason-lspconfig.lspconfig_hook') +276.984 000.394 000.394: require('lspconfig.util') +277.217 000.066 000.066: require('mason-core.functional.table') +277.322 000.301 000.235: require('mason-lspconfig.mappings.server') +277.585 000.082 000.082: require('mason-core.async') +277.652 000.061 000.061: require('mason-core.async.uv') +277.666 000.262 000.119: require('mason-core.fs') +277.743 000.073 000.073: require('mason-core.optional') +277.812 000.064 000.064: require('mason-core.EventEmitter') +277.971 000.155 000.155: require('mason-registry.index') +277.991 000.663 000.110: require('mason-registry') +278.063 000.068 000.068: require('mason-lspconfig.server_config_extensions') +278.159 000.090 000.090: require('lspconfig.configs') +278.284 000.081 000.081: require('lspconfig.server_configurations.omnisharp') +278.517 000.076 000.076: require('mason-lspconfig.ensure_installed') +278.766 000.073 000.073: require('mason-core.result') +279.162 000.221 000.221: require('mason-core.process') +279.239 000.069 000.069: require('mason-core.functional.relation') +279.313 000.067 000.067: require('mason-core.functional.logic') +279.329 000.457 000.101: require('mason-core.spawn') +279.415 000.081 000.081: require('mason-core.receipt') +279.500 000.070 000.070: require('mason-core.functional.string') +279.530 000.758 000.149: require('mason-core.installer.context') +279.606 000.072 000.072: require('mason-core.installer.linker') +279.689 000.079 000.079: require('mason-core.async.control') +279.698 001.086 000.104: require('mason-core.installer') +279.814 000.113 000.113: require('mason-core.installer.handle') +280.159 000.069 000.069: require('mason-core.managers.powershell') +280.165 000.145 000.076: require('mason-core.fetch') +280.169 000.203 000.059: require('mason-core.managers.cargo.client') +280.199 000.311 000.107: require('mason-core.managers.cargo') +280.306 000.103 000.103: require('mason-core.managers.composer') +280.419 000.108 000.108: require('mason-core.managers.gem') +280.507 000.083 000.083: require('mason-core.managers.git') +280.683 000.090 000.090: require('mason-core.managers.std') +280.766 000.078 000.078: require('mason-core.managers.github.client') +280.780 000.268 000.100: require('mason-core.managers.github') +280.887 000.104 000.104: require('mason-core.managers.go') +281.031 000.139 000.139: require('mason-core.managers.luarocks') +281.318 000.281 000.281: require('mason-core.managers.npm') +281.444 000.120 000.120: require('mason-core.managers.pip3') +281.459 001.638 000.121: require('mason-core.package.version-check') +281.468 002.944 000.107: require('mason-core.package') +281.574 000.088 000.088: require('mason-registry.lua-language-server') +281.992 000.116 000.116: require('mason-registry.clangd') +282.246 000.198 000.198: require('mason-registry.rust-analyzer') +282.408 000.057 000.057: require('mason-core.notify') +282.484 000.066 000.066: require('mason-core.functional.number') +282.540 000.284 000.160: require('mason-lspconfig.api.command') +282.547 012.419 002.143: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +283.519 000.094 000.094: sourcing /tmp/.mount_nvimq1iep8/usr/share/nvim/runtime/plugin/man.lua +283.761 008.799: loading rtp plugins +285.454 000.072 000.072: require('Comment.config') +285.549 000.088 000.088: require('Comment.utils') +285.625 000.070 000.070: require('Comment.opfunc') +285.695 000.065 000.065: require('Comment.extra') +285.711 000.458 000.163: require('Comment.api') +286.065 000.870 000.412: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +286.768 000.069 000.069: require('luasnip.util.types') +286.846 000.071 000.071: require('luasnip.util.ext_opts') +286.923 000.072 000.072: require('luasnip.extras.filetype_functions') +286.996 000.068 000.068: require('luasnip.session') +287.298 000.115 000.115: require('luasnip.util.util') +287.380 000.076 000.076: require('luasnip.nodes.util') +287.446 000.060 000.060: require('luasnip.util.events') +287.467 000.372 000.121: require('luasnip.nodes.node') +287.583 000.069 000.069: require('luasnip.util.extend_decorator') +287.594 000.593 000.152: require('luasnip.nodes.insertNode') +287.879 000.086 000.086: require('luasnip.util.mark') +288.102 000.087 000.087: require('luasnip.nodes.textNode') +288.965 000.784 000.784: require('luasnip.util._builtin_vars') +289.156 001.047 000.263: require('luasnip.util.environ') +289.245 000.082 000.082: require('luasnip.util.pattern_tokenizer') +289.318 000.068 000.068: require('luasnip.util.dict') +289.407 000.084 000.084: require('luasnip.session.snippet_collection') +289.464 001.578 000.210: require('luasnip.nodes.snippet') +289.482 001.884 000.220: require('luasnip.nodes.choiceNode') +289.656 000.108 000.108: require('luasnip.nodes.functionNode') +289.832 000.169 000.169: require('luasnip.nodes.dynamicNode') +289.954 000.115 000.115: require('luasnip.nodes.restoreNode') +291.929 001.969 001.969: require('luasnip.extras') +292.090 000.062 000.062: require('luasnip.util.str') +292.099 000.159 000.097: require('luasnip.extras.fmt') +292.163 000.060 000.060: require('luasnip.extras.expand_conditions') +292.402 000.072 000.072: require('luasnip.util.parser.neovim_ast') +302.428 000.095 000.095: require('luasnip.util.directed_graph') +302.448 010.211 010.044: require('luasnip.util.parser.ast_utils') +302.614 000.071 000.071: require('luasnip.util.functions') +302.625 000.171 000.100: require('luasnip.util.parser.ast_parser') +302.778 000.150 000.150: require('luasnip.util.parser.neovim_parser') +302.795 010.626 000.094: require('luasnip.util.parser') +302.866 000.066 000.066: require('luasnip.nodes.absolute_indexer') +303.377 016.798 000.767: require('luasnip.config') +303.545 017.302 000.504: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +304.431 000.049 000.049: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +305.901 000.877 000.877: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +306.799 000.424 000.424: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +307.353 000.100 000.100: require('cmp.utils.api') +307.486 000.063 000.063: require('cmp.types.cmp') +307.645 000.078 000.078: require('cmp.utils.misc') +307.676 000.183 000.105: require('cmp.types.lsp') +307.736 000.056 000.056: require('cmp.types.vim') +307.742 000.382 000.079: require('cmp.types') +307.810 000.065 000.065: require('cmp.utils.highlight') +307.933 000.056 000.056: require('cmp.utils.debug') +307.951 000.136 000.080: require('cmp.utils.autocmd') +308.471 001.284 000.601: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +308.727 000.077 000.077: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +309.148 000.103 000.103: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +309.640 000.196 000.196: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +310.274 000.069 000.069: require('nvim-treesitter.statusline') +310.361 000.080 000.080: require('nvim-treesitter.query_predicates') +310.368 000.231 000.083: require('nvim-treesitter') +311.777 000.241 000.241: require('vim.treesitter.highlighter') +312.243 000.859 000.618: require('nvim-treesitter.highlight') +312.932 002.859 001.768: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +313.468 000.264 000.264: require('treesitter-context') +313.478 000.308 000.044: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +313.858 000.083 000.083: require('nvim-treesitter-refactor') +314.072 000.327 000.244: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +314.445 000.113 000.113: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +314.840 000.083 000.083: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +315.176 000.092 000.092: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +315.945 000.415 000.415: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/plugin/Tabular.vim +316.320 000.060 000.060: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +317.353 000.525 000.525: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +318.205 000.523 000.523: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +318.818 000.355 000.355: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +319.671 000.596 000.596: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vimux/plugin/vimux.vim +319.991 000.030 000.030: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +320.278 000.047 000.047: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +321.792 010.515: loading packages +323.446 000.470 000.470: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/autoload/tabular.vim +327.698 005.367 004.898: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/tabular/after/plugin/TabularMaps.vim +328.389 000.115 000.115: require('cmp.utils.char') +328.404 000.200 000.085: require('cmp.utils.str') +328.474 000.065 000.065: require('cmp.utils.pattern') +328.690 000.060 000.060: require('cmp.utils.buffer') +328.713 000.165 000.105: require('cmp.utils.keymap') +328.722 000.244 000.078: require('cmp.utils.feedkeys') +328.808 000.082 000.082: require('cmp.utils.async') +328.940 000.058 000.058: require('cmp.utils.cache') +328.948 000.134 000.076: require('cmp.context') +329.187 000.077 000.077: require('cmp.config.mapping') +329.353 000.084 000.084: require('cmp.config.compare') +329.359 000.164 000.080: require('cmp.config.default') +329.384 000.345 000.104: require('cmp.config') +329.559 000.066 000.066: require('cmp.matcher') +329.570 000.182 000.115: require('cmp.entry') +329.584 000.633 000.106: require('cmp.source') +329.722 000.058 000.058: require('cmp.utils.event') +329.918 000.086 000.086: require('cmp.utils.window') +329.930 000.203 000.117: require('cmp.view.docs_view') +330.048 000.115 000.115: require('cmp.view.custom_entries_view') +330.163 000.110 000.110: require('cmp.view.wildmenu_entries_view') +330.251 000.082 000.082: require('cmp.view.native_entries_view') +330.331 000.076 000.076: require('cmp.view.ghost_text_view') +330.346 000.758 000.114: require('cmp.view') +330.416 002.325 000.209: require('cmp.core') +330.712 000.066 000.066: require('cmp.config.sources') +330.779 000.059 000.059: require('cmp.config.window') +330.877 002.905 000.453: require('cmp') +331.159 000.067 000.067: require('cmp_buffer.timer') +331.171 000.152 000.086: require('cmp_buffer.buffer') +331.177 000.233 000.081: require('cmp_buffer.source') +331.181 000.299 000.066: require('cmp_buffer') +331.276 003.361 000.157: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +331.654 000.153 000.153: require('cmp_cmdline') +331.685 000.231 000.079: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +332.024 000.071 000.071: require('cmp_nvim_lsp.source') +332.032 000.150 000.079: require('cmp_nvim_lsp') +332.086 000.248 000.098: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +332.388 000.114 000.114: require('cmp_path') +332.423 000.187 000.073: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +332.706 000.086 000.086: require('cmp_luasnip') +332.774 000.201 000.115: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +332.928 001.541: loading after plugins +332.955 000.027: inits 3 +332.969 000.014: reading ShaDa +333.378 000.068 000.068: require('luasnip.loaders._caches') +333.497 000.113 000.113: require('luasnip.util.path') +333.589 000.086 000.086: require('luasnip.loaders.util') +333.813 000.099 000.099: require('luasnip.loaders') +333.855 000.260 000.161: require('luasnip') +333.862 000.635 000.108: require('luasnip.loaders.from_lua') +334.083 000.069 000.069: require('luasnip.nodes.snippetProxy') +334.095 000.168 000.099: require('luasnip.loaders.from_snipmate') +334.263 000.091 000.091: require('luasnip.loaders.from_vscode') +334.302 000.439: opening buffers +334.522 000.221: BufEnter autocommands +334.529 000.007: editing files in windows +349.099 000.632 000.632: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.170 001.170: --- NVIM STARTING --- +030.530 029.361: event init +047.939 017.409: early init +049.639 001.699: locale set +055.163 005.524: init first window +064.966 009.803: inits 1 +064.989 000.023: window checked +064.997 000.009: parsing arguments +076.902 000.266 000.266: require('vim.shared') +077.425 000.241 000.241: require('vim._meta') +077.438 000.513 000.273: require('vim._editor') +077.446 000.901 000.121: require('vim._init_packages') +077.454 011.555: init lua interpreter +077.612 000.158: expanding arguments +079.498 001.886: inits 2 +080.971 001.472: init highlight +080.983 000.012: waiting for UI +084.759 003.776: done waiting for UI +084.791 000.032: init screen for UI +085.030 000.239: init default mappings +085.056 000.027: init default autocommands +095.848 004.168 004.168: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/ftplugin.vim +098.579 001.149 001.149: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/indent.vim +099.101 000.057 000.057: sourcing /usr/share/nvim/archlinux.vim +099.127 000.187 000.129: sourcing /etc/xdg/nvim/sysinit.vim +113.526 006.784 006.784: require('keys') +118.451 004.902 004.902: require('opts') +123.870 001.098 001.098: require('packer.util') +124.002 004.774 003.676: require('packer') +128.144 001.664 001.664: require('packer.log') +128.165 002.615 000.951: require('packer.async') +129.891 000.733 000.733: require('packer.result') +129.909 001.735 001.003: require('packer.jobs') +129.934 005.826 001.476: require('packer.plugin_utils') +131.122 001.143 001.143: require('packer.snapshot') +132.785 014.316 002.573: require('pack') +150.741 017.940 017.940: require('impatient') +152.207 000.384 000.384: require('vim.treesitter.language') +152.241 001.024 000.640: require('vim.treesitter.query') +154.123 000.382 000.382: require('vim.treesitter.languagetree') +154.235 000.878 000.495: require('vim.treesitter') +154.661 001.800 000.922: require('nvim-treesitter.parsers') +154.846 000.176 000.176: require('nvim-treesitter.utils') +154.867 002.236 000.260: require('nvim-treesitter.ts_utils') +154.881 002.633 000.396: require('nvim-treesitter.tsrange') +154.997 000.111 000.111: require('nvim-treesitter.caching') +155.031 003.990 000.223: require('nvim-treesitter.query') +155.071 004.197 000.207: require('nvim-treesitter.configs') +155.678 000.124 000.124: require('nvim-treesitter.info') +155.935 000.250 000.250: require('nvim-treesitter.shell_command_selectors') +156.003 000.658 000.284: require('nvim-treesitter.install') +196.263 045.502 040.647: require('plugins.treesitter') +197.005 000.512 000.512: require('telescope._extensions') +197.018 000.617 000.105: require('telescope') +199.073 000.401 000.401: require('plenary.bit') +199.180 000.097 000.097: require('plenary.functional') +199.240 000.036 000.036: require('ffi') +199.268 000.818 000.284: require('plenary.path') +199.284 001.226 000.408: require('plenary.strings') +199.445 000.157 000.157: require('telescope.deprecated') +200.029 000.248 000.248: require('plenary.log') +200.134 000.426 000.178: require('telescope.log') +200.532 000.213 000.213: require('plenary.job') +200.629 000.089 000.089: require('telescope.state') +200.646 000.505 000.204: require('telescope.utils') +200.657 001.204 000.273: require('telescope.sorters') +200.775 000.085 000.085: require('vim.inspect') +201.684 000.015 000.015: require('vim.F') +205.169 007.578 004.892: require('telescope.config') +205.905 000.559 000.559: require('plenary.window.border') +206.101 000.187 000.187: require('plenary.window') +206.179 000.070 000.070: require('plenary.popup.utils') +206.188 001.009 000.193: require('plenary.popup') +206.310 000.117 000.117: require('telescope.pickers.scroller') +206.392 000.076 000.076: require('telescope.actions.state') +206.466 000.069 000.069: require('telescope.actions.utils') +206.670 000.115 000.115: require('telescope.actions.mt') +206.709 000.238 000.123: require('telescope.actions.set') +206.910 000.069 000.069: require('telescope.config.resolve') +206.917 000.151 000.082: require('telescope.pickers.entry_display') +207.087 000.167 000.167: require('telescope.from_entry') +207.560 010.538 001.131: require('telescope.actions') +208.168 000.061 000.061: require('plenary.tbl') +208.181 000.140 000.079: require('plenary.vararg.rotate') +208.185 000.204 000.064: require('plenary.vararg') +208.245 000.057 000.057: require('plenary.errors') +208.257 000.341 000.080: require('plenary.async.async') +208.335 000.075 000.075: require('plenary.async.structs') +208.347 000.510 000.095: require('plenary.async.control') +208.643 000.208 000.208: require('telescope.make_entry') +208.923 000.079 000.079: require('plenary.async.util') +208.929 000.145 000.066: require('plenary.async.tests') +208.934 000.214 000.069: require('plenary.async') +208.939 000.290 000.075: require('telescope.finders.async_static_finder') +209.161 000.064 000.064: require('plenary.class') +209.184 000.169 000.105: require('telescope._') +209.189 000.247 000.079: require('telescope.finders.async_oneshot_finder') +209.264 000.072 000.072: require('telescope.finders.async_job_finder') +209.274 000.922 000.105: require('telescope.finders') +209.542 000.077 000.077: require('telescope.debounce') +209.743 000.195 000.195: require('telescope.mappings') +209.838 000.088 000.088: require('telescope.pickers.highlights') +209.914 000.071 000.071: require('telescope.pickers.window') +210.064 000.074 000.074: require('telescope.algos.linked_list') +210.072 000.153 000.080: require('telescope.entry_manager') +210.141 000.066 000.066: require('telescope.pickers.multi') +210.172 000.894 000.244: require('telescope.pickers') +210.187 002.467 000.140: require('telescope.builtin.__lsp') +210.211 002.643 000.176: require('telescope.builtin') +210.537 000.239 000.239: require('fzf_lib') +210.552 000.335 000.096: require('telescope._extensions.fzf') +210.882 000.094 000.094: require('telescope._extensions.file_browser.utils') +210.984 000.343 000.249: require('telescope._extensions.file_browser.actions') +211.232 000.144 000.144: require('telescope._extensions.file_browser.make_entry') +211.387 000.149 000.149: require('plenary.scandir') +211.441 000.452 000.159: require('telescope._extensions.file_browser.finders') +211.528 000.082 000.082: require('telescope._extensions.file_browser.picker') +211.669 000.136 000.136: require('telescope._extensions.file_browser.config') +211.676 001.113 000.101: require('telescope._extensions.file_browser') +215.882 000.019 000.019: require('vim.keymap') +216.141 019.866 004.600: require('plugins.telescope') +217.337 000.107 000.107: require('notify.util.queue') +217.352 000.200 000.092: require('notify.util') +217.591 000.235 000.235: require('notify.config.highlights') +217.607 000.539 000.104: require('notify.config') +217.684 000.073 000.073: require('notify.stages') +217.757 000.067 000.067: require('notify.service.notification') +218.011 000.090 000.090: require('notify.animate.spring') +218.017 000.152 000.062: require('notify.animate') +218.024 000.263 000.111: require('notify.windows') +218.321 000.139 000.139: require('notify.service.buffer.highlights') +218.332 000.232 000.093: require('notify.service.buffer') +218.340 000.312 000.080: require('notify.service') +218.468 000.126 000.126: require('notify.stages.util') +218.481 001.512 000.133: require('notify') +218.572 000.087 000.087: require('nvim-tree.iterators.node-iterator') +218.665 001.808 000.209: require('nvim-tree.utils') +218.683 001.902 000.094: require('nvim-tree.events') +218.980 000.091 000.091: require('nvim-tree.log') +219.156 000.170 000.170: require('nvim-tree.git.utils') +219.354 000.192 000.192: require('nvim-tree.git.runner') +219.493 000.134 000.134: require('nvim-tree.watcher') +219.506 000.725 000.138: require('nvim-tree.git') +219.640 000.130 000.130: require('nvim-tree.explorer.watch') +219.762 000.117 000.117: require('nvim-tree.explorer.common') +220.044 000.111 000.111: require('nvim-tree.explorer.node-builders') +220.134 000.084 000.084: require('nvim-tree.explorer.sorters') +220.217 000.078 000.078: require('nvim-tree.explorer.filters') +220.565 000.247 000.247: require('nvim-tree.view') +220.581 000.359 000.112: require('nvim-tree.live-filter') +220.588 000.766 000.134: require('nvim-tree.explorer.explore') +220.709 000.117 000.117: require('nvim-tree.explorer.reload') +220.718 002.031 000.176: require('nvim-tree.explorer') +220.726 004.007 000.074: require('nvim-tree.core') +220.909 000.180 000.180: require('nvim-tree.diagnostics') +221.015 000.099 000.099: require('nvim-tree.renderer.components.padding') +221.118 000.098 000.098: require('nvim-tree.renderer.components.icons') +221.226 000.103 000.103: require('nvim-tree.renderer.components.full-name') +221.318 000.088 000.088: require('nvim-tree.renderer.help') +221.462 000.138 000.138: require('nvim-tree.renderer.components.git') +221.608 000.142 000.142: require('nvim-tree.renderer.builder') +221.714 000.101 000.101: require('nvim-tree.marks') +221.737 005.101 000.146: require('nvim-tree.renderer') +221.833 000.087 000.087: require('nvim-tree.actions.tree-modifiers.collapse-all') +221.937 000.098 000.098: require('nvim-tree.actions.root.dir-up') +222.038 000.097 000.097: require('nvim-tree.actions.root.change-dir') +222.133 000.090 000.090: require('nvim-tree.actions.reloaders.reloaders') +222.232 000.093 000.093: require('nvim-tree.actions.finders.find-file') +222.237 005.683 000.118: require('nvim-tree.lib') +222.366 000.125 000.125: require('nvim-tree.colors') +222.542 000.170 000.170: require('nvim-tree.legacy') +222.681 000.133 000.133: require('nvim-tree.actions.fs.copy-paste') +222.892 000.091 000.091: require('nvim-tree.actions.tree-modifiers.expand-all') +223.020 000.122 000.122: require('nvim-tree.actions.tree-modifiers.toggles') +223.130 000.103 000.103: require('nvim-tree.actions.fs.create-file') +223.238 000.102 000.102: require('nvim-tree.actions.fs.rename-file') +223.383 000.139 000.139: require('nvim-tree.actions.fs.trash') +223.530 000.141 000.141: require('nvim-tree.actions.fs.remove-file') +223.668 000.128 000.128: require('nvim-tree.actions.moves.parent') +223.754 000.081 000.081: require('nvim-tree.actions.moves.sibling') +223.838 000.078 000.078: require('nvim-tree.actions.moves.item') +223.939 000.092 000.092: require('nvim-tree.actions.finders.search-node') +224.022 000.078 000.078: require('nvim-tree.actions.node.run-command') +224.119 000.092 000.092: require('nvim-tree.actions.node.file-popup') +224.227 000.103 000.103: require('nvim-tree.actions.node.system-open') +224.338 000.098 000.098: require('nvim-tree.marks.bulk-move') +224.347 001.659 000.211: require('nvim-tree.actions.dispatch') +224.407 008.093 000.322: require('nvim-tree') +224.486 000.074 000.074: require('nvim-tree.config') +229.437 000.237 000.237: require('nvim-tree.actions') +229.603 000.154 000.154: require('nvim-tree.actions.node.open-file') +233.354 000.233 000.233: require('nvim-tree.marks.navigation') +233.364 000.784 000.551: require('nvim-tree.api') +233.479 001.040 000.255: require('nvim-tree.keymap') +236.336 002.170 002.170: require('nvim-web-devicons') +240.525 024.376 012.609: require('plugins.nvim-tree') +240.824 000.077 000.077: require('lualine_require') +241.367 000.729 000.652: require('lualine') +241.438 000.064 000.064: require('plugins.linecolor') +246.560 000.082 000.082: require('lualine.utils.mode') +253.179 012.644 011.770: require('plugins.lualine') +253.188 153.957 007.627: sourcing /home/sxrdusr/.config/nvim/init.lua +253.205 008.688: sourcing vimrc file(s) +253.467 000.053 000.053: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +254.341 000.051 000.051: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/filetype.lua +255.729 001.187 001.187: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/filetype.vim +257.642 000.267 000.267: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/syntax/synload.vim +257.880 001.755 001.488: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/syntax/syntax.vim +263.910 001.409 001.409: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/gzip.vim +264.075 000.066 000.066: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/health.vim +267.945 002.388 002.388: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +268.522 004.362 001.974: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/matchit.vim +269.029 000.421 000.421: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/matchparen.vim +269.214 000.092 000.092: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/netrwPlugin.vim +269.707 000.034 000.034: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +269.729 000.427 000.394: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/rplugin.vim +270.014 000.201 000.201: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/shada.vim +270.210 000.104 000.104: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/spellfile.vim +270.625 000.323 000.323: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/tarPlugin.vim +270.959 000.232 000.232: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/tohtml.vim +271.133 000.083 000.083: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/tutor.vim +272.220 000.996 000.996: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/zipPlugin.vim +273.782 001.296 001.296: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +275.117 001.158 001.158: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +275.996 000.097 000.097: sourcing /tmp/.mount_nvimjb3Vyr/usr/share/nvim/runtime/plugin/man.lua +276.202 008.682: loading rtp plugins +277.568 000.100 000.100: require('Comment.config') +277.655 000.079 000.079: require('Comment.utils') +277.724 000.064 000.064: require('Comment.opfunc') +277.788 000.059 000.059: require('Comment.extra') +277.800 000.452 000.150: require('Comment.api') +278.245 000.948 000.496: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +278.890 000.062 000.062: require('luasnip.util.types') +279.005 000.108 000.108: require('luasnip.util.ext_opts') +279.079 000.068 000.068: require('luasnip.extras.filetype_functions') +279.148 000.065 000.065: require('luasnip.session') +279.402 000.098 000.098: require('luasnip.util.util') +279.473 000.066 000.066: require('luasnip.nodes.util') +279.534 000.056 000.056: require('luasnip.util.events') +279.547 000.319 000.099: require('luasnip.nodes.node') +279.674 000.069 000.069: require('luasnip.util.extend_decorator') +279.686 000.533 000.146: require('luasnip.nodes.insertNode') +279.919 000.074 000.074: require('luasnip.util.mark') +280.169 000.139 000.139: require('luasnip.nodes.textNode') +281.040 000.795 000.795: require('luasnip.util._builtin_vars') +281.351 001.174 000.379: require('luasnip.util.environ') +281.437 000.079 000.079: require('luasnip.util.pattern_tokenizer') +281.498 000.056 000.056: require('luasnip.util.dict') +281.575 000.072 000.072: require('luasnip.session.snippet_collection') +281.623 001.697 000.177: require('luasnip.nodes.snippet') +281.637 001.947 000.176: require('luasnip.nodes.choiceNode') +281.746 000.092 000.092: require('luasnip.nodes.functionNode') +281.890 000.138 000.138: require('luasnip.nodes.dynamicNode') +282.120 000.223 000.223: require('luasnip.nodes.restoreNode') +282.206 000.080 000.080: require('luasnip.extras') +282.337 000.058 000.058: require('luasnip.util.str') +282.346 000.132 000.074: require('luasnip.extras.fmt') +282.406 000.056 000.056: require('luasnip.extras.expand_conditions') +282.614 000.065 000.065: require('luasnip.util.parser.neovim_ast') +292.804 000.087 000.087: require('luasnip.util.directed_graph') +292.822 010.347 010.195: require('luasnip.util.parser.ast_utils') +293.128 000.099 000.099: require('luasnip.util.functions') +293.176 000.350 000.251: require('luasnip.util.parser.ast_parser') +293.310 000.128 000.128: require('luasnip.util.parser.neovim_parser') +293.321 010.908 000.083: require('luasnip.util.parser') +293.386 000.062 000.062: require('luasnip.nodes.absolute_indexer') +294.059 015.332 000.858: require('luasnip.config') +294.221 015.792 000.460: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +294.977 000.049 000.049: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +295.967 000.371 000.371: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +296.524 000.083 000.083: require('cmp.utils.api') +296.647 000.059 000.059: require('cmp.types.cmp') +296.839 000.119 000.119: require('cmp.utils.misc') +297.081 000.429 000.310: require('cmp.types.lsp') +297.226 000.138 000.138: require('cmp.types.vim') +297.234 000.702 000.076: require('cmp.types') +297.305 000.067 000.067: require('cmp.utils.highlight') +297.431 000.059 000.059: require('cmp.utils.debug') +297.450 000.140 000.081: require('cmp.utils.autocmd') +298.078 001.706 000.713: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +298.486 000.147 000.147: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +299.035 000.067 000.067: require('nvim-treesitter.statusline') +299.120 000.078 000.078: require('nvim-treesitter.query_predicates') +299.127 000.230 000.085: require('nvim-treesitter') +300.467 000.465 000.465: require('vim.treesitter.highlighter') +300.868 001.027 000.563: require('nvim-treesitter.highlight') +301.483 002.641 001.383: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +301.941 000.234 000.234: require('treesitter-context') +301.952 000.276 000.042: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +302.323 000.085 000.085: require('nvim-treesitter-refactor') +302.482 000.270 000.185: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +302.850 000.115 000.115: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +303.268 000.080 000.080: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +303.688 000.067 000.067: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +304.627 000.442 000.442: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +305.382 000.516 000.516: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +305.980 000.344 000.344: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +307.047 007.082: loading packages +308.141 000.120 000.120: require('cmp.utils.char') +308.156 000.213 000.094: require('cmp.utils.str') +308.227 000.067 000.067: require('cmp.utils.pattern') +308.445 000.058 000.058: require('cmp.utils.buffer') +308.459 000.156 000.099: require('cmp.utils.keymap') +308.467 000.235 000.078: require('cmp.utils.feedkeys') +308.560 000.090 000.090: require('cmp.utils.async') +308.700 000.060 000.060: require('cmp.utils.cache') +308.708 000.142 000.081: require('cmp.context') +308.960 000.082 000.082: require('cmp.config.mapping') +309.130 000.083 000.083: require('cmp.config.compare') +309.135 000.165 000.082: require('cmp.config.default') +309.162 000.364 000.117: require('cmp.config') +309.340 000.067 000.067: require('cmp.matcher') +309.351 000.185 000.119: require('cmp.entry') +309.365 000.655 000.105: require('cmp.source') +309.506 000.060 000.060: require('cmp.utils.event') +309.707 000.096 000.096: require('cmp.utils.window') +309.715 000.204 000.108: require('cmp.view.docs_view') +309.873 000.119 000.119: require('cmp.view.custom_entries_view') +309.983 000.105 000.105: require('cmp.view.wildmenu_entries_view') +310.074 000.086 000.086: require('cmp.view.native_entries_view') +310.155 000.077 000.077: require('cmp.view.ghost_text_view') +310.173 000.804 000.152: require('cmp.view') +310.282 002.463 000.258: require('cmp.core') +310.552 000.080 000.080: require('cmp.config.sources') +310.621 000.061 000.061: require('cmp.config.window') +310.730 003.033 000.429: require('cmp') +311.020 000.062 000.062: require('cmp_buffer.timer') +311.032 000.152 000.089: require('cmp_buffer.buffer') +311.037 000.238 000.087: require('cmp_buffer.source') +311.042 000.307 000.069: require('cmp_buffer') +311.140 003.495 000.155: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +311.571 000.162 000.162: require('cmp_cmdline') +311.603 000.289 000.127: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +311.961 000.072 000.072: require('cmp_nvim_lsp.source') +311.969 000.157 000.085: require('cmp_nvim_lsp') +312.022 000.252 000.095: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +312.343 000.115 000.115: require('cmp_path') +312.378 000.198 000.083: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +313.734 000.697 000.697: require('vim.lsp.protocol') +313.987 000.246 000.246: require('vim.lsp._snippet') +314.131 000.137 000.137: require('vim.highlight') +314.170 001.507 000.427: require('vim.lsp.util') +314.178 001.594 000.087: require('cmp_luasnip') +314.253 001.713 000.119: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +314.335 001.341: loading after plugins +314.364 000.028: inits 3 +314.376 000.012: reading ShaDa +314.772 000.072 000.072: require('luasnip.loaders._caches') +314.885 000.106 000.106: require('luasnip.util.path') +314.974 000.083 000.083: require('luasnip.loaders.util') +315.202 000.105 000.105: require('luasnip.loaders') +315.244 000.265 000.160: require('luasnip') +315.251 000.649 000.123: require('luasnip.loaders.from_lua') +315.568 000.075 000.075: require('luasnip.nodes.snippetProxy') +315.581 000.183 000.107: require('luasnip.loaders.from_snipmate') +315.717 000.098 000.098: require('luasnip.loaders.from_vscode') +315.757 000.452: opening buffers +315.967 000.210: BufEnter autocommands +315.973 000.006: editing files in windows +332.180 000.541 000.541: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.440 001.440: --- NVIM STARTING --- +033.506 032.067: event init +051.827 018.320: early init +053.736 001.909: locale set +059.318 005.583: init first window +069.727 010.408: inits 1 +069.752 000.026: window checked +069.761 000.008: parsing arguments +081.649 000.270 000.270: require('vim.shared') +082.171 000.244 000.244: require('vim._meta') +082.184 000.512 000.267: require('vim._editor') +082.192 000.908 000.126: require('vim._init_packages') +082.199 011.531: init lua interpreter +082.371 000.172: expanding arguments +084.237 001.866: inits 2 +085.649 001.412: init highlight +085.660 000.011: waiting for UI +088.638 002.978: done waiting for UI +088.708 000.071: init screen for UI +089.210 000.502: init default mappings +089.266 000.055: init default autocommands +099.603 004.098 004.098: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/ftplugin.vim +102.742 001.689 001.689: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/indent.vim +103.345 000.057 000.057: sourcing /usr/share/nvim/archlinux.vim +103.371 000.184 000.127: sourcing /etc/xdg/nvim/sysinit.vim +120.420 009.662 009.662: require('keys') +125.718 005.274 005.274: require('opts') +131.048 001.043 001.043: require('packer.util') +131.141 004.676 003.633: require('packer') +135.503 001.909 001.909: require('packer.log') +135.523 002.818 000.910: require('packer.async') +137.175 000.657 000.657: require('packer.result') +137.192 001.660 001.003: require('packer.jobs') +137.218 005.968 001.490: require('packer.plugin_utils') +138.471 001.209 001.209: require('packer.snapshot') +139.913 014.177 002.324: require('pack') +157.971 018.042 018.042: require('impatient') +159.695 000.228 000.228: require('vim.treesitter.language') +159.725 000.906 000.678: require('vim.treesitter.query') +161.084 000.390 000.390: require('vim.treesitter.languagetree') +161.183 000.765 000.374: require('vim.treesitter') +161.604 001.571 000.806: require('nvim-treesitter.parsers') +161.821 000.208 000.208: require('nvim-treesitter.utils') +161.843 001.948 000.169: require('nvim-treesitter.ts_utils') +161.860 002.128 000.180: require('nvim-treesitter.tsrange') +162.042 000.176 000.176: require('nvim-treesitter.caching') +162.071 003.524 000.313: require('nvim-treesitter.query') +162.111 003.996 000.471: require('nvim-treesitter.configs') +162.983 000.371 000.371: require('nvim-treesitter.info') +163.160 000.166 000.166: require('nvim-treesitter.shell_command_selectors') +163.230 000.973 000.436: require('nvim-treesitter.install') +201.529 043.537 038.568: require('plugins.treesitter') +201.858 000.117 000.117: require('telescope._extensions') +201.869 000.215 000.098: require('telescope') +202.748 000.087 000.087: require('plenary.bit') +202.837 000.080 000.080: require('plenary.functional') +202.894 000.036 000.036: require('ffi') +202.920 000.413 000.210: require('plenary.path') +202.941 000.534 000.120: require('plenary.strings') +203.036 000.087 000.087: require('telescope.deprecated') +203.433 000.180 000.180: require('plenary.log') +203.526 000.350 000.170: require('telescope.log') +203.805 000.143 000.143: require('plenary.job') +203.893 000.081 000.081: require('telescope.state') +203.912 000.380 000.156: require('telescope.utils') +203.928 000.886 000.156: require('telescope.sorters') +204.097 000.144 000.144: require('vim.inspect') +205.037 000.017 000.017: require('vim.F') +208.736 006.621 004.954: require('telescope.config') +209.238 000.193 000.193: require('plenary.window.border') +209.784 000.538 000.538: require('plenary.window') +209.860 000.069 000.069: require('plenary.popup.utils') +209.870 001.122 000.323: require('plenary.popup') +209.955 000.081 000.081: require('telescope.pickers.scroller') +210.034 000.073 000.073: require('telescope.actions.state') +210.120 000.080 000.080: require('telescope.actions.utils') +210.388 000.082 000.082: require('telescope.actions.mt') +210.427 000.302 000.220: require('telescope.actions.set') +210.812 000.085 000.085: require('telescope.config.resolve') +210.821 000.232 000.147: require('telescope.pickers.entry_display') +210.890 000.066 000.066: require('telescope.from_entry') +211.423 009.549 000.972: require('telescope.actions') +212.041 000.064 000.064: require('plenary.tbl') +212.051 000.140 000.076: require('plenary.vararg.rotate') +212.055 000.208 000.068: require('plenary.vararg') +212.122 000.064 000.064: require('plenary.errors') +212.132 000.357 000.085: require('plenary.async.async') +212.210 000.075 000.075: require('plenary.async.structs') +212.223 000.527 000.095: require('plenary.async.control') +212.539 000.229 000.229: require('telescope.make_entry') +212.832 000.078 000.078: require('plenary.async.util') +212.839 000.148 000.070: require('plenary.async.tests') +212.844 000.222 000.075: require('plenary.async') +212.849 000.304 000.082: require('telescope.finders.async_static_finder') +213.073 000.065 000.065: require('plenary.class') +213.101 000.176 000.110: require('telescope._') +213.107 000.255 000.079: require('telescope.finders.async_oneshot_finder') +213.182 000.072 000.072: require('telescope.finders.async_job_finder') +213.196 000.968 000.108: require('telescope.finders') +213.485 000.082 000.082: require('telescope.debounce') +213.656 000.164 000.164: require('telescope.mappings') +213.782 000.120 000.120: require('telescope.pickers.highlights') +213.862 000.074 000.074: require('telescope.pickers.window') +214.038 000.079 000.079: require('telescope.algos.linked_list') +214.047 000.179 000.101: require('telescope.entry_manager') +214.124 000.074 000.074: require('telescope.pickers.multi') +214.157 000.957 000.264: require('telescope.pickers') +214.173 002.597 000.145: require('telescope.builtin.__lsp') +214.216 002.785 000.188: require('telescope.builtin') +214.575 000.265 000.265: require('fzf_lib') +214.587 000.364 000.099: require('telescope._extensions.fzf') +214.921 000.101 000.101: require('telescope._extensions.file_browser.utils') +215.026 000.349 000.248: require('telescope._extensions.file_browser.actions') +215.273 000.154 000.154: require('telescope._extensions.file_browser.make_entry') +215.417 000.138 000.138: require('plenary.scandir') +215.468 000.437 000.146: require('telescope._extensions.file_browser.finders') +215.551 000.079 000.079: require('telescope._extensions.file_browser.picker') +215.658 000.103 000.103: require('telescope._extensions.file_browser.config') +215.665 001.067 000.100: require('telescope._extensions.file_browser') +220.007 000.023 000.023: require('vim.keymap') +220.326 018.786 004.781: require('plugins.telescope') +221.609 000.069 000.069: require('notify.util.queue') +221.623 000.194 000.125: require('notify.util') +221.878 000.251 000.251: require('notify.config.highlights') +221.888 000.546 000.101: require('notify.config') +222.030 000.137 000.137: require('notify.stages') +222.195 000.158 000.158: require('notify.service.notification') +222.535 000.066 000.066: require('notify.animate.spring') +222.543 000.234 000.168: require('notify.animate') +222.554 000.353 000.119: require('notify.windows') +222.793 000.082 000.082: require('notify.service.buffer.highlights') +222.814 000.184 000.102: require('notify.service.buffer') +222.820 000.261 000.077: require('notify.service') +222.910 000.087 000.087: require('notify.stages.util') +222.920 001.678 000.135: require('notify') +222.997 000.073 000.073: require('nvim-tree.iterators.node-iterator') +223.085 001.979 000.229: require('nvim-tree.utils') +223.099 002.132 000.153: require('nvim-tree.events') +223.342 000.070 000.070: require('nvim-tree.log') +223.507 000.159 000.159: require('nvim-tree.git.utils') +223.603 000.090 000.090: require('nvim-tree.git.runner') +223.692 000.085 000.085: require('nvim-tree.watcher') +223.706 000.526 000.124: require('nvim-tree.git') +223.825 000.116 000.116: require('nvim-tree.explorer.watch') +223.921 000.091 000.091: require('nvim-tree.explorer.common') +224.186 000.113 000.113: require('nvim-tree.explorer.node-builders') +224.289 000.096 000.096: require('nvim-tree.explorer.sorters') +224.436 000.142 000.142: require('nvim-tree.explorer.filters') +224.920 000.367 000.367: require('nvim-tree.view') +224.935 000.493 000.126: require('nvim-tree.live-filter') +224.948 000.968 000.124: require('nvim-tree.explorer.explore') +225.061 000.110 000.110: require('nvim-tree.explorer.reload') +225.071 001.969 000.158: require('nvim-tree.explorer') +225.111 004.209 000.108: require('nvim-tree.core') +225.253 000.138 000.138: require('nvim-tree.diagnostics') +225.338 000.080 000.080: require('nvim-tree.renderer.components.padding') +225.425 000.082 000.082: require('nvim-tree.renderer.components.icons') +225.518 000.089 000.089: require('nvim-tree.renderer.components.full-name') +225.601 000.078 000.078: require('nvim-tree.renderer.help') +225.719 000.113 000.113: require('nvim-tree.renderer.components.git') +225.868 000.144 000.144: require('nvim-tree.renderer.builder') +225.977 000.104 000.104: require('nvim-tree.marks') +226.002 005.207 000.172: require('nvim-tree.renderer') +226.097 000.083 000.083: require('nvim-tree.actions.tree-modifiers.collapse-all') +226.187 000.085 000.085: require('nvim-tree.actions.root.dir-up') +226.284 000.093 000.093: require('nvim-tree.actions.root.change-dir') +226.372 000.083 000.083: require('nvim-tree.actions.reloaders.reloaders') +226.462 000.084 000.084: require('nvim-tree.actions.finders.find-file') +226.467 005.755 000.119: require('nvim-tree.lib') +226.592 000.121 000.121: require('nvim-tree.colors') +226.766 000.169 000.169: require('nvim-tree.legacy') +226.916 000.145 000.145: require('nvim-tree.actions.fs.copy-paste') +227.109 000.085 000.085: require('nvim-tree.actions.tree-modifiers.expand-all') +227.195 000.080 000.080: require('nvim-tree.actions.tree-modifiers.toggles') +227.297 000.091 000.091: require('nvim-tree.actions.fs.create-file') +227.396 000.094 000.094: require('nvim-tree.actions.fs.rename-file') +227.529 000.127 000.127: require('nvim-tree.actions.fs.trash') +227.629 000.094 000.094: require('nvim-tree.actions.fs.remove-file') +227.737 000.102 000.102: require('nvim-tree.actions.moves.parent') +227.819 000.077 000.077: require('nvim-tree.actions.moves.sibling') +227.903 000.079 000.079: require('nvim-tree.actions.moves.item') +228.001 000.087 000.087: require('nvim-tree.actions.finders.search-node') +228.117 000.111 000.111: require('nvim-tree.actions.node.run-command') +228.214 000.092 000.092: require('nvim-tree.actions.node.file-popup') +228.325 000.106 000.106: require('nvim-tree.actions.node.system-open') +228.423 000.087 000.087: require('nvim-tree.marks.bulk-move') +228.432 001.507 000.196: require('nvim-tree.actions.dispatch') +228.491 008.030 000.333: require('nvim-tree') +228.567 000.071 000.071: require('nvim-tree.config') +233.557 000.315 000.315: require('nvim-tree.actions') +233.708 000.138 000.138: require('nvim-tree.actions.node.open-file') +237.087 000.092 000.092: require('nvim-tree.marks.navigation') +237.098 000.268 000.177: require('nvim-tree.api') +237.135 000.443 000.175: require('nvim-tree.keymap') +238.686 001.052 001.052: require('nvim-web-devicons') +244.255 023.921 013.872: require('plugins.nvim-tree') +245.221 000.395 000.395: require('lualine_require') +246.164 001.579 001.185: require('lualine') +246.240 000.069 000.069: require('plugins.linecolor') +249.546 000.081 000.081: require('lualine.utils.mode') +255.637 011.372 009.643: require('plugins.lualine') +255.647 152.176 007.406: sourcing /home/sxrdusr/.config/nvim/init.lua +255.665 008.252: sourcing vimrc file(s) +255.924 000.052 000.052: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +257.174 000.058 000.058: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/filetype.lua +259.475 002.166 002.166: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/filetype.vim +262.509 000.376 000.376: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/syntax/synload.vim +262.752 002.375 001.999: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/syntax/syntax.vim +268.292 001.428 001.428: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/gzip.vim +268.426 000.061 000.061: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/health.vim +271.039 001.395 001.395: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim +271.512 003.018 001.624: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/matchit.vim +271.977 000.398 000.398: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/matchparen.vim +272.126 000.080 000.080: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/netrwPlugin.vim +272.541 000.023 000.023: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +272.561 000.371 000.348: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/rplugin.vim +272.808 000.186 000.186: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/shada.vim +272.959 000.082 000.082: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/spellfile.vim +273.333 000.308 000.308: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/tarPlugin.vim +273.622 000.219 000.219: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/tohtml.vim +273.757 000.068 000.068: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/tutor.vim +274.800 000.978 000.978: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/zipPlugin.vim +276.286 001.257 001.257: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +277.474 001.016 001.016: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +278.325 000.101 000.101: sourcing /tmp/.mount_nvimtdMy65/usr/share/nvim/runtime/plugin/man.lua +278.494 008.606: loading rtp plugins +279.975 000.149 000.149: require('Comment.config') +280.069 000.086 000.086: require('Comment.utils') +280.138 000.063 000.063: require('Comment.opfunc') +280.200 000.058 000.058: require('Comment.extra') +280.213 000.601 000.245: require('Comment.api') +280.666 001.108 000.508: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +281.327 000.059 000.059: require('luasnip.util.types') +281.398 000.064 000.064: require('luasnip.util.ext_opts') +281.468 000.065 000.065: require('luasnip.extras.filetype_functions') +281.536 000.063 000.063: require('luasnip.session') +281.783 000.095 000.095: require('luasnip.util.util') +281.853 000.064 000.064: require('luasnip.nodes.util') +281.911 000.054 000.054: require('luasnip.util.events') +281.926 000.314 000.100: require('luasnip.nodes.node') +282.059 000.063 000.063: require('luasnip.util.extend_decorator') +282.070 000.530 000.153: require('luasnip.nodes.insertNode') +282.340 000.076 000.076: require('luasnip.util.mark') +282.529 000.079 000.079: require('luasnip.nodes.textNode') +283.386 000.788 000.788: require('luasnip.util._builtin_vars') +283.668 001.132 000.344: require('luasnip.util.environ') +283.751 000.077 000.077: require('luasnip.util.pattern_tokenizer') +283.811 000.055 000.055: require('luasnip.util.dict') +283.886 000.070 000.070: require('luasnip.session.snippet_collection') +283.934 001.587 000.174: require('luasnip.nodes.snippet') +283.949 001.875 000.212: require('luasnip.nodes.choiceNode') +284.098 000.132 000.132: require('luasnip.nodes.functionNode') +284.205 000.100 000.100: require('luasnip.nodes.dynamicNode') +284.306 000.095 000.095: require('luasnip.nodes.restoreNode') +284.408 000.097 000.097: require('luasnip.extras') +284.538 000.058 000.058: require('luasnip.util.str') +284.547 000.132 000.074: require('luasnip.extras.fmt') +284.608 000.057 000.057: require('luasnip.extras.expand_conditions') +284.811 000.065 000.065: require('luasnip.util.parser.neovim_ast') +293.026 000.084 000.084: require('luasnip.util.directed_graph') +293.043 008.368 008.219: require('luasnip.util.parser.ast_utils') +293.210 000.061 000.061: require('luasnip.util.functions') +293.258 000.211 000.149: require('luasnip.util.parser.ast_parser') +293.400 000.138 000.138: require('luasnip.util.parser.neovim_parser') +293.411 008.797 000.081: require('luasnip.util.parser') +293.477 000.062 000.062: require('luasnip.nodes.absolute_indexer') +293.898 012.734 000.606: require('luasnip.config') +294.056 013.203 000.469: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +294.842 000.050 000.050: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +295.836 000.382 000.382: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +296.359 000.081 000.081: require('cmp.utils.api') +296.480 000.057 000.057: require('cmp.types.cmp') +296.619 000.068 000.068: require('cmp.utils.misc') +296.743 000.258 000.190: require('cmp.types.lsp') +296.810 000.060 000.060: require('cmp.types.vim') +296.815 000.449 000.074: require('cmp.types') +296.876 000.057 000.057: require('cmp.utils.highlight') +296.985 000.050 000.050: require('cmp.utils.debug') +297.002 000.122 000.072: require('cmp.utils.autocmd') +297.720 001.509 000.800: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +298.111 000.135 000.135: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +298.635 000.059 000.059: require('nvim-treesitter.statusline') +298.711 000.069 000.069: require('nvim-treesitter.query_predicates') +298.718 000.204 000.076: require('nvim-treesitter') +300.054 000.290 000.290: require('vim.treesitter.highlighter') +300.401 000.792 000.501: require('nvim-treesitter.highlight') +300.770 002.306 001.310: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +301.262 000.278 000.278: require('treesitter-context') +301.273 000.317 000.039: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +301.636 000.084 000.084: require('nvim-treesitter-refactor') +301.851 000.326 000.242: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +302.218 000.117 000.117: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +302.588 000.077 000.077: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +303.010 000.067 000.067: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +303.920 000.429 000.429: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +304.696 000.549 000.549: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-startuptime/plugin/startuptime.vim +305.310 000.352 000.352: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +306.794 007.375: loading packages +307.896 000.127 000.127: require('cmp.utils.char') +307.914 000.249 000.122: require('cmp.utils.str') +307.981 000.062 000.062: require('cmp.utils.pattern') +308.199 000.057 000.057: require('cmp.utils.buffer') +308.210 000.157 000.100: require('cmp.utils.keymap') +308.221 000.235 000.078: require('cmp.utils.feedkeys') +308.314 000.089 000.089: require('cmp.utils.async') +308.447 000.059 000.059: require('cmp.utils.cache') +308.454 000.134 000.076: require('cmp.context') +308.705 000.085 000.085: require('cmp.config.mapping') +308.866 000.082 000.082: require('cmp.config.compare') +308.872 000.160 000.077: require('cmp.config.default') +308.897 000.350 000.105: require('cmp.config') +309.068 000.062 000.062: require('cmp.matcher') +309.081 000.180 000.118: require('cmp.entry') +309.095 000.638 000.108: require('cmp.source') +309.233 000.059 000.059: require('cmp.utils.event') +309.405 000.096 000.096: require('cmp.utils.window') +309.412 000.175 000.078: require('cmp.view.docs_view') +309.573 000.120 000.120: require('cmp.view.custom_entries_view') +309.681 000.103 000.103: require('cmp.view.wildmenu_entries_view') +309.769 000.083 000.083: require('cmp.view.native_entries_view') +309.847 000.074 000.074: require('cmp.view.ghost_text_view') +309.865 000.766 000.153: require('cmp.view') +309.975 002.429 000.254: require('cmp.core') +310.464 000.071 000.071: require('cmp.config.sources') +310.532 000.061 000.061: require('cmp.config.window') +310.651 003.219 000.659: require('cmp') +310.932 000.062 000.062: require('cmp_buffer.timer') +310.940 000.144 000.083: require('cmp_buffer.buffer') +310.949 000.232 000.087: require('cmp_buffer.source') +310.953 000.297 000.065: require('cmp_buffer') +310.984 003.601 000.086: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +311.371 000.155 000.155: require('cmp_cmdline') +311.405 000.233 000.077: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +311.754 000.072 000.072: require('cmp_nvim_lsp.source') +311.761 000.148 000.076: require('cmp_nvim_lsp') +311.854 000.284 000.136: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +312.173 000.114 000.114: require('cmp_path') +312.208 000.192 000.078: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +313.680 000.681 000.681: require('vim.lsp.protocol') +313.997 000.309 000.309: require('vim.lsp._snippet') +314.150 000.147 000.147: require('vim.highlight') +314.183 001.671 000.534: require('vim.lsp.util') +314.193 001.759 000.089: require('cmp_luasnip') +314.266 001.907 000.148: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +314.409 001.397: loading after plugins +314.443 000.034: inits 3 +314.458 000.014: reading ShaDa +314.850 000.070 000.070: require('luasnip.loaders._caches') +314.966 000.109 000.109: require('luasnip.util.path') +315.062 000.091 000.091: require('luasnip.loaders.util') +315.293 000.104 000.104: require('luasnip.loaders') +315.332 000.265 000.160: require('luasnip') +315.339 000.648 000.114: require('luasnip.loaders.from_lua') +315.551 000.074 000.074: require('luasnip.nodes.snippetProxy') +315.561 000.172 000.097: require('luasnip.loaders.from_snipmate') +315.691 000.089 000.089: require('luasnip.loaders.from_vscode') +315.726 000.360: opening buffers +315.996 000.269: BufEnter autocommands +316.003 000.007: editing files in windows +331.179 000.499 000.499: require('vim.diagnostic') + + +times in msec + clock self+sourced self: sourced script + clock elapsed: other lines + +001.200 001.200: --- NVIM STARTING --- +028.869 027.670: event init +045.983 017.113: early init +047.792 001.810: locale set +053.512 005.720: init first window +063.922 010.410: inits 1 +063.947 000.025: window checked +063.955 000.008: parsing arguments +076.112 000.253 000.253: require('vim.shared') +076.628 000.246 000.246: require('vim._meta') +076.644 000.505 000.259: require('vim._editor') +076.652 000.941 000.183: require('vim._init_packages') +076.660 011.764: init lua interpreter +076.862 000.202: expanding arguments +078.857 001.995: inits 2 +080.284 001.427: init highlight +080.295 000.011: waiting for UI +082.949 002.654: done waiting for UI +083.000 000.051: init screen for UI +083.246 000.246: init default mappings +083.273 000.027: init default autocommands +093.988 004.253 004.253: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/ftplugin.vim +096.789 001.077 001.077: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/indent.vim +097.277 000.056 000.056: sourcing /usr/share/nvim/archlinux.vim +097.304 000.182 000.126: sourcing /etc/xdg/nvim/sysinit.vim +111.429 006.947 006.947: require('keys') +113.908 002.467 002.467: require('opts') +117.673 001.187 001.187: require('packer.util') +117.808 003.545 002.358: require('packer') +122.146 001.171 001.171: require('packer.log') +122.166 002.129 000.957: require('packer.async') +124.195 000.802 000.802: require('packer.result') +124.220 002.045 001.244: require('packer.jobs') +124.252 005.833 001.659: require('packer.plugin_utils') +125.549 001.251 001.251: require('packer.snapshot') +127.162 013.245 002.616: require('pack') +158.488 031.310 031.310: require('impatient') +159.340 000.277 000.277: require('lualine_require') +160.073 001.430 001.153: require('lualine') +160.228 000.146 000.146: require('plugins.linecolor') +169.390 000.177 000.177: require('lualine.utils.mode') +172.397 013.891 012.138: require('plugins.lualine') +172.450 075.045 007.184: sourcing /home/sxrdusr/.config/nvim/init.lua +172.493 008.664: sourcing vimrc file(s) +172.853 000.064 000.064: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/filetype.nvim/filetype.vim +174.426 000.083 000.083: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/filetype.lua +176.471 001.751 001.751: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/filetype.vim +179.037 000.296 000.296: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/syntax/synload.vim +179.314 002.168 001.872: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/syntax/syntax.vim +179.520 000.026 000.026: require('vim.F') +186.212 001.264 001.264: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/gzip.vim +186.358 000.064 000.064: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/health.vim +186.496 000.065 000.065: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/matchit.vim +186.634 000.066 000.066: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/matchparen.vim +186.802 000.097 000.097: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/netrwPlugin.vim +187.224 000.037 000.037: sourcing /home/sxrdusr/.local/share/nvim/rplugin.vim +187.244 000.381 000.343: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/rplugin.vim +187.485 000.182 000.182: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/shada.vim +187.643 000.091 000.091: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/spellfile.vim +187.770 000.062 000.062: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/tarPlugin.vim +187.893 000.059 000.059: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/tohtml.vim +188.022 000.066 000.066: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/tutor.vim +188.970 000.884 000.884: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/zipPlugin.vim +190.447 001.228 001.228: sourcing /usr/share/vim/vimfiles/plugin/fzf.vim +191.939 001.259 001.259: sourcing /home/sxrdusr/.config/nvim/plugin/packer_compiled.lua +192.809 000.149 000.149: sourcing /tmp/.mount_nvimnohCwK/usr/share/nvim/runtime/plugin/man.lua +193.044 010.542: loading rtp plugins +194.557 000.015 000.015: require('vim.keymap') +194.979 000.089 000.089: require('Comment.config') +195.098 000.111 000.111: require('Comment.utils') +195.179 000.075 000.075: require('Comment.opfunc') +195.356 000.171 000.171: require('Comment.extra') +195.374 000.809 000.362: require('Comment.api') +195.696 001.258 000.434: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/Comment.nvim/plugin/Comment.lua +196.405 000.067 000.067: require('luasnip.util.types') +196.489 000.076 000.076: require('luasnip.util.ext_opts') +198.131 000.221 000.221: require('vim.treesitter.language') +198.166 000.785 000.564: require('vim.treesitter.query') +198.468 000.297 000.297: require('vim.treesitter.languagetree') +198.532 001.607 000.525: require('vim.treesitter') +198.791 002.228 000.622: require('nvim-treesitter.parsers') +198.993 000.100 000.100: require('nvim-treesitter.utils') +199.005 000.208 000.108: require('nvim-treesitter.ts_utils') +199.011 002.516 000.080: require('luasnip.extras.filetype_functions') +199.094 000.079 000.079: require('luasnip.session') +199.418 000.126 000.126: require('luasnip.util.util') +199.498 000.074 000.074: require('luasnip.nodes.util') +199.570 000.067 000.067: require('luasnip.util.events') +199.587 000.382 000.115: require('luasnip.nodes.node') +199.701 000.066 000.066: require('luasnip.util.extend_decorator') +199.712 000.613 000.165: require('luasnip.nodes.insertNode') +199.969 000.081 000.081: require('luasnip.util.mark') +200.192 000.093 000.093: require('luasnip.nodes.textNode') +200.914 000.645 000.645: require('luasnip.util._builtin_vars') +201.113 000.189 000.189: require('vim.inspect') +201.340 001.141 000.306: require('luasnip.util.environ') +201.452 000.105 000.105: require('luasnip.util.pattern_tokenizer') +201.569 000.108 000.108: require('luasnip.util.dict') +201.675 000.094 000.094: require('luasnip.session.snippet_collection') +201.787 001.810 000.270: require('luasnip.nodes.snippet') +201.807 002.091 000.199: require('luasnip.nodes.choiceNode') +201.938 000.106 000.106: require('luasnip.nodes.functionNode') +202.112 000.166 000.166: require('luasnip.nodes.dynamicNode') +202.290 000.172 000.172: require('luasnip.nodes.restoreNode') +202.386 000.089 000.089: require('luasnip.extras') +202.561 000.072 000.072: require('luasnip.util.str') +202.575 000.181 000.109: require('luasnip.extras.fmt') +202.643 000.063 000.063: require('luasnip.extras.expand_conditions') +202.880 000.077 000.077: require('luasnip.util.parser.neovim_ast') +215.457 000.113 000.113: require('luasnip.util.directed_graph') +215.486 012.764 012.575: require('luasnip.util.parser.ast_utils') +215.665 000.071 000.071: require('luasnip.util.functions') +215.677 000.184 000.113: require('luasnip.util.parser.ast_parser') +215.881 000.200 000.200: require('luasnip.util.parser.neovim_parser') +215.894 013.244 000.096: require('luasnip.util.parser') +215.971 000.071 000.071: require('luasnip.nodes.absolute_indexer') +217.153 020.941 001.407: require('luasnip.config') +217.313 021.401 000.460: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/LuaSnip/plugin/luasnip.vim +218.109 000.052 000.052: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/fzf/plugin/fzf.vim +218.673 000.108 000.108: require('lsp-colors') +219.216 000.706 000.598: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim/plugin/lsp-colors.vim +220.523 000.925 000.925: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/lspsaga.nvim/plugin/lspsaga.lua +221.323 000.399 000.399: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/numbers.vim/plugin/numbers.vim +221.864 000.096 000.096: require('cmp.utils.api') +222.010 000.072 000.072: require('cmp.types.cmp') +222.182 000.079 000.079: require('cmp.utils.misc') +222.383 000.366 000.287: require('cmp.types.lsp') +222.479 000.088 000.088: require('cmp.types.vim') +222.486 000.614 000.088: require('cmp.types') +222.558 000.068 000.068: require('cmp.utils.highlight') +222.684 000.058 000.058: require('cmp.utils.debug') +222.699 000.136 000.078: require('cmp.utils.autocmd') +223.440 001.744 000.830: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-cmp/plugin/cmp.lua +223.708 000.084 000.084: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua/plugin/colorizer.vim +224.265 000.243 000.243: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-dap/plugin/dap.lua +224.744 000.254 000.254: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lsp-installer/plugin/nvim-lsp-installer.vim +225.221 000.152 000.152: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig/plugin/lspconfig.lua +226.304 000.080 000.080: require('nvim-treesitter.tsrange') +226.375 000.063 000.063: require('nvim-treesitter.caching') +226.395 000.257 000.113: require('nvim-treesitter.query') +226.423 000.394 000.137: require('nvim-treesitter.configs') +226.435 000.486 000.092: require('nvim-treesitter.info') +226.559 000.120 000.120: require('nvim-treesitter.shell_command_selectors') +226.608 000.850 000.243: require('nvim-treesitter.install') +226.680 000.067 000.067: require('nvim-treesitter.statusline') +226.764 000.079 000.079: require('nvim-treesitter.query_predicates') +226.771 001.082 000.087: require('nvim-treesitter') +228.041 000.342 000.342: require('vim.treesitter.highlighter') +228.350 000.802 000.461: require('nvim-treesitter.highlight') +228.990 003.358 001.473: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter/plugin/nvim-treesitter.lua +229.487 000.218 000.218: require('treesitter-context') +229.498 000.262 000.044: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context/plugin/treesitter-context.vim +229.869 000.082 000.082: require('nvim-treesitter-refactor') +230.155 000.393 000.311: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-treesitter-refactor/plugin/nvim-treesitter-refactor.vim +230.535 000.118 000.118: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/nvim-web-devicons/plugin/nvim-web-devicons.vim +230.984 000.109 000.109: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/plenary.nvim/plugin/plenary.vim +231.332 000.099 000.099: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/prettier.nvim/plugin/prettier.vim +231.669 000.028 000.028: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/startuptime.vim/plugin/startuptime.vim +232.027 000.067 000.067: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope-frecency.nvim/plugin/frecency.vim +233.279 000.677 000.677: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/telescope.nvim/plugin/telescope.lua +233.906 000.382 000.382: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/vim-tmux-navigator/plugin/tmux_navigator.vim +234.199 000.032 000.032: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/which-key.nvim/plugin/which-key.vim +234.492 000.054 000.054: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/zen-mode.nvim/plugin/zen-mode.vim +236.377 010.537: loading packages +237.770 000.206 000.206: require('cmp.utils.char') +237.795 000.307 000.101: require('cmp.utils.str') +237.874 000.073 000.073: require('cmp.utils.pattern') +238.114 000.058 000.058: require('cmp.utils.buffer') +238.126 000.165 000.107: require('cmp.utils.keymap') +238.139 000.259 000.095: require('cmp.utils.feedkeys') +238.243 000.100 000.100: require('cmp.utils.async') +238.378 000.062 000.062: require('cmp.utils.cache') +238.386 000.137 000.075: require('cmp.context') +238.631 000.076 000.076: require('cmp.config.mapping') +238.815 000.092 000.092: require('cmp.config.compare') +238.825 000.186 000.094: require('cmp.config.default') +238.903 000.422 000.160: require('cmp.config') +239.078 000.067 000.067: require('cmp.matcher') +239.092 000.184 000.117: require('cmp.entry') +239.109 000.720 000.114: require('cmp.source') +239.317 000.061 000.061: require('cmp.utils.event') +239.485 000.088 000.088: require('cmp.utils.window') +239.495 000.172 000.084: require('cmp.view.docs_view') +239.626 000.127 000.127: require('cmp.view.custom_entries_view') +239.733 000.101 000.101: require('cmp.view.wildmenu_entries_view') +239.821 000.083 000.083: require('cmp.view.native_entries_view') +239.912 000.085 000.085: require('cmp.view.ghost_text_view') +239.931 000.818 000.189: require('cmp.view') +240.078 002.714 000.300: require('cmp.core') +240.402 000.068 000.068: require('cmp.config.sources') +240.473 000.062 000.062: require('cmp.config.window') +240.589 003.405 000.561: require('cmp') +240.880 000.061 000.061: require('cmp_buffer.timer') +240.889 000.145 000.084: require('cmp_buffer.buffer') +240.898 000.225 000.079: require('cmp_buffer.source') +240.903 000.308 000.083: require('cmp_buffer') +240.932 003.863 000.149: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-buffer/after/plugin/cmp_buffer.lua +241.333 000.156 000.156: require('cmp_cmdline') +241.367 000.241 000.084: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-cmdline/after/plugin/cmp_cmdline.lua +241.724 000.072 000.072: require('cmp_nvim_lsp.source') +241.735 000.152 000.080: require('cmp_nvim_lsp') +241.792 000.253 000.100: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua +242.117 000.119 000.119: require('cmp_path') +242.152 000.200 000.081: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp-path/after/plugin/cmp_path.lua +244.719 000.990 000.990: require('vim.lsp.protocol') +245.045 000.318 000.318: require('vim.lsp._snippet') +245.341 000.289 000.289: require('vim.highlight') +245.373 002.812 001.214: require('vim.lsp.util') +245.381 003.021 000.210: require('cmp_luasnip') +245.454 003.140 000.118: sourcing /home/sxrdusr/.local/share/nvim/site/pack/packer/start/cmp_luasnip/after/plugin/cmp_luasnip.lua +245.540 001.468: loading after plugins +245.570 000.029: inits 3 +245.584 000.014: reading ShaDa +246.009 000.071 000.071: require('luasnip.loaders._caches') +246.125 000.109 000.109: require('luasnip.util.path') +246.226 000.094 000.094: require('luasnip.loaders.util') +246.457 000.106 000.106: require('luasnip.loaders') +246.497 000.264 000.159: require('luasnip') +246.504 000.653 000.114: require('luasnip.loaders.from_lua') +246.720 000.069 000.069: require('luasnip.nodes.snippetProxy') +246.733 000.169 000.100: require('luasnip.loaders.from_snipmate') +246.974 000.094 000.094: require('luasnip.loaders.from_vscode') +247.013 000.513: opening buffers +247.262 000.249: BufEnter autocommands +247.269 000.007: editing files in windows +337.636 000.735 000.735: require('vim.diagnostic') +339.538 000.687 000.687: require('nvim-web-devicons') diff --git a/lua/utils.lua b/lua/utils.lua new file mode 100644 index 0000000..ab1473f --- /dev/null +++ b/lua/utils.lua @@ -0,0 +1,66 @@ +local fn = vim.fn + +local M = {} + +function M.executable(name) + if fn.executable(name) > 0 then + return true + end + + return false +end + +--- check whether a feature exists in Nvim +--- @feat: string +--- the feature name, like `nvim-0.7` or `unix`. +--- return: bool +M.has = function(feat) + if fn.has(feat) == 1 then + return true + end + + return false +end + +--- Create a dir if it does not exist +function M.may_create_dir(dir) + local res = fn.isdirectory(dir) + + if res == 0 then + fn.mkdir(dir, "p") + end +end + +function M.get_nvim_version() + local actual_ver = vim.version() + + local nvim_ver_str = string.format("%d.%d.%d", actual_ver.major, actual_ver.minor, actual_ver.patch) + return nvim_ver_str +end + +--- Generate random integers in the range [Low, High], inclusive, +--- adapted from https://stackoverflow.com/a/12739441/6064933 +--- @low: the lower value for this range +--- @high: the upper value for this range +function M.rand_int(low, high) + -- Use lua to generate random int, see also: https://stackoverflow.com/a/20157671/6064933 + math.randomseed(os.time()) + + return math.random(low, high) +end + +--- Select a random element from a sequence/list. +--- @seq: the sequence to choose an element +function M.rand_element(seq) + local idx = M.rand_int(1, #seq) + + return seq[idx] +end + +function M.add_pack(name) + local status, error = pcall(vim.cmd, "packadd " .. name) + + return status +end + +return M |
