aboutsummaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/keys.lua483
-rw-r--r--lua/mods.lua138
-rw-r--r--lua/opts.lua178
-rw-r--r--lua/pack.lua279
-rw-r--r--lua/plugins/airline.lua9
-rw-r--r--lua/plugins/autopairs.lua33
-rw-r--r--lua/plugins/bufferline.lua323
-rw-r--r--lua/plugins/bufferline.lua-202209041657.backup322
-rw-r--r--lua/plugins/cmp.lua134
-rw-r--r--lua/plugins/colorizer.lua6
-rw-r--r--lua/plugins/colorscheme.lua29
-rw-r--r--lua/plugins/feline.lua726
-rw-r--r--lua/plugins/floaterm.lua6
-rw-r--r--lua/plugins/fzf.lua66
-rw-r--r--lua/plugins/git.lua11
-rw-r--r--lua/plugins/gitsigns.lua1
-rw-r--r--lua/plugins/heirline.backup.lua733
-rw-r--r--lua/plugins/heirline.backup2.lua1921
-rw-r--r--lua/plugins/heirline.lua1124
-rw-r--r--lua/plugins/heirline.lua-202210111610.backup1452
-rw-r--r--lua/plugins/heirlinenew.lua1342
-rw-r--r--lua/plugins/linecolor.lua112
-rw-r--r--lua/plugins/lsp-colors.lua9
-rw-r--r--lua/plugins/lsp.lua227
-rw-r--r--lua/plugins/lspOld.lsp531
-rw-r--r--lua/plugins/lspconfig.lua148
-rw-r--r--lua/plugins/lspkind.lua47
-rw-r--r--lua/plugins/lspsaga.lua61
-rw-r--r--lua/plugins/lualine.lua423
-rw-r--r--lua/plugins/mason.lua27
-rw-r--r--lua/plugins/neoscroll.lua21
-rw-r--r--lua/plugins/null-ls.lua26
-rw-r--r--lua/plugins/nvim-tree.lua68
-rw-r--r--lua/plugins/prettier.lua19
-rw-r--r--lua/plugins/tabline.lua22
-rw-r--r--lua/plugins/telescope.lua177
-rw-r--r--lua/plugins/toggleterm.lua90
-rw-r--r--lua/plugins/treesitter.lua39
-rw-r--r--lua/plugins/web-devicons.lua12
-rw-r--r--lua/plugins/winbar.lua35
-rw-r--r--lua/plugins/zen-mode.lua7
-rw-r--r--lua/scripts/setcolors.lua121
-rw-r--r--lua/startup.log6125
-rw-r--r--lua/utils.lua66
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