From 01ee066c62f62d717e53b0e9bd74db35ea1f6f14 Mon Sep 17 00:00:00 2001
From: Matei Adriel <rafaeladriel11@gmail.com>
Date: Mon, 14 Nov 2022 01:16:10 +0100
Subject: [PATCH] Backup

---
 .lua-format                                   |   8 +
 dotfiles/neovim/ftplugin/nix.lua              |  14 +-
 dotfiles/neovim/ftplugin/purescript.lua       |   2 -
 dotfiles/neovim/ftplugin/tex.lua              |  57 +-
 dotfiles/neovim/lua/my/helpers/math/mod.lua   |  15 +
 dotfiles/neovim/lua/my/options.lua            |  58 +-
 dotfiles/neovim/lua/my/paq.lua                |   3 +-
 dotfiles/neovim/lua/my/plugins/easymotion.lua |  24 +-
 dotfiles/neovim/lua/my/plugins/firevim.lua    |   2 -
 dotfiles/neovim/lua/my/plugins/idris.lua      |   4 +-
 dotfiles/neovim/lua/my/plugins/init.lua       |   3 +-
 dotfiles/neovim/lua/my/plugins/lspconfig.lua  |  30 +-
 dotfiles/neovim/lua/my/plugins/noice.lua      |  34 ++
 dotfiles/neovim/lua/my/plugins/notify.lua     |   7 +
 dotfiles/neovim/lua/my/plugins/null-ls.lua    |  13 +-
 dotfiles/neovim/lua/my/plugins/whichkey.lua   |  10 +-
 flake.lock                                    |  12 +-
 img/22-11-06-21-35-08.png                     | Bin 0 -> 15356 bytes
 modules/themes/catppuccin/nvim.lua            |   9 +-
 startup                                       | 534 ------------------
 20 files changed, 182 insertions(+), 657 deletions(-)
 create mode 100644 .lua-format
 create mode 100644 dotfiles/neovim/lua/my/helpers/math/mod.lua
 create mode 100644 dotfiles/neovim/lua/my/plugins/noice.lua
 create mode 100644 dotfiles/neovim/lua/my/plugins/notify.lua
 create mode 100644 img/22-11-06-21-35-08.png
 delete mode 100644 startup

diff --git a/.lua-format b/.lua-format
new file mode 100644
index 0000000..53cb625
--- /dev/null
+++ b/.lua-format
@@ -0,0 +1,8 @@
+indent_width: 2
+column_limit: 100
+keep_simple_function_one_line: false
+spaces_inside_table_braces: true
+chop_down_table: true
+# chop_down_parameter: true
+# break_after_functioncall_lp: true
+# break_before_functioncall_rp: true
diff --git a/dotfiles/neovim/ftplugin/nix.lua b/dotfiles/neovim/ftplugin/nix.lua
index 5dba7d9..991dbac 100644
--- a/dotfiles/neovim/ftplugin/nix.lua
+++ b/dotfiles/neovim/ftplugin/nix.lua
@@ -1,11 +1,9 @@
-local A = require("my.plugins.arpeggio")
-
-print("Initializing nix keybinds...")
-
--- Use _ug_ to fetchgit stuff
-A.chordSilent("n", "ug",
-  ":lua require('my.helpers.update-nix-fetchgit').update()<CR>",
-  { settings = "b" })
+-- Use _<leader>lg_ to fetchgit stuff
+vim.keymap.set("n", "<leader>lg", function()
+  require("my.helpers").saveCursor(function()
+    vim.cmd(":%!update-nix-fetchgit")
+  end)
+end, { buffer = true, desc = "Update all fetchgit calls" })
 
 -- Idk why this isn't here by default
 vim.api.nvim_buf_set_option(0, "commentstring", "# %s")
diff --git a/dotfiles/neovim/ftplugin/purescript.lua b/dotfiles/neovim/ftplugin/purescript.lua
index ae2e905..0d0b6ce 100644
--- a/dotfiles/neovim/ftplugin/purescript.lua
+++ b/dotfiles/neovim/ftplugin/purescript.lua
@@ -1,8 +1,6 @@
 local arpeggio = require("my.plugins.arpeggio")
 local A = require("my.abbreviations")
 
--- print("Initializing purescript keybinds...")
-
 -- Use vt to test
 arpeggio.chordSilent("n", "vt", ":VimuxRunCommand \"clear && spago test\"<CR>",
   { settings = "b" })
diff --git a/dotfiles/neovim/ftplugin/tex.lua b/dotfiles/neovim/ftplugin/tex.lua
index 7f504f4..553d4e7 100644
--- a/dotfiles/neovim/ftplugin/tex.lua
+++ b/dotfiles/neovim/ftplugin/tex.lua
@@ -10,6 +10,26 @@ vim.g.tex_conceal = "abdmg"
 vim.g.vimtex_imaps_enabled = 0
 -- vim.g.vimtex_syntax_conceal = 1
 
+vim.keymap.set("n", "<leader>lg", function()
+  if not pcall(function()
+    local a = tonumber(vim.fn.input("A: "))
+    local b = tonumber(vim.fn.input("B: "))
+
+    local g, x, y = require("my.helpers.math.mod").gcd(a, b)
+
+    vim.fn.input("Result: " .. g .. " " .. x .. " " .. y)
+  end) then vim.fn.input("No results exist") end
+end, { buffer = true, desc = "Gcd calculator" })
+
+vim.keymap.set("n", "<leader>li", function()
+  if not pcall(function()
+    local class = tonumber(vim.fn.input("Mod class: "))
+    local num = tonumber(vim.fn.input("Number: "))
+
+    vim.fn.input("Result: " .. require("my.helpers.math.mod").modinverse(num, class))
+  end) then vim.fn.input("No results exist") end
+end, { buffer = true, desc = "Mod inverse calculator" })
+
 local abbreviations = {
   -- Greek chars
   { "eps", "\\epsilon" },
@@ -22,18 +42,14 @@ local abbreviations = {
   { "theta", "\\theta" },
   { "gamma", "\\gamma" },
   { "lam", "\\lambda" },
-  { "nuls", "\\varnothing" },
-
-  -- Other fancy symvols
+  { "nuls", "\\varnothing" }, -- Other fancy symvols
   { "ints", "\\mathbb{Z}" },
   { "nats", "\\mathbb{N}" },
   { "rats", "\\mathbb{Q}" },
   { "rrea", "\\mathbb{R}" },
   { "ppri", "\\mathbb{P}" },
   { "ffie", "\\mathbb{F}" },
-  { "ccom", "\\mathbb{C}" },
-
-  -- Exponents
+  { "ccom", "\\mathbb{C}" }, -- Exponents
   { "ei", "^{-1}" },
   { "e0", "^{0}" },
   { "e1", "^{1}" },
@@ -45,17 +61,14 @@ local abbreviations = {
   { "ett", "^{t}" },
   { "tmat", "^{T}" }, -- Tranpose of a matrix
   { "cmat", "^{*}" }, -- Conjugate of a matrix
-  { "etp", "^{+}" },
-
-  -- Subscripts
+  {"ortco", "^{\\bot}"}, -- Orthogonal complement
+  { "etp", "^{+}" }, -- Subscripts
   { "s0", "_{0}" },
   { "s1", "_{1}" },
   { "s2", "_{2}" },
   { "s3", "_{3}" },
   { "s4", "_{4}" },
-  { "sn", "_{n}" },
-
-  -- Function calls
+  { "sn", "_{n}" }, -- Function calls
   { "fx", "f(x)" },
   { "gx", "g(x)" },
   { "hx", "h(x)" },
@@ -66,9 +79,7 @@ local abbreviations = {
   { "hoa", "h(a)" },
   { "dfx", "f'(x)" },
   { "dgx", "g'(x)" },
-  { "dhx", "h'(x)" },
-
-  -- Basic commands
+  { "dhx", "h'(x)" }, -- Basic commands
   { "mangle", "\\measuredangle" },
   { "aangle", "\\angle" },
   { "creq", "\\\\&=" },
@@ -110,20 +121,24 @@ local abbreviations = {
   { "ndiv", "\\not\\|\\:" },
 
   -- words
-  { "rref", "reduced row echalon form" },
+  { "rref", "reduced row echalon form" }
 }
 
+-- Todo: convert exponents and subscripts
+-- to use this more concise notation.
 local abolishAbbreviations = {
   { "eg{va,ve,p}{,s}", "eigen{value,vector,pair}{}" },
   { "ib{p,s}", "integration by {parts,substitution}" },
   { "mx{,s}", "matri{x,ces}" },
-  { "thrf", "therefore" }
+  { "thrf", "therefore" },
+  { "dete{,s}", "determinant{}" },
+  { "bcla", "by contradiction let's assume" },
+  { "ort{n,g}", "orto{normal,gonal}" },
+  { "l{in,de}", "linearly {independent,dependent}" }
 }
 
 A.manyLocalAbbr(abbreviations)
 AB.abolishMany(abolishAbbreviations)
 
-vim.keymap.set("n", "<leader>lc", "<cmd>VimtexCompile<cr>", {
-  desc = "Compile current buffer using vimtex",
-  buffer = true
-})
+vim.keymap.set("n", "<leader>lc", "<cmd>VimtexCompile<cr>",
+               { desc = "Compile current buffer using vimtex", buffer = true })
diff --git a/dotfiles/neovim/lua/my/helpers/math/mod.lua b/dotfiles/neovim/lua/my/helpers/math/mod.lua
new file mode 100644
index 0000000..50de361
--- /dev/null
+++ b/dotfiles/neovim/lua/my/helpers/math/mod.lua
@@ -0,0 +1,15 @@
+local M = {}
+
+function M.modinverse(b, m)
+  local g, x, _ = M.gcd(b, m)
+  if g ~= 1 then return nil end
+  return x % m
+end
+
+function M.gcd(a, b)
+  if a == 0 then return b, 0, 1 end
+  local g, x1, y1 = M.gcd(b % a, a)
+  return g, y1 - (math.floor(b / a)) * x1, x1
+end
+
+return M
diff --git a/dotfiles/neovim/lua/my/options.lua b/dotfiles/neovim/lua/my/options.lua
index 5002b34..c081084 100644
--- a/dotfiles/neovim/lua/my/options.lua
+++ b/dotfiles/neovim/lua/my/options.lua
@@ -3,46 +3,46 @@ local helpers = require("my.helpers")
 local M = {}
 
 function M.setup()
-  local opt = vim.opt -- to set options
+    local opt = vim.opt -- to set options
 
-  -- Disable filetype.vim
-  vim.g.do_filetype_lua = true
-  vim.g.did_load_filetypes = false
+    -- Disable filetype.vim
+    vim.g.do_filetype_lua = true
+    vim.g.did_load_filetypes = false
 
-  -- Basic options
-  opt.joinspaces = false -- No double spaces with join
-  opt.list = true -- Show some invisible characters
-  opt.cmdheight = 0 -- Hide command line when it's not getting used
+    -- Basic options
+    opt.joinspaces = false -- No double spaces with join
+    opt.list = true -- Show some invisible characters
+    opt.cmdheight = 0 -- Hide command line when it's not getting used
 
-  -- Line numbers
-  opt.number = true -- Show line numbers
-  opt.relativenumber = true -- Relative line numbers
+    -- Line numbers
+    opt.number = true -- Show line numbers
+    opt.relativenumber = true -- Relative line numbers
 
-  -- TODO: only do this for specific filestypes
-  opt.expandtab = true -- Use spaces for the tab char
+    -- TODO: only do this for specific filestypes
+    opt.expandtab = true -- Use spaces for the tab char
 
-  opt.scrolloff = 4 -- Lines of context
-  opt.shiftround = true -- Round indent
-  opt.shiftwidth = 2 -- Size of an indent
-  opt.termguicolors = true -- True color support
+    opt.scrolloff = 4 -- Lines of context
+    opt.shiftround = true -- Round indent
+    opt.shiftwidth = 2 -- Size of an indent
+    opt.termguicolors = true -- True color support
 
-  opt.ignorecase = true -- Ignore case
-  opt.smartcase = true -- Do not ignore case with capitals
+    opt.ignorecase = true -- Ignore case
+    opt.smartcase = true -- Do not ignore case with capitals
 
-  opt.smartindent = true -- Insert indents automatically
+    opt.smartindent = true -- Insert indents automatically
 
-  opt.splitbelow = true -- Put new windows below current
-  opt.splitright = true -- Put new windows right of current
+    opt.splitbelow = true -- Put new windows below current
+    opt.splitright = true -- Put new windows right of current
 
-  opt.wrap = false -- Disable line wrap (by default)
-  opt.wildmode = { 'list', 'longest' } -- Command-line completion mode
-  opt.completeopt = { "menu", "menuone", "noselect" }
+    opt.wrap = false -- Disable line wrap (by default)
+    opt.wildmode = {'list', 'longest'} -- Command-line completion mode
+    opt.completeopt = {"menu", "menuone", "noselect"}
 
-  -- Set leader
-  helpers.global("mapleader", " ")
+    -- Set leader
+    helpers.global("mapleader", " ")
 
-  -- Import other options
-  require("my.options.folding").setup()
+    -- Import other options
+    require("my.options.folding").setup()
 end
 
 return M
diff --git a/dotfiles/neovim/lua/my/paq.lua b/dotfiles/neovim/lua/my/paq.lua
index 9cf8a92..9b6548e 100644
--- a/dotfiles/neovim/lua/my/paq.lua
+++ b/dotfiles/neovim/lua/my/paq.lua
@@ -1,6 +1,5 @@
 local M = {}
 
-
 function M.setup()
   local paq = require("paq")
   local themePackages = require("my.theme").deps
@@ -62,6 +61,8 @@ function M.setup()
     "phaazon/mind.nvim", -- Organize shit as trees
     "bfredl/nvim-luadev", -- lua repl thingy
     "akinsho/toggleterm.nvim", -- cool terminal thingy
+    "folke/noice.nvim", -- better ui for cmd line and other stuff
+    "rcarriga/nvim-notify", -- better notifiaction ui
 
     -- Git stuff
     "ruifm/gitlinker.nvim", -- generate permalinks for code
diff --git a/dotfiles/neovim/lua/my/plugins/easymotion.lua b/dotfiles/neovim/lua/my/plugins/easymotion.lua
index 61be052..a180958 100644
--- a/dotfiles/neovim/lua/my/plugins/easymotion.lua
+++ b/dotfiles/neovim/lua/my/plugins/easymotion.lua
@@ -2,25 +2,19 @@ local M = {}
 
 function M.setup()
   local opts = function(desc)
-    return {
-      desc = desc,
-      silent = true
-    }
+    return { desc = desc, silent = true }
   end
-  vim.keymap.set({ "n", "v", "o" }, "qf", "<Plug>(easymotion-bd-f)", opts("Hop to char"))
-  vim.keymap.set({ "n", "v", "o" }, "qj", "<Plug>(easymotion-overwin-f2)", opts("Hop to char pair"))
-  vim.keymap.set({ "n", "v", "o" }, "qw", ":silent <Plug>(easymotion-bd-w)", opts("Hop to word"))
-  vim.keymap.set({ "n", "v", "o" }, "qL", "silent <Plug>(easymotion-bd-L)", opts("Hop to line (?)"))
+
+  local modes = { "n", "v", "o" }
+
+  vim.keymap.set(modes, "qf", "<Plug>(easymotion-bd-f)", opts("Hop to char"))
+  vim.keymap.set(modes, "qj", "<Plug>(easymotion-overwin-f2)", opts("Hop to char pair"))
+  vim.keymap.set(modes, "qw", "<Plug>(easymotion-bd-w)", opts("Hop to word"))
+  vim.keymap.set(modes, "qL", "<Plug>(easymotion-bd-L)", opts("Hop to line (?)"))
 
   local status, wk = pcall(require, "which-key")
 
-  if status then
-    wk.register({
-      q = {
-        name = "Easymotion"
-      }
-    })
-  end
+  if status then wk.register({ q = { name = "Easymotion" } }, { mode = "o" }) end
 end
 
 return M
diff --git a/dotfiles/neovim/lua/my/plugins/firevim.lua b/dotfiles/neovim/lua/my/plugins/firevim.lua
index db7620d..9748f03 100644
--- a/dotfiles/neovim/lua/my/plugins/firevim.lua
+++ b/dotfiles/neovim/lua/my/plugins/firevim.lua
@@ -8,8 +8,6 @@ function M.setup()
       }
     }
   }
-
-  print("Initialized firenvim")
 end
 
 return M
diff --git a/dotfiles/neovim/lua/my/plugins/idris.lua b/dotfiles/neovim/lua/my/plugins/idris.lua
index 282597e..2102003 100644
--- a/dotfiles/neovim/lua/my/plugins/idris.lua
+++ b/dotfiles/neovim/lua/my/plugins/idris.lua
@@ -23,8 +23,8 @@ function M.setup()
 
         for key, value in pairs(idrisChords) do
           arpeggio.chord("n", "i" .. key,
-            ":lua require('idris2.code_action')." ..
-            value .. "()<CR>", { settings = "b" })
+                         ":lua require('idris2.code_action')." .. value .. "()<CR>",
+                         { settings = "b" })
         end
       end
     },
diff --git a/dotfiles/neovim/lua/my/plugins/init.lua b/dotfiles/neovim/lua/my/plugins/init.lua
index 33b9232..ad90186 100644
--- a/dotfiles/neovim/lua/my/plugins/init.lua
+++ b/dotfiles/neovim/lua/my/plugins/init.lua
@@ -21,6 +21,7 @@ function M.setup()
       require("toggleterm").setup()
 
       require("my.plugins.neogit").setup()
+      require("my.plugins.noice").setup()
     end)
 
     require("my.plugins.dashboard").setup()
@@ -31,6 +32,7 @@ function M.setup()
     require("my.plugins.null-ls").setup()
     require("my.plugins.vimtex").setup()
     require("my.plugins.lean").setup()
+    require("my.plugins.notify").setup()
   end)
 
   if env.firevim.active() then
@@ -40,7 +42,6 @@ function M.setup()
     require("my.plugins.paperplanes").setup()
   end
 
-
   require("my.plugins.hydra").setup()
   require("my.plugins.clipboard-image").setup()
   require("my.plugins.mind").setup()
diff --git a/dotfiles/neovim/lua/my/plugins/lspconfig.lua b/dotfiles/neovim/lua/my/plugins/lspconfig.lua
index cf90e53..e0a7a28 100644
--- a/dotfiles/neovim/lua/my/plugins/lspconfig.lua
+++ b/dotfiles/neovim/lua/my/plugins/lspconfig.lua
@@ -4,10 +4,7 @@ function M.on_attach(client, bufnr)
   -- Enable completion triggered by <c-x><c-o>
   vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
 
-
   if client.server_capabilities.documentFormattingProvider then
-    print("Initializing formatter...")
-
     vim.api.nvim_create_autocmd("BufWritePre", {
       group = vim.api.nvim_create_augroup("LspFormatting", {}),
       buffer = bufnr,
@@ -17,8 +14,6 @@ function M.on_attach(client, bufnr)
     })
   end
 
-  print("Setting up keybinds...")
-
   local opts = function(desc)
     return { noremap = true, silent = true, desc = desc }
   end
@@ -38,20 +33,17 @@ function M.on_attach(client, bufnr)
   vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts("Rename"))
   vim.keymap.set("n", "<leader>c", vim.lsp.buf.code_action, opts("Code actions"))
   vim.keymap.set("n", "<leader>f", vim.lsp.buf.format, opts("Format"))
-
-  print("Initialized language server!")
-end
-
-local function on_attach_typescript(client, bufnr)
-  -- We handle formatting using null-ls and prettierd
-  client.server_capabilities.documentFormattingProvider = false
-
-  M.on_attach(client, bufnr)
 end
 
 -- General server config
 local servers = {
-  tsserver = { on_attach = on_attach_typescript },
+  tsserver = {
+    on_attach = function(client, bufnr)
+      -- We handle formatting using null-ls and prettierd
+      client.server_capabilities.documentFormattingProvider = false
+      M.on_attach(client, bufnr)
+    end
+  },
   dhall_lsp_server = {},
   sumneko_lua = {
     settings = {
@@ -79,9 +71,7 @@ local servers = {
   purescriptls = {
     settings = {
       purescript = {
-        censorWarnings = {
-          "UnusedName", "ShadowedName", "UserDefinedWarning"
-        },
+        censorWarnings = { "UnusedName", "ShadowedName", "UserDefinedWarning" },
         formatter = "purs-tidy"
       }
     }
@@ -112,9 +102,7 @@ local servers = {
 }
 
 function M.setup()
-  local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp
-    .protocol
-    .make_client_capabilities())
+  local capabilities = require('cmp_nvim_lsp').default_capabilities()
 
   -- Setup basic language servers
   for lsp, details in pairs(servers) do
diff --git a/dotfiles/neovim/lua/my/plugins/noice.lua b/dotfiles/neovim/lua/my/plugins/noice.lua
new file mode 100644
index 0000000..8adc5b9
--- /dev/null
+++ b/dotfiles/neovim/lua/my/plugins/noice.lua
@@ -0,0 +1,34 @@
+local H = require("my.helpers")
+local M = {}
+
+local function skip_containing(string, opts)
+  local defaultOptions = { event = "msg_show", kind = "", find = string }
+  local filter = H.mergeTables(defaultOptions, opts or {})
+  return { filter = filter, opts = { skip = true } }
+end
+
+function M.setup()
+  -- s - search hit bottom messages
+  -- c - no pattern found and whatnot
+  vim.opt.shortmess:append("scC")
+  -- vim.opt.shortmess = "sc"
+
+  require("noice").setup({
+    cmdline = {
+      view = "cmdline",
+      format = {
+        search_down = { kind = "search", pattern = "^/", icon = "🔎", lang = "regex" },
+        search_up = { kind = "search", pattern = "^%?", icon = "🔎", lang = "regex" }
+      }
+    },
+    routes = {
+      -- Filter out "Written ..." messages
+      skip_containing("written"),
+      skip_containing("search hit", { event = "wmsg" }),
+      skip_containing("pattern not found", { event = "msg_show" })
+    },
+    lsp = { progres = { enabled = false } }
+  })
+end
+
+return M
diff --git a/dotfiles/neovim/lua/my/plugins/notify.lua b/dotfiles/neovim/lua/my/plugins/notify.lua
new file mode 100644
index 0000000..292485c
--- /dev/null
+++ b/dotfiles/neovim/lua/my/plugins/notify.lua
@@ -0,0 +1,7 @@
+local M = {}
+
+function M.setup()
+  vim.notify = require("notify")
+end
+
+return M
diff --git a/dotfiles/neovim/lua/my/plugins/null-ls.lua b/dotfiles/neovim/lua/my/plugins/null-ls.lua
index 76a2611..b63f7c4 100644
--- a/dotfiles/neovim/lua/my/plugins/null-ls.lua
+++ b/dotfiles/neovim/lua/my/plugins/null-ls.lua
@@ -9,12 +9,19 @@ function M.setup()
     -- null_ls.builtins.formatting.prettierd.with({extra_filetypes = {}}), -- format ts files
 
     null_ls.builtins.formatting.prettier.with({ extra_filetypes = {} }), -- format ts files
-    -- null_ls.builtins.formatting.lua_format -- format lua code
+    null_ls.builtins.formatting.lua_format.with({
+      -- extra_args = function(params)
+      --   return params.options and params.options.tabSize and
+      --              { "--indent-width=" .. params.options.tabSize }
+      -- end
+    }) -- format lua code
   }
 
   null_ls.setup({
-    sources = sources, on_attach = lspconfig.on_attach
-    , debug = true })
+    sources = sources,
+    on_attach = lspconfig.on_attach,
+    debug = true
+  })
 end
 
 return M
diff --git a/dotfiles/neovim/lua/my/plugins/whichkey.lua b/dotfiles/neovim/lua/my/plugins/whichkey.lua
index 6cc7ffc..e9782f3 100644
--- a/dotfiles/neovim/lua/my/plugins/whichkey.lua
+++ b/dotfiles/neovim/lua/my/plugins/whichkey.lua
@@ -4,14 +4,12 @@ local M = {}
 
 function M.setup()
   wk.setup({
-    triggers = { "<leader>", "d", "y", "q", "z", "g", "c" }
+    triggers = { "<leader>", "d", "y", "q", "z", "g", "c" },
+    show_help = false,
+    show_keys = false
   })
 
-  wk.register({
-    ["<leader>l"] = {
-      name = "Local commands"
-    }
-  })
+  wk.register({ ["<leader>l"] = { name = "Local commands" } })
 end
 
 return M
diff --git a/flake.lock b/flake.lock
index ae6c9e5..0807046 100644
--- a/flake.lock
+++ b/flake.lock
@@ -529,11 +529,11 @@
       },
       "locked": {
         "dir": "contrib",
-        "lastModified": 1665548414,
-        "narHash": "sha256-MZTZLz4DTGnehY6JCbJzx9EtvNuOPg/dOMvMKawaFBY=",
+        "lastModified": 1667803793,
+        "narHash": "sha256-jKb4fbi8YcHoKpQB0HAO99CtcP4IFSRV07OT6kNFDGs=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "f175ca9f7cc29054b1c6fe1fd1076edd78af5684",
+        "rev": "e9c1cb71f8a4d6d7818dcb5f71ac78bee431309a",
         "type": "github"
       },
       "original": {
@@ -552,11 +552,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1665562768,
-        "narHash": "sha256-/2wag5vXeieg7YRR431tMaZwB9oAnrQ2Hy7zriRWjd4=",
+        "lastModified": 1667809192,
+        "narHash": "sha256-voNs0rYqJNqwtmm35rq35sQPFtXLgb1phGmBXG3x50o=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "e3841a95c1b6bb49ef634ed496c9489c5f48d8cf",
+        "rev": "488d9478d2b9a2481f6b0d04024a95c2135cef8f",
         "type": "github"
       },
       "original": {
diff --git a/img/22-11-06-21-35-08.png b/img/22-11-06-21-35-08.png
new file mode 100644
index 0000000000000000000000000000000000000000..d16f94c6490bdbc38ff85c07f6f83f289c7369f6
GIT binary patch
literal 15356
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

literal 0
HcmV?d00001

diff --git a/modules/themes/catppuccin/nvim.lua b/modules/themes/catppuccin/nvim.lua
index 8fa1229..e40ff98 100644
--- a/modules/themes/catppuccin/nvim.lua
+++ b/modules/themes/catppuccin/nvim.lua
@@ -6,14 +6,11 @@ function M.setup()
   local catppuccin = require("catppuccin")
   vim.g.catppuccin_flavour = os.getenv("CATPPUCCIN_FLAVOUR")
 
-  catppuccin.setup({
-    transparent_background = false,
-    integrations = { nvimtree = true }
-  })
-
-  print("loaded this theme!")
+  catppuccin.setup({ transparent_background = false, integrations = { nvimtree = true } })
 
   vim.cmd [[colorscheme catppuccin]]
+  vim.cmd [[highlight NotifyINFOIcon guifg=#d6b20f]]
+  vim.cmd [[highlight NotifyINFOTitle guifg=#d6b20f]]
 end
 
 return M
diff --git a/startup b/startup
deleted file mode 100644
index 2f821f8..0000000
--- a/startup
+++ /dev/null
@@ -1,534 +0,0 @@
-
-
-times in msec
- clock   self+sourced   self:  sourced script
- clock   elapsed:              other lines
-
-000.010  000.010: --- NVIM STARTING ---
-000.145  000.135: event init
-000.255  000.110: early init
-000.321  000.066: locale set
-000.357  000.036: init first window
-000.744  000.387: inits 1
-000.774  000.030: window checked
-000.778  000.004: parsing arguments
-001.306  000.092  000.092: require('vim.shared')
-001.466  000.078  000.078: require('vim._meta')
-001.468  000.158  000.080: require('vim._editor')
-001.469  000.281  000.032: require('vim._init_packages')
-001.471  000.412: init lua interpreter
-001.513  000.042: expanding arguments
-001.603  000.090: inits 2
-002.005  000.402: init highlight
-002.006  000.001: waiting for UI
-003.255  001.249: done waiting for UI
-003.272  000.017: init screen for UI
-003.484  000.212: init default mappings
-003.505  000.020: init default autocommands
-007.104  000.073  000.073: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/ftplugin.vim
-007.528  000.049  000.049: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/indent.vim
-015.023  003.831  003.831: require('my.init')
-024.138  009.107  009.107: require('impatient')
-024.355  000.209  000.209: require('my.paq')
-025.111  000.751  000.751: require('paq')
-025.191  000.075  000.075: require('my.theme')
-025.791  000.231  000.231: require('catppuccin')
-025.963  000.163  000.163: require('catppuccin.config')
-027.476  000.067  000.067: require('catppuccin.lib.highlighter')
-027.530  000.049  000.049: require('catppuccin.lib.mapper')
-027.582  000.047  000.047: require('catppuccin.palettes')
-027.644  000.055  000.055: require('catppuccin.palettes.latte')
-028.117  000.067  000.067: require('catppuccin.lib.hsluv')
-028.123  000.136  000.068: require('catppuccin.utils.colors')
-028.166  000.040  000.040: require('catppuccin.lib.ui')
-028.247  000.052  000.052: require('catppuccin.groups.properties')
-028.345  000.090  000.090: require('catppuccin.groups.syntax')
-028.562  000.140  000.140: require('catppuccin.groups.editor')
-028.709  000.107  000.107: require('catppuccin.groups.integrations.markdown')
-028.944  000.128  000.128: require('catppuccin.groups.integrations.gitsigns')
-029.110  000.101  000.101: require('catppuccin.groups.integrations.telescope')
-029.185  000.061  000.061: require('catppuccin.groups.integrations.cmp')
-029.312  000.075  000.075: require('catppuccin.groups.integrations.notify')
-029.496  000.115  000.115: require('catppuccin.groups.integrations.treesitter')
-029.895  000.271  000.271: require('vim.treesitter.language')
-029.907  000.345  000.074: require('vim.treesitter.query')
-029.985  000.075  000.075: require('vim.treesitter.languagetree')
-030.040  000.540  000.119: require('vim.treesitter')
-030.114  000.071  000.071: require('vim.treesitter.highlighter')
-030.205  000.042  000.042: require('catppuccin.groups.integrations.dashboard')
-030.271  000.041  000.041: require('catppuccin.groups.integrations.nvimtree')
-030.348  000.041  000.041: require('catppuccin.groups.integrations.indent_blankline')
-030.431  000.047  000.047: require('catppuccin.groups.integrations.native_lsp')
-030.578  000.044  000.044: require('catppuccin.groups.terminal')
-032.235  004.856  002.766: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/catppuccin/colors/catppuccin.lua
-032.362  000.052  000.052: require('my.helpers')
-032.366  000.117  000.065: require('my.options')
-032.477  000.050  000.050: require('my.options.folding')
-032.693  000.083  000.083: require('my.plugins.arpeggio')
-032.700  000.211  000.129: require('my.keymaps')
-032.709  000.006  000.006: require('vim.keymap')
-033.361  000.226  000.226: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vim-arpeggio/autoload/arpeggio.vim
-038.498  000.112  000.112: require('my.snippets')
-038.994  000.034  000.034: require('luasnip.session')
-039.060  000.063  000.063: require('luasnip.util.util')
-039.097  000.035  000.035: require('luasnip.util.types')
-039.183  000.041  000.041: require('luasnip.util.ext_opts')
-039.212  000.113  000.072: require('luasnip.nodes.util')
-039.252  000.038  000.038: require('luasnip.util.events')
-039.261  000.364  000.080: require('luasnip.nodes.node')
-039.396  000.035  000.035: require('luasnip.util.extend_decorator')
-039.403  000.141  000.106: require('luasnip.nodes.insertNode')
-039.470  000.065  000.065: require('luasnip.nodes.textNode')
-039.513  000.040  000.040: require('luasnip.util.mark')
-039.972  000.423  000.423: require('luasnip.util._builtin_vars')
-040.030  000.052  000.052: require('vim.inspect')
-040.072  000.557  000.082: require('luasnip.util.environ')
-040.117  000.043  000.043: require('luasnip.util.pattern_tokenizer')
-040.152  000.033  000.033: require('luasnip.util.dict')
-040.197  000.043  000.043: require('luasnip.session.snippet_collection')
-040.272  001.534  000.248: require('luasnip.nodes.snippet')
-040.366  000.035  000.035: require('luasnip.loaders._caches')
-040.427  000.059  000.059: require('luasnip.util.path')
-040.448  000.173  000.079: require('luasnip.loaders')
-040.535  000.070  000.070: require('luasnip.nodes.functionNode')
-040.604  000.066  000.066: require('luasnip.nodes.choiceNode')
-040.711  000.105  000.105: require('luasnip.nodes.dynamicNode')
-040.826  000.111  000.111: require('luasnip.nodes.restoreNode')
-041.045  000.065  000.065: require('luasnip.util.parser.neovim_ast')
-042.390  000.085  000.085: require('luasnip.util.directed_graph')
-042.401  001.511  001.361: require('luasnip.util.parser.ast_utils')
-042.570  000.085  000.085: require('luasnip.util.functions')
-042.577  000.173  000.089: require('luasnip.util.parser.ast_parser')
-042.719  000.140  000.140: require('luasnip.util.parser.neovim_parser')
-042.777  000.054  000.054: require('luasnip.util.str')
-042.808  001.978  000.098: require('luasnip.util.parser')
-043.302  000.364  000.364: require('nvim-treesitter.parsers')
-043.436  000.067  000.067: require('nvim-treesitter.utils')
-043.443  000.137  000.070: require('nvim-treesitter.ts_utils')
-043.446  000.568  000.068: require('luasnip.extras.filetype_functions')
-043.523  000.058  000.058: require('luasnip.extras')
-043.576  000.050  000.050: require('luasnip.extras.fmt')
-043.622  000.044  000.044: require('luasnip.extras.expand_conditions')
-043.705  000.076  000.076: require('luasnip.nodes.absolute_indexer')
-044.218  001.407  000.611: require('luasnip.config')
-044.223  005.630  000.185: require('luasnip')
-044.307  000.081  000.081: require('luasnip.loaders.util')
-044.393  000.083  000.083: require('luasnip.nodes.snippetProxy')
-044.401  005.898  000.103: require('luasnip.loaders.from_vscode')
-045.387  000.079  000.079: require('my.helpers.env')
-045.398  000.163  000.084: require('my.plugins')
-045.472  000.071  000.071: require('nvim_comment')
-045.880  000.257  000.257: require('fidget.log')
-045.896  000.365  000.108: require('fidget')
-046.093  000.112  000.112: require('fidget.spinners')
-046.918  000.175  000.175: require('vim.lsp.log')
-047.591  000.008  000.008: require('vim.F')
-047.596  000.675  000.667: require('vim.lsp.protocol')
-048.618  000.751  000.751: require('vim.lsp._snippet')
-048.780  000.159  000.159: require('vim.highlight')
-048.880  001.281  000.371: require('vim.lsp.util')
-048.929  002.646  000.515: require('vim.lsp.handlers')
-049.287  000.356  000.356: require('vim.lsp.rpc')
-049.513  000.223  000.223: require('vim.lsp.sync')
-049.703  000.186  000.186: require('vim.lsp.buf')
-049.765  000.058  000.058: require('vim.lsp.diagnostic')
-049.813  000.045  000.045: require('vim.lsp.codelens')
-049.887  003.789  000.274: require('vim.lsp')
-050.013  000.030  000.030: require('vim.ui')
-050.018  000.065  000.034: require('dressing.patch')
-050.020  000.104  000.039: require('dressing')
-050.269  000.248  000.248: require('dressing.config')
-050.430  000.038  000.038: require('lib.log')
-050.488  000.055  000.055: require('deps.msgpack')
-050.769  000.279  000.279: require('deps.serpent')
-050.807  000.034  000.034: require('presence.file_explorers')
-050.910  000.101  000.101: require('presence.file_assets')
-050.941  000.028  000.028: require('presence.plugin_managers')
-051.032  000.029  000.029: require('deps.struct')
-051.036  000.071  000.042: require('presence.discord')
-051.051  000.747  000.140: require('presence')
-051.889  000.021  000.021: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/presence.nvim/autoload/presence.vim
-053.534  000.116  000.116: require('my.plugins.nvim-tree')
-054.661  000.042  000.042: require('nvim-tree.iterators.node-iterator')
-054.735  000.752  000.711: require('nvim-tree.utils')
-054.748  000.809  000.057: require('nvim-tree.events')
-054.917  000.058  000.058: require('nvim-tree.log')
-055.058  000.139  000.139: require('nvim-tree.git.utils')
-055.116  000.055  000.055: require('nvim-tree.git.runner')
-055.163  000.045  000.045: require('nvim-tree.watcher')
-055.172  000.361  000.065: require('nvim-tree.git')
-055.214  000.040  000.040: require('nvim-tree.explorer.watch')
-055.256  000.041  000.041: require('nvim-tree.explorer.common')
-055.340  000.043  000.043: require('nvim-tree.explorer.node-builders')
-055.387  000.044  000.044: require('nvim-tree.explorer.sorters')
-055.429  000.040  000.040: require('nvim-tree.explorer.filters')
-055.571  000.093  000.093: require('nvim-tree.view')
-055.576  000.145  000.052: require('nvim-tree.live-filter')
-055.578  000.320  000.048: require('nvim-tree.explorer.explore')
-055.625  000.045  000.045: require('nvim-tree.explorer.reload')
-055.629  000.878  000.071: require('nvim-tree.explorer')
-055.631  001.730  000.043: require('nvim-tree.core')
-055.712  000.079  000.079: require('nvim-tree.diagnostics')
-055.787  000.072  000.072: require('nvim-tree.renderer.components.padding')
-055.833  000.044  000.044: require('nvim-tree.renderer.components.icons')
-055.880  000.045  000.045: require('nvim-tree.renderer.components.full-name')
-055.922  000.040  000.040: require('nvim-tree.renderer.help')
-055.982  000.058  000.058: require('nvim-tree.renderer.components.git')
-056.044  000.060  000.060: require('nvim-tree.renderer.builder')
-056.084  000.039  000.039: require('nvim-tree.marks')
-056.093  002.309  000.142: require('nvim-tree.renderer')
-056.133  000.036  000.036: require('nvim-tree.actions.tree-modifiers.collapse-all')
-056.171  000.036  000.036: require('nvim-tree.actions.root.dir-up')
-056.215  000.042  000.042: require('nvim-tree.actions.root.change-dir')
-056.256  000.037  000.037: require('nvim-tree.actions.reloaders.reloaders')
-056.295  000.038  000.038: require('nvim-tree.actions.finders.find-file')
-056.298  002.592  000.094: require('nvim-tree.lib')
-056.349  000.049  000.049: require('nvim-tree.colors')
-056.419  000.068  000.068: require('nvim-tree.legacy')
-056.478  000.057  000.057: require('nvim-tree.actions.fs.copy-paste')
-056.566  000.041  000.041: require('nvim-tree.actions.tree-modifiers.expand-all')
-056.602  000.035  000.035: require('nvim-tree.actions.tree-modifiers.toggles')
-056.664  000.056  000.056: require('nvim-tree.actions.fs.create-file')
-056.738  000.066  000.066: require('nvim-tree.actions.fs.rename-file')
-056.811  000.070  000.070: require('nvim-tree.actions.fs.trash')
-056.854  000.041  000.041: require('nvim-tree.actions.fs.remove-file')
-056.922  000.064  000.064: require('nvim-tree.actions.moves.parent')
-056.980  000.056  000.056: require('nvim-tree.actions.moves.sibling')
-057.058  000.075  000.075: require('nvim-tree.actions.moves.item')
-057.120  000.055  000.055: require('nvim-tree.actions.finders.search-node')
-057.194  000.071  000.071: require('nvim-tree.actions.node.run-command')
-057.244  000.047  000.047: require('nvim-tree.actions.node.file-popup')
-057.334  000.074  000.074: require('nvim-tree.actions.node.system-open')
-057.417  000.076  000.076: require('nvim-tree.marks.bulk-move')
-057.421  000.940  000.114: require('nvim-tree.actions.dispatch')
-057.450  003.910  000.205: require('nvim-tree')
-059.611  000.105  000.105: require('nvim-tree.actions')
-059.700  000.082  000.082: require('nvim-tree.actions.node.open-file')
-061.226  000.045  000.045: require('nvim-tree.marks.navigation')
-061.231  000.128  000.083: require('nvim-tree.api')
-061.249  000.232  000.104: require('nvim-tree.keymap')
-062.131  000.468  000.468: require('nvim-web-devicons')
-065.384  000.098  000.098: require('my.plugins.lualine')
-065.529  000.055  000.055: require('lualine_require')
-066.006  000.617  000.563: require('lualine')
-073.116  000.082  000.082: require('lualine.utils.mode')
-073.340  000.057  000.057: require('lualine.extensions.nerdtree')
-073.824  000.092  000.092: require('my.plugins.vimux')
-076.430  000.078  000.078: require('my.plugins.dashboard')
-076.560  000.124  000.124: require('dashboard')
-076.632  000.068  000.068: require('my.plugins.treesitter')
-076.918  000.063  000.063: require('nvim-treesitter.tsrange')
-076.969  000.047  000.047: require('nvim-treesitter.caching')
-077.002  000.226  000.115: require('nvim-treesitter.query')
-077.027  000.391  000.165: require('nvim-treesitter.configs')
-077.241  000.062  000.062: require('nvim-treesitter.info')
-077.352  000.107  000.107: require('nvim-treesitter.shell_command_selectors')
-077.388  000.332  000.162: require('nvim-treesitter.install')
-081.984  000.088  000.088: require('my.plugins.cmp')
-082.202  000.045  000.045: require('cmp.utils.debug')
-082.374  000.124  000.124: require('cmp.utils.char')
-082.383  000.179  000.054: require('cmp.utils.str')
-082.431  000.046  000.046: require('cmp.utils.pattern')
-082.618  000.055  000.055: require('cmp.utils.misc')
-082.659  000.038  000.038: require('cmp.utils.buffer')
-082.765  000.104  000.104: require('cmp.utils.api')
-082.771  000.287  000.091: require('cmp.utils.keymap')
-082.776  000.342  000.055: require('cmp.utils.feedkeys')
-082.855  000.077  000.077: require('cmp.utils.async')
-082.982  000.042  000.042: require('cmp.types.cmp')
-083.109  000.124  000.124: require('cmp.types.lsp')
-083.159  000.046  000.046: require('cmp.types.vim')
-083.162  000.258  000.045: require('cmp.types')
-083.205  000.040  000.040: require('cmp.utils.cache')
-083.211  000.354  000.056: require('cmp.context')
-083.385  000.054  000.054: require('cmp.config.mapping')
-083.524  000.082  000.082: require('cmp.config.compare')
-083.527  000.138  000.056: require('cmp.config.default')
-083.546  000.272  000.080: require('cmp.config')
-083.695  000.073  000.073: require('cmp.matcher')
-083.710  000.161  000.089: require('cmp.entry')
-083.718  000.506  000.072: require('cmp.source')
-083.839  000.033  000.033: require('cmp.utils.event')
-083.940  000.055  000.055: require('cmp.utils.window')
-083.943  000.102  000.047: require('cmp.view.docs_view')
-084.050  000.044  000.044: require('cmp.utils.autocmd')
-084.061  000.116  000.072: require('cmp.view.custom_entries_view')
-084.126  000.063  000.063: require('cmp.view.wildmenu_entries_view')
-084.176  000.048  000.048: require('cmp.view.native_entries_view')
-084.219  000.041  000.041: require('cmp.view.ghost_text_view')
-084.229  000.509  000.105: require('cmp.view')
-084.316  002.244  000.188: require('cmp.core')
-084.516  000.040  000.040: require('cmp.config.sources')
-084.575  000.055  000.055: require('cmp.config.window')
-084.657  002.668  000.328: require('cmp')
-084.819  000.160  000.160: require('lspkind')
-086.239  000.120  000.120: require('my.plugins.lspconfig')
-086.335  000.046  000.046: require('cmp_nvim_lsp.source')
-086.339  000.095  000.049: require('cmp_nvim_lsp')
-086.776  000.291  000.291: require('lspconfig.util')
-086.797  000.387  000.096: require('lspconfig.configs')
-086.800  000.426  000.039: require('lspconfig')
-086.862  000.059  000.059: require('lspconfig.server_configurations.kotlin_language_server')
-087.975  000.091  000.091: require('lspconfig.server_configurations.hls')
-088.650  000.061  000.061: require('lspconfig.server_configurations.rnix')
-088.946  000.069  000.069: require('lspconfig.server_configurations.cssls')
-089.216  000.071  000.071: require('lspconfig.server_configurations.dhall_lsp_server')
-089.476  000.064  000.064: require('lspconfig.server_configurations.tsserver')
-089.807  000.097  000.097: require('lspconfig.server_configurations.sumneko_lua')
-090.100  000.071  000.071: require('lspconfig.server_configurations.purescriptls')
-090.317  000.066  000.066: require('my.plugins.null-ls')
-090.713  000.166  000.166: require('null-ls.methods')
-090.732  000.253  000.087: require('null-ls.utils')
-091.021  000.281  000.281: require('vim.diagnostic')
-091.046  000.645  000.111: require('null-ls.config')
-091.142  000.045  000.045: require('null-ls.helpers.cache')
-091.216  000.071  000.071: require('null-ls.helpers.diagnostics')
-091.261  000.042  000.042: require('null-ls.helpers.formatter_factory')
-091.451  000.068  000.068: require('null-ls.logger')
-091.513  000.059  000.059: require('null-ls.state')
-091.519  000.255  000.128: require('null-ls.helpers.generator_factory')
-091.641  000.069  000.069: require('null-ls.helpers.command_resolver')
-091.644  000.124  000.055: require('null-ls.helpers.make_builtin')
-091.741  000.094  000.094: require('null-ls.helpers.range_formatting_args_factory')
-091.744  000.696  000.064: require('null-ls.helpers')
-091.869  000.061  000.061: require('null-ls.diagnostics')
-091.879  000.133  000.072: require('null-ls.sources')
-091.951  000.068  000.068: require('null-ls.builtins')
-091.955  001.609  000.067: require('null-ls')
-092.036  000.078  000.078: require('null-ls.builtins.formatting.prettierd')
-092.333  000.078  000.078: require('null-ls.client')
-092.428  000.061  000.061: require('my.plugins.vimtex')
-092.507  000.065  000.065: require('my.plugins.lean')
-093.171  000.210  000.210: require('plenary.functional')
-093.184  000.478  000.268: require('plenary.job')
-093.482  000.051  000.051: require('plenary.tbl')
-093.488  000.103  000.052: require('plenary.vararg.rotate')
-093.490  000.149  000.046: require('plenary.vararg')
-093.555  000.063  000.063: require('plenary.errors')
-093.560  000.308  000.095: require('plenary.async.async')
-093.957  000.085  000.085: require('plenary.async.structs')
-093.966  000.216  000.131: require('plenary.async.control')
-093.976  000.374  000.158: require('plenary.async.util')
-093.981  000.418  000.045: require('plenary.async.tests')
-093.983  000.797  000.071: require('plenary.async')
-094.002  001.430  000.155: require('lean._util')
-094.010  001.500  000.070: require('lean')
-094.115  000.102  000.102: require('lean.abbreviations')
-102.166  000.185  000.185: require('lean.widgets')
-102.304  000.133  000.133: require('lean.infoview.components')
-102.491  000.082  000.082: require('lean.lsp')
-102.543  000.050  000.050: require('lean.progress')
-102.552  000.244  000.113: require('lean.lean3')
-102.625  000.071  000.071: require('lean.rpc')
-102.702  000.952  000.319: require('lean.infoview')
-102.865  000.106  000.106: require('lean.commands')
-102.968  000.068  000.068: require('lspconfig.server_configurations.lean3ls')
-103.231  000.073  000.073: require('lspconfig.server_configurations.leanls')
-103.439  000.046  000.046: require('lean.treesitter')
-103.515  000.068  000.068: require('lean.progress_bars')
-103.631  000.083  000.083: require('lean.ft')
-103.744  000.104  000.104: require('lean.stderr')
-104.186  000.125  000.125: require('plenary.bit')
-104.276  000.032  000.032: require('ffi')
-104.309  000.350  000.193: require('plenary.path')
-104.319  000.418  000.068: require('gitlinker.git')
-104.394  000.072  000.072: require('gitlinker.buffer')
-104.451  000.056  000.056: require('gitlinker.mappings')
-104.547  000.048  000.048: require('gitlinker.actions')
-104.550  000.096  000.048: require('gitlinker.opts')
-104.615  000.063  000.063: require('gitlinker.hosts')
-104.620  000.774  000.068: require('gitlinker')
-104.817  000.157  000.157: require('my.plugins.paperplanes')
-104.939  000.056  000.056: require('paperplanes.get_text')
-104.946  000.126  000.070: require('paperplanes')
-105.023  000.070  000.070: require('my.plugins.easymotion')
-105.227  000.072  000.072: require('my.plugins.autopairs')
-105.398  000.077  000.077: require('nvim-autopairs._log')
-105.492  000.091  000.091: require('nvim-autopairs.utils')
-105.745  000.129  000.129: require('nvim-autopairs.conds')
-105.758  000.202  000.073: require('nvim-autopairs.rule')
-105.761  000.267  000.065: require('nvim-autopairs.rules.basic')
-105.793  000.563  000.128: require('nvim-autopairs')
-106.377  000.117  000.117: require('my.plugins.telescope')
-107.588  000.070  000.070: require('telescope._extensions')
-107.595  000.174  000.104: require('telescope')
-108.466  000.406  000.406: require('plenary.strings')
-108.624  000.154  000.154: require('telescope.deprecated')
-109.334  000.279  000.279: require('plenary.log')
-109.389  000.521  000.242: require('telescope.log')
-109.839  000.290  000.290: require('telescope.state')
-109.876  000.485  000.195: require('telescope.utils')
-109.904  001.277  000.272: require('telescope.sorters')
-114.327  006.728  004.891: require('telescope.config')
-115.805  000.077  000.077: require('telescope.actions.state')
-115.813  000.167  000.091: require('telescope._extensions.file_browser.utils')
-116.025  000.045  000.045: require('plenary.window.border')
-116.062  000.034  000.034: require('plenary.window')
-116.096  000.032  000.032: require('plenary.popup.utils')
-116.100  000.170  000.058: require('plenary.popup')
-116.141  000.039  000.039: require('telescope.pickers.scroller')
-116.183  000.039  000.039: require('telescope.actions.utils')
-116.270  000.041  000.041: require('telescope.actions.mt')
-116.289  000.104  000.063: require('telescope.actions.set')
-116.374  000.044  000.044: require('telescope.config.resolve')
-116.377  000.086  000.042: require('telescope.pickers.entry_display')
-116.412  000.033  000.033: require('telescope.from_entry')
-116.604  000.788  000.317: require('telescope.actions')
-116.647  001.088  000.133: require('telescope._extensions.file_browser.actions')
-116.831  000.095  000.095: require('telescope._extensions.file_browser.make_entry')
-116.951  000.034  000.034: require('plenary.class')
-116.966  000.095  000.060: require('telescope._')
-117.101  000.133  000.133: require('telescope.make_entry')
-117.104  000.270  000.042: require('telescope.finders.async_oneshot_finder')
-117.204  000.052  000.052: require('telescope.finders.async_static_finder')
-117.242  000.036  000.036: require('telescope.finders.async_job_finder')
-117.247  000.141  000.054: require('telescope.finders')
-117.347  000.098  000.098: require('plenary.scandir')
-117.413  000.764  000.159: require('telescope._extensions.file_browser.finders')
-117.615  000.043  000.043: require('telescope.debounce')
-117.805  000.188  000.188: require('telescope.mappings')
-117.854  000.045  000.045: require('telescope.pickers.highlights')
-117.892  000.036  000.036: require('telescope.pickers.window')
-117.968  000.037  000.037: require('telescope.algos.linked_list')
-117.972  000.078  000.041: require('telescope.entry_manager')
-118.019  000.046  000.046: require('telescope.pickers.multi')
-118.032  000.560  000.124: require('telescope.pickers')
-118.035  000.620  000.061: require('telescope._extensions.file_browser.picker')
-118.083  000.046  000.046: require('telescope._extensions.file_browser.config')
-118.086  002.584  000.065: require('telescope._extensions.file_browser')
-118.194  000.044  000.044: require('my.plugins.venn')
-118.280  000.030  000.030: require('hydra.lib.class')
-118.376  000.031  000.031: require('hydra.hint.hint')
-118.410  000.032  000.032: require('hydra.lib.util')
-118.445  000.032  000.032: require('hydra.hint.vim-options')
-118.449  000.139  000.044: require('hydra.hint.cmdline')
-118.526  000.034  000.034: require('hydra.lib.api-wrappers')
-118.539  000.088  000.054: require('hydra.hint.window')
-118.572  000.032  000.032: require('hydra.hint.statusline')
-118.575  000.293  000.034: require('hydra.hint')
-118.611  000.035  000.035: require('hydra.lib.meta-accessor')
-118.616  000.419  000.062: require('hydra')
-119.069  000.062  000.062: require('hydra.layer')
-119.639  000.046  000.046: require('my.plugins.clipboard-image')
-119.742  000.042  000.042: require('clipboard-image.config')
-119.745  000.103  000.061: require('clipboard-image')
-119.894  000.032  000.032: require('telescope.previewers.previewer')
-120.052  000.156  000.156: require('telescope.previewers.term_previewer')
-120.208  000.028  000.028: require('plenary.context_manager')
-120.268  000.029  000.029: require('nvim-treesitter.statusline')
-120.306  000.036  000.036: require('nvim-treesitter.query_predicates')
-120.332  000.121  000.057: require('nvim-treesitter')
-120.336  000.196  000.046: require('telescope.previewers.utils')
-121.850  001.512  001.512: require('plenary.filetype')
-121.948  001.893  000.186: require('telescope.previewers.buffer_previewer')
-121.953  002.124  000.042: require('telescope.previewers')
-121.956  002.186  000.062: require('telescope.extensions.unicode')
-121.959  114.019  052.278: sourcing /home/adrielus/.config/nvim/init.lua
-121.967  004.321: sourcing vimrc file(s)
-122.592  000.016  000.016: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/LuaSnip/ftdetect/snippets.vim
-122.755  000.017  000.017: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/dhall-vim/ftdetect/dhall.vim
-122.895  000.011  000.011: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/idris2-nvim/ftdetect/idris2.vim
-122.926  000.009  000.009: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/idris2-nvim/ftdetect/ipkg.vim
-122.971  000.010  000.010: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/idris2-nvim/ftdetect/lidris2.vim
-123.048  000.017  000.017: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/kmonad-vim/ftdetect/kbd.vim
-123.116  000.015  000.015: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/kotlin-vim/ftdetect/kotlin.vim
-123.381  000.012  000.012: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/purescript-vim/ftdetect/purescript.vim
-123.544  000.024  000.024: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vimtex/ftdetect/cls.vim
-123.588  000.021  000.021: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vimtex/ftdetect/tex.vim
-123.627  000.016  000.016: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vimtex/ftdetect/tikz.vim
-124.105  000.042  000.042: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/lean.nvim/ftdetect/lean.lua
-124.506  000.031  000.031: sourcing /home/adrielus/Projects/nixos-config/dotfiles/neovim/ftdetect/hkf.lua
-124.534  002.093  001.852: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/filetype.lua
-124.580  000.016  000.016: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/filetype.vim
-125.232  000.097  000.097: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/syntax/synload.vim
-125.374  000.617  000.520: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/syntax/syntax.vim
-127.817  000.219  000.219: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/gzip.vim
-127.856  000.011  000.011: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/health.vim
-128.644  000.186  000.186: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim
-128.883  001.005  000.819: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/matchit.vim
-129.057  000.150  000.150: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/matchparen.vim
-129.438  000.356  000.356: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/netrwPlugin.vim
-134.275  000.262  000.262: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/autoload/remote/host.vim
-134.959  000.167  000.167: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/autoload/remote/define.vim
-135.113  005.425  004.996: sourcing /home/adrielus/.local/share/nvim/rplugin.vim
-135.131  005.660  000.236: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/rplugin.vim
-135.278  000.083  000.083: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/shada.vim
-135.379  000.034  000.034: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/spellfile.vim
-135.551  000.134  000.134: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/tarPlugin.vim
-135.758  000.152  000.152: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/tohtml.vim
-135.829  000.021  000.021: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/tutor.vim
-136.048  000.185  000.185: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/zipPlugin.vim
-136.760  000.128  000.128: sourcing /nix/store/lpaqrxrx2wh2prd87b5l87h9naab3zga-neovim-unwrapped-master/share/nvim/runtime/plugin/man.lua
-136.827  003.995: loading rtp plugins
-138.077  000.204  000.204: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/LuaSnip/plugin/luasnip.vim
-138.269  000.035  000.035: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/catppuccin/plugin/catppuccin.vim
-138.540  000.083  000.083: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/clipboard-image.nvim/plugin/clipboard-image.vim
-139.217  000.077  000.077: require('dashboard.session')
-139.228  000.157  000.080: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/dashboard-nvim/plugin/dashboard.lua
-139.488  000.042  000.042: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/dressing.nvim/plugin/dressing.lua
-139.728  000.079  000.079: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/firenvim/plugin/firenvim.vim
-140.234  000.153  000.153: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/hydra.nvim/plugin/hydra.lua
-140.980  000.049  000.049: require('cmp.utils.highlight')
-141.591  000.705  000.656: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/nvim-cmp/plugin/cmp.lua
-142.059  000.128  000.128: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/nvim-lspconfig/plugin/lspconfig.lua
-142.886  000.136  000.136: require('nvim-treesitter.highlight')
-143.106  000.812  000.676: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/nvim-treesitter/plugin/nvim-treesitter.lua
-143.382  000.075  000.075: require('nvim-treesitter-textobjects')
-143.520  000.040  000.040: require('nvim-treesitter.textobjects.shared')
-143.525  000.095  000.054: require('nvim-treesitter.textobjects.select')
-143.619  000.035  000.035: require('nvim-treesitter.textobjects.attach')
-143.625  000.080  000.045: require('nvim-treesitter.textobjects.move')
-143.852  000.041  000.041: require('nvim-treesitter.textobjects.swap')
-143.940  000.045  000.045: require('nvim-treesitter.textobjects.lsp_interop')
-143.955  000.669  000.334: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/nvim-treesitter-textobjects/plugin/nvim-treesitter-textobjects.vim
-144.200  000.043  000.043: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/nvim-web-devicons/plugin/nvim-web-devicons.vim
-144.424  000.028  000.028: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/nvim_context_vt/plugin/nvim_context_vt.vim
-144.580  000.014  000.014: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/paperplanes.nvim/plugin/paperplanes.vim
-144.961  000.039  000.039: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/plenary.nvim/plugin/plenary.vim
-145.132  000.016  000.016: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/presence.nvim/plugin/presence.vim
-145.620  000.242  000.242: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/telescope.nvim/plugin/telescope.lua
-145.974  000.104  000.104: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/venn.nvim/plugin/venn.lua
-146.450  000.372  000.372: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vim-arpeggio/plugin/arpeggio.vim
-152.583  005.970  005.970: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vim-easymotion/plugin/EasyMotion.vim
-153.705  000.770  000.770: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vim-smoothie/plugin/smoothie.vim
-154.497  000.495  000.495: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vim-surround/plugin/surround.vim
-155.112  000.314  000.314: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vim-tmux-navigator/plugin/tmux_navigator.vim
-156.886  001.540  001.540: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vim-wakatime/plugin/wakatime.vim
-157.194  000.048  000.048: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vimtex/plugin/vimtex.vim
-157.881  000.520  000.520: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/vimux/plugin/vimux.vim
-158.083  000.017  000.017: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/which-key.nvim/plugin/which-key.vim
-158.555  008.129: loading packages
-159.392  000.031  000.031: require('cmp_buffer.timer')
-159.398  000.090  000.059: require('cmp_buffer.buffer')
-159.402  000.145  000.055: require('cmp_buffer.source')
-159.404  000.217  000.073: require('cmp_buffer')
-159.431  000.314  000.097: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/cmp-buffer/after/plugin/cmp_buffer.lua
-159.739  000.145  000.145: require('cmp_cmdline')
-159.765  000.241  000.095: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/cmp-cmdline/after/plugin/cmp_cmdline.lua
-160.033  000.095  000.095: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua
-160.187  000.039  000.039: require('cmp_omni')
-160.205  000.080  000.041: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/cmp-omni/after/plugin/cmp_omni.lua
-160.383  000.063  000.063: require('cmp_path')
-160.399  000.099  000.035: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/cmp-path/after/plugin/cmp_path.lua
-160.562  000.046  000.046: require('cmp_luasnip')
-160.600  000.108  000.062: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/cmp_luasnip/after/plugin/cmp_luasnip.lua
-160.644  001.153: loading after plugins
-160.663  000.019: inits 3
-166.205  005.542: reading ShaDa
-166.587  000.087  000.087: require('luasnip.loaders.from_lua')
-166.825  000.098  000.098: require('luasnip.loaders.from_snipmate')
-166.860  000.470: opening buffers
-167.962  001.102: BufEnter autocommands
-167.967  000.005: editing files in windows
-175.357  000.096  000.096: require('nvim-treesitter.indent')
-175.760  000.079  000.079: require('dashboard.preview')
-175.781  000.162  000.083: require('dashboard.events')
-175.933  007.708: VimEnter autocommands
-176.527  000.475  000.475: sourcing /home/adrielus/.local/share/nvim/site/pack/paqs/start/firenvim/autoload/firenvim.vim
-176.576  000.168: UIEnter autocommands
-176.580  000.004: before starting main loop
-176.918  000.053  000.053: require('nvim_context_vt.config')
-176.960  000.038  000.038: require('nvim_context_vt.utils')
-176.965  000.189  000.098: require('nvim_context_vt')
-178.400  001.631: first screen update
-178.404  000.004: --- NVIM STARTED ---