lewis6991 / impatient.nvim

Improve startup time for Neovim
MIT License
1.19k stars 28 forks source link
lua neovim neovim-plugin nvim

NOTICE

As of Neovim 0.9, this plugin is no longer required. Instead run:

vim.loader.enable()

impatient.nvim

CI

Speed up loading Lua modules in Neovim to improve startup time.

Optimisations

This plugin does several things to speed loading Lua modules and files.

Implements a chunk cache

This is done by using loadstring to compile the Lua modules to bytecode and stores them in a cache file. The cache is invalidated using as hash consisting of:

The cache file is located in $XDG_CACHE_HOME/nvim/luacache_chunks.

Implements a module resolution cache

This is done by maintaining a table of module name to path. The cache is invalidated only if a path no longer exists.

The cache file is located in $XDG_CACHE_HOME/nvim/luacache_modpaths.

Note: This optimization breaks the loading order guarantee of the paths in 'runtimepath'. If you rely on this ordering then you can disable this cache (_G.__luacache_config = { modpaths = { enable = false } }. See configuration below for more details.

Requirements

Installation

packer.nvim:

-- Is using a standard Neovim install, i.e. built from source or using a
-- provided appimage.
use 'lewis6991/impatient.nvim'

Setup

To use impatient, you need only to include it near the top of your init.lua or init.vim.

init.lua:

require('impatient')

init.vim:

lua require('impatient')

Commands

:LuaCacheClear:

Remove the loaded cache and delete the cache file. A new cache file will be created the next time you load Neovim.

:LuaCacheLog:

View log of impatient.

:LuaCacheProfile:

View profiling data. To enable, Impatient must be setup with:

lua require'impatient'.enable_profile()

Configuration

Unlike most plugins which provide a setup() function, Impatient uses a configuration table stored in the global state, _G.__luacache_config. If you modify the default configuration, it must be done before require('impatient') is run.

Default config:

_G.__luacache_config = {
  chunks = {
    enable = true,
    path = vim.fn.stdpath('cache')..'/luacache_chunks',
  },
  modpaths = {
    enable = true,
    path = vim.fn.stdpath('cache')..'/luacache_modpaths',
  }
}
require('impatient')

Performance Example

Measured on a M1 MacBook Air.

Standard ``` ────────────┬────────────┐ Resolve │ Load │ ────────────┼────────────┼───────────────────────────────────────────────────────────────── Time │ Time │ Module ────────────┼────────────┼───────────────────────────────────────────────────────────────── 54.337ms │ 34.257ms │ Total ────────────┼────────────┼───────────────────────────────────────────────────────────────── 7.264ms │ 0.470ms │ octo.colors 3.154ms │ 0.128ms │ diffview.bootstrap 2.086ms │ 0.231ms │ gitsigns 0.320ms │ 0.982ms │ octo.date 0.296ms │ 1.004ms │ octo.writers 0.322ms │ 0.893ms │ octo.utils 0.293ms │ 0.854ms │ vim.diagnostic 0.188ms │ 0.819ms │ vim.lsp.util 0.261ms │ 0.739ms │ vim.lsp 0.330ms │ 0.620ms │ octo.model.octo-buffer 0.392ms │ 0.422ms │ packer.load 0.287ms │ 0.436ms │ octo.reviews 0.367ms │ 0.325ms │ octo 0.309ms │ 0.381ms │ octo.graphql 0.454ms │ 0.221ms │ octo.base64 0.295ms │ 0.338ms │ octo.reviews.file-panel 0.305ms │ 0.306ms │ octo.reviews.file-entry 0.183ms │ 0.386ms │ vim.treesitter.query 0.418ms │ 0.149ms │ vim.uri 0.342ms │ 0.213ms │ octo.config 0.110ms │ 0.430ms │ nvim-lsp-installer.ui.status-win 0.296ms │ 0.209ms │ octo.window 0.202ms │ 0.288ms │ vim.lsp.rpc 0.352ms │ 0.120ms │ octo.gh 0.287ms │ 0.184ms │ octo.reviews.layout 0.209ms │ 0.260ms │ vim.lsp.handlers 0.108ms │ 0.360ms │ luasnip.nodes.snippet 0.243ms │ 0.212ms │ dirvish 0.289ms │ 0.159ms │ octo.mappings 0.228ms │ 0.220ms │ trouble.view 0.145ms │ 0.293ms │ plenary.job 0.188ms │ 0.244ms │ vim.lsp.diagnostic 0.032ms │ 0.391ms │ packer_compiled 0.188ms │ 0.228ms │ vim.lsp.buf 0.186ms │ 0.227ms │ vim.lsp.protocol 0.141ms │ 0.264ms │ nvim-treesitter.install 0.205ms │ 0.190ms │ vim.lsp._snippet 0.114ms │ 0.281ms │ colorizer 0.124ms │ 0.262ms │ nvim-treesitter.parsers 0.331ms │ 0.052ms │ octo.model.body-metadata 0.325ms │ 0.054ms │ octo.constants 0.296ms │ 0.081ms │ octo.reviews.renderer 0.326ms │ 0.050ms │ octo.model.thread-metadata 0.258ms │ 0.117ms │ trouble 0.106ms │ 0.267ms │ cmp.core 0.286ms │ 0.085ms │ octo.completion 0.120ms │ 0.250ms │ luasnip 0.286ms │ 0.084ms │ octo.ui.bubbles 0.068ms │ 0.298ms │ diffview.utils 0.325ms │ 0.039ms │ octo.model.title-metadata 0.126ms │ 0.234ms │ treesitter-context 0.282ms │ 0.073ms │ octo.signs 0.299ms │ 0.043ms │ octo.folds 0.112ms │ 0.228ms │ luasnip.util.util 0.181ms │ 0.156ms │ vim.treesitter.languagetree 0.260ms │ 0.073ms │ vim.keymap 0.101ms │ 0.231ms │ cmp.entry 0.182ms │ 0.145ms │ vim.treesitter.highlighter 0.191ms │ 0.121ms │ trouble.util 0.190ms │ 0.119ms │ vim.lsp.codelens 0.190ms │ 0.117ms │ vim.lsp.sync 0.197ms │ 0.105ms │ vim.highlight 0.170ms │ 0.132ms │ spellsitter 0.086ms │ 0.213ms │ github_dark 0.200ms │ 0.099ms │ persistence 0.100ms │ 0.196ms │ cmp.view.custom_entries_view 0.118ms │ 0.176ms │ nvim-treesitter.configs 0.090ms │ 0.201ms │ gitsigns.git 0.114ms │ 0.170ms │ nvim-lsp-installer.ui.display 0.217ms │ 0.064ms │ plenary.async.async 0.195ms │ 0.078ms │ vim.lsp.log 0.191ms │ 0.081ms │ trouble.renderer 0.122ms │ 0.150ms │ nvim-treesitter.ts_utils 0.235ms │ 0.035ms │ plenary 0.100ms │ 0.168ms │ cmp.source 0.191ms │ 0.076ms │ vim.treesitter 0.106ms │ 0.160ms │ lspconfig.util 0.118ms │ 0.147ms │ nvim-treesitter.query 0.088ms │ 0.176ms │ gitsigns.config 0.108ms │ 0.150ms │ cmp 0.193ms │ 0.063ms │ trouble.providers 0.206ms │ 0.050ms │ tmux.version.parse 0.103ms │ 0.151ms │ cmp.view.wildmenu_entries_view 0.070ms │ 0.178ms │ diffview.path 0.189ms │ 0.058ms │ trouble.providers.lsp 0.096ms │ 0.147ms │ luasnip.util.parser 0.093ms │ 0.150ms │ gitsigns.manager 0.097ms │ 0.145ms │ null-ls.utils 0.155ms │ 0.087ms │ plenary.async.control 0.105ms │ 0.135ms │ nvim-lsp-installer.installers.std 0.107ms │ 0.130ms │ lspconfig.configs 0.097ms │ 0.140ms │ null-ls.helpers.generator_factory 0.188ms │ 0.047ms │ trouble.providers.telescope 0.191ms │ 0.040ms │ trouble.config 0.099ms │ 0.131ms │ cmp.utils.window 0.096ms │ 0.133ms │ luasnip.nodes.choiceNode 0.192ms │ 0.036ms │ trouble.providers.qf 0.104ms │ 0.124ms │ cmp.utils.keymap 0.089ms │ 0.139ms │ gitsigns.hunks 0.104ms │ 0.122ms │ nvim-lsp-installer.process 0.096ms │ 0.129ms │ null-ls.sources 0.116ms │ 0.108ms │ nvim-lsp-installer 0.096ms │ 0.128ms │ luasnip.nodes.dynamicNode 0.162ms │ 0.062ms │ tmux.copy 0.197ms │ 0.025ms │ trouble.folds 0.156ms │ 0.066ms │ plenary.async.util 0.150ms │ 0.071ms │ cmp.utils.highlight 0.105ms │ 0.116ms │ nvim-lsp-installer.server 0.118ms │ 0.100ms │ nvim-treesitter.utils 0.182ms │ 0.035ms │ trouble.providers.diagnostic 0.103ms │ 0.114ms │ luasnip.nodes.node 0.185ms │ 0.031ms │ trouble.colors 0.180ms │ 0.035ms │ vim.ui 0.162ms │ 0.053ms │ spaceless 0.118ms │ 0.097ms │ nvim-treesitter.shell_command_selectors 0.160ms │ 0.053ms │ tmux.wrapper.tmux 0.182ms │ 0.031ms │ vim.treesitter.language 0.178ms │ 0.035ms │ trouble.text 0.157ms │ 0.054ms │ plenary.vararg.rotate 0.106ms │ 0.104ms │ nvim-lsp-installer.installers.context 0.181ms │ 0.028ms │ tmux 0.158ms │ 0.050ms │ nvim-treesitter-playground 0.067ms │ 0.140ms │ diffview.oop 0.158ms │ 0.047ms │ tmux.resize 0.166ms │ 0.039ms │ tmux.log.convert 0.161ms │ 0.044ms │ tmux.layout 0.155ms │ 0.048ms │ plenary.async.structs 0.101ms │ 0.102ms │ cmp.view 0.096ms │ 0.105ms │ luasnip.util.environ 0.145ms │ 0.055ms │ plenary.async 0.163ms │ 0.037ms │ tmux.navigation.navigate 0.179ms │ 0.020ms │ tmux.keymaps 0.155ms │ 0.044ms │ plenary.functional 0.102ms │ 0.097ms │ cmp.matcher 0.103ms │ 0.095ms │ cmp.view.ghost_text_view 0.106ms │ 0.091ms │ colorizer.nvim 0.168ms │ 0.029ms │ tmux.log 0.106ms │ 0.090ms │ nvim-lsp-installer._generated.filetype_map 0.122ms │ 0.073ms │ nvim-treesitter.info 0.098ms │ 0.097ms │ null-ls.client 0.105ms │ 0.089ms │ nvim-lsp-installer.log 0.170ms │ 0.024ms │ tmux.navigation 0.109ms │ 0.084ms │ nvim-lsp-installer.servers 0.098ms │ 0.095ms │ null-ls.helpers.diagnostics 0.160ms │ 0.033ms │ tmux.configuration.options 0.100ms │ 0.091ms │ cmp.utils.misc 0.044ms │ 0.148ms │ lewis6991 0.104ms │ 0.088ms │ colorizer.trie 0.163ms │ 0.028ms │ ts_context_commentstring 0.054ms │ 0.136ms │ cmp-rg 0.130ms │ 0.060ms │ nvim-treesitter.query_predicates 0.151ms │ 0.039ms │ plenary.reload 0.096ms │ 0.094ms │ luasnip.nodes.insertNode 0.160ms │ 0.028ms │ tmux.layout.parse 0.096ms │ 0.093ms │ luasnip.nodes.restoreNode 0.166ms │ 0.022ms │ tmux.configuration.validate 0.100ms │ 0.088ms │ cmp.view.native_entries_view 0.155ms │ 0.033ms │ plenary.tbl 0.126ms │ 0.062ms │ lspconfig.server_configurations.sumneko_lua 0.029ms │ 0.160ms │ cmp_buffer.buffer 0.105ms │ 0.083ms │ cmp.utils.str 0.162ms │ 0.025ms │ tmux.log.severity 0.164ms │ 0.024ms │ tmux.wrapper.nvim 0.107ms │ 0.081ms │ nvim-lsp-installer.ui.status-win.components.settings-schema 0.021ms │ 0.167ms │ lewis6991.null-ls 0.163ms │ 0.024ms │ tmux.configuration 0.116ms │ 0.071ms │ nvim-treesitter.tsrange 0.161ms │ 0.026ms │ tmux.log.channels 0.094ms │ 0.091ms │ gitsigns.debug 0.163ms │ 0.021ms │ plenary.vararg 0.166ms │ 0.018ms │ tmux.version 0.160ms │ 0.022ms │ tmux.configuration.logging 0.155ms │ 0.026ms │ plenary.errors 0.127ms │ 0.053ms │ nvim-treesitter 0.094ms │ 0.085ms │ null-ls.info 0.100ms │ 0.079ms │ cmp.config 0.095ms │ 0.084ms │ null-ls.diagnostics 0.055ms │ 0.123ms │ cmp_path 0.139ms │ 0.038ms │ plenary.async.tests 0.098ms │ 0.078ms │ null-ls.config 0.100ms │ 0.076ms │ cmp.view.docs_view 0.102ms │ 0.074ms │ cmp.utils.feedkeys 0.089ms │ 0.085ms │ gitsigns.current_line_blame 0.127ms │ 0.047ms │ null-ls 0.107ms │ 0.066ms │ nvim-lsp-installer.installers 0.095ms │ 0.078ms │ luasnip.util.mark 0.106ms │ 0.066ms │ nvim-lsp-installer.fs 0.142ms │ 0.030ms │ persistence.config 0.100ms │ 0.070ms │ cmp.config.default 0.078ms │ 0.091ms │ foldsigns 0.120ms │ 0.048ms │ lua-dev 0.113ms │ 0.053ms │ nvim-lsp-installer.ui 0.029ms │ 0.138ms │ lewis6991.status 0.118ms │ 0.047ms │ lspconfig 0.113ms │ 0.051ms │ nvim-lsp-installer.jobs.outdated-servers 0.105ms │ 0.058ms │ nvim-lsp-installer.installers.npm 0.106ms │ 0.057ms │ nvim-lsp-installer.core.receipt 0.101ms │ 0.061ms │ cmp.utils.char 0.091ms │ 0.071ms │ gitsigns.signs 0.097ms │ 0.065ms │ luasnip.nodes.util 0.126ms │ 0.034ms │ treesitter-context.utils 0.096ms │ 0.065ms │ lua-dev.config 0.109ms │ 0.052ms │ nvim-lsp-installer.core.fetch 0.103ms │ 0.055ms │ cmp.types.lsp 0.099ms │ 0.059ms │ luasnip.nodes.functionNode 0.090ms │ 0.067ms │ gitsigns.util 0.110ms │ 0.047ms │ nvim-lsp-installer.jobs.outdated-servers.cargo 0.096ms │ 0.061ms │ luasnip.config 0.100ms │ 0.057ms │ cmp.utils.async 0.101ms │ 0.055ms │ cmp.context 0.091ms │ 0.064ms │ gitsigns.highlight 0.094ms │ 0.061ms │ lua-dev.sumneko 0.094ms │ 0.061ms │ gitsigns.subprocess 0.067ms │ 0.088ms │ cmp_luasnip 0.105ms │ 0.050ms │ nvim-lsp-installer.data 0.105ms │ 0.049ms │ nvim-lsp-installer.installers.pip3 0.120ms │ 0.034ms │ lspconfig.server_configurations.bashls 0.107ms │ 0.046ms │ nvim-lsp-installer.core.clients.github 0.107ms │ 0.045ms │ nvim-lsp-installer.installers.shell 0.099ms │ 0.053ms │ cmp.config.compare 0.109ms │ 0.043ms │ lspconfig.server_configurations.clangd 0.115ms │ 0.036ms │ lspconfig.server_configurations.vimls 0.097ms │ 0.054ms │ luasnip.util.pattern_tokenizer 0.097ms │ 0.053ms │ null-ls.helpers.make_builtin 0.101ms │ 0.049ms │ cmp.utils.api 0.118ms │ 0.032ms │ lspconfig.server_configurations.jedi_language_server 0.106ms │ 0.043ms │ nvim-lsp-installer.jobs.outdated-servers.pip3 0.106ms │ 0.043ms │ nvim-lsp-installer.jobs.outdated-servers.gem 0.108ms │ 0.040ms │ nvim-lsp-installer._generated.language_autocomplete_map 0.104ms │ 0.043ms │ nvim-lsp-installer.installers.composer 0.101ms │ 0.046ms │ cmp.config.mapping 0.047ms │ 0.100ms │ cmp_nvim_lsp_signature_help 0.109ms │ 0.037ms │ nvim-lsp-installer.servers.sumneko_lua 0.115ms │ 0.028ms │ nvim-treesitter.caching 0.096ms │ 0.047ms │ null-ls.state 0.090ms │ 0.053ms │ gitsigns.debounce 0.059ms │ 0.084ms │ cmp_tmux.tmux 0.096ms │ 0.045ms │ null-ls.builtins.diagnostics.flake8 0.106ms │ 0.034ms │ nvim-lsp-installer.jobs.pool 0.106ms │ 0.033ms │ nvim-lsp-installer.ui.status-win.server_hints 0.105ms │ 0.034ms │ nvim-lsp-installer.installers.gem 0.107ms │ 0.032ms │ nvim-lsp-installer.jobs.outdated-servers.npm 0.106ms │ 0.031ms │ nvim-lsp-installer.jobs.outdated-servers.git 0.114ms │ 0.022ms │ nvim-lsp-installer.servers.jedi_language_server 0.105ms │ 0.031ms │ nvim-lsp-installer.jobs.outdated-servers.composer 0.098ms │ 0.038ms │ null-ls.methods 0.109ms │ 0.026ms │ nvim-lsp-installer.jobs.outdated-servers.version-check-result 0.106ms │ 0.029ms │ nvim-lsp-installer.settings 0.107ms │ 0.027ms │ cmp.utils.debug 0.103ms │ 0.031ms │ cmp.types.cmp 0.070ms │ 0.064ms │ diffview.events 0.108ms │ 0.026ms │ nvim-lsp-installer.platform 0.097ms │ 0.037ms │ null-ls.helpers.command_resolver 0.104ms │ 0.029ms │ cmp.config.sources 0.107ms │ 0.026ms │ nvim-lsp-installer.jobs.outdated-servers.github_release_file 0.099ms │ 0.033ms │ cmp.utils.cache 0.107ms │ 0.025ms │ nvim-lsp-installer.path 0.101ms │ 0.030ms │ cmp.utils.autocmd 0.097ms │ 0.034ms │ null-ls.logger 0.100ms │ 0.031ms │ cmp.utils.event 0.088ms │ 0.042ms │ gitsigns.cache 0.103ms │ 0.027ms │ cmp.utils.pattern 0.108ms │ 0.022ms │ nvim-lsp-installer.jobs.outdated-servers.jdtls 0.103ms │ 0.027ms │ cmp.utils.buffer 0.095ms │ 0.034ms │ luasnip.nodes.textNode 0.096ms │ 0.033ms │ luasnip.util.dict 0.108ms │ 0.021ms │ nvim-lsp-installer.servers.bashls 0.108ms │ 0.021ms │ nvim-lsp-installer.ui.state 0.110ms │ 0.018ms │ nvim-lsp-installer.servers.vimls 0.101ms │ 0.027ms │ null-ls.helpers.range_formatting_args_factory 0.057ms │ 0.071ms │ cmp_treesitter.lru 0.105ms │ 0.022ms │ nvim-lsp-installer.dispatcher 0.097ms │ 0.030ms │ luasnip.extras.filetype_functions 0.103ms │ 0.024ms │ luasnip.session 0.105ms │ 0.021ms │ nvim-lsp-installer.core.clients.crates 0.105ms │ 0.021ms │ nvim-lsp-installer.jobs.outdated-servers.github_tag 0.110ms │ 0.016ms │ cmp.types 0.105ms │ 0.021ms │ nvim-lsp-installer.core.clients.eclipse 0.105ms │ 0.021ms │ nvim-lsp-installer.notify 0.089ms │ 0.036ms │ gitsigns.status 0.096ms │ 0.029ms │ null-ls.builtins.diagnostics.teal 0.097ms │ 0.027ms │ null-ls.builtins 0.103ms │ 0.021ms │ cmp.types.vim 0.060ms │ 0.062ms │ cmp_tmux.source 0.100ms │ 0.022ms │ null-ls.helpers 0.098ms │ 0.024ms │ null-ls.builtins.diagnostics.gitlint 0.065ms │ 0.056ms │ cmp_treesitter 0.024ms │ 0.097ms │ buftabline.buftab 0.095ms │ 0.026ms │ null-ls.builtins.diagnostics.shellcheck 0.095ms │ 0.026ms │ null-ls.builtins.diagnostics.luacheck 0.097ms │ 0.021ms │ null-ls.helpers.formatter_factory 0.097ms │ 0.022ms │ luasnip.util.events 0.097ms │ 0.021ms │ luasnip.util.types 0.096ms │ 0.022ms │ luasnip.util.functions 0.037ms │ 0.078ms │ cmp_cmdline 0.032ms │ 0.083ms │ cmp_buffer.source 0.040ms │ 0.074ms │ lewis6991.cmp 0.060ms │ 0.054ms │ cmp_treesitter.treesitter 0.089ms │ 0.025ms │ gitsigns.message 0.039ms │ 0.073ms │ cmp_nvim_lsp.source 0.055ms │ 0.054ms │ buftabline.build 0.026ms │ 0.083ms │ lewis6991.lsp 0.051ms │ 0.055ms │ cmp_nvim_lua 0.033ms │ 0.065ms │ cleanfold 0.071ms │ 0.025ms │ cmp_tmux 0.043ms │ 0.053ms │ cmp_nvim_lsp 0.058ms │ 0.033ms │ cmp-spell 0.043ms │ 0.037ms │ cmp_emoji 0.029ms │ 0.049ms │ lewis6991.floating_man 0.032ms │ 0.042ms │ cmp_buffer.timer 0.024ms │ 0.050ms │ lewis6991.treesitter 0.019ms │ 0.054ms │ lewis6991.cmp_gh 0.025ms │ 0.046ms │ buftabline.buffers 0.021ms │ 0.048ms │ lewis6991.telescope 0.024ms │ 0.031ms │ buftabline 0.035ms │ 0.019ms │ cmp_buffer 0.019ms │ 0.035ms │ buftabline.utils 0.021ms │ 0.030ms │ buftabline.highlights 0.020ms │ 0.032ms │ buftabline.tabpage-tab 0.019ms │ 0.030ms │ buftabline.options 0.020ms │ 0.026ms │ buftabline.tabpages ────────────┴────────────┴───────────────────────────────────────────────────────────────── ```

Total resolve: 54.337ms, total load: 34.257ms

With cache ``` ────────────┬────────────┐ Resolve │ Load │ ────────────┼────────────┼───────────────────────────────────────────────────────────────── Time │ Time │ Module ────────────┼────────────┼───────────────────────────────────────────────────────────────── 6.357ms │ 6.796ms │ Total ────────────┼────────────┼───────────────────────────────────────────────────────────────── 0.041ms │ 2.021ms │ octo.writers 0.118ms │ 0.160ms │ lewis6991.plugins 0.050ms │ 0.144ms │ octo.date 0.035ms │ 0.153ms │ octo.utils 0.057ms │ 0.099ms │ octo.model.octo-buffer 0.047ms │ 0.105ms │ packer 0.058ms │ 0.080ms │ octo.colors 0.121ms │ 0.015ms │ gitsigns.cache 0.082ms │ 0.037ms │ packer.load 0.107ms │ 0.008ms │ gitsigns.debounce 0.048ms │ 0.064ms │ octo.config 0.048ms │ 0.061ms │ octo.graphql 0.049ms │ 0.051ms │ octo 0.043ms │ 0.057ms │ vim.diagnostic 0.085ms │ 0.013ms │ gitsigns.highlight 0.065ms │ 0.032ms │ octo.base64 0.035ms │ 0.060ms │ vim.lsp 0.056ms │ 0.035ms │ octo.gh 0.045ms │ 0.045ms │ octo.mappings 0.026ms │ 0.060ms │ octo.reviews 0.037ms │ 0.045ms │ packer.plugin_utils 0.030ms │ 0.049ms │ octo.reviews.file-panel 0.018ms │ 0.056ms │ vim.lsp.util 0.043ms │ 0.030ms │ packer.log 0.036ms │ 0.032ms │ packer.util 0.032ms │ 0.035ms │ octo.reviews.file-entry 0.021ms │ 0.045ms │ packer_compiled 0.052ms │ 0.014ms │ octo.model.body-metadata 0.033ms │ 0.027ms │ octo.reviews.layout 0.014ms │ 0.047ms │ nvim-treesitter.parsers 0.035ms │ 0.024ms │ vim.lsp.handlers 0.014ms │ 0.044ms │ nvim-lsp-installer.ui.status-win 0.046ms │ 0.012ms │ octo.completion 0.037ms │ 0.021ms │ octo.constants 0.032ms │ 0.025ms │ lewis6991 0.040ms │ 0.017ms │ persistence 0.030ms │ 0.026ms │ diffview.utils 0.035ms │ 0.020ms │ packer.result 0.015ms │ 0.040ms │ gitsigns.config 0.031ms │ 0.024ms │ packer.async 0.041ms │ 0.013ms │ vim.uri 0.044ms │ 0.010ms │ octo.model.thread-metadata 0.018ms │ 0.035ms │ gitsigns.debug 0.023ms │ 0.030ms │ github_dark 0.030ms │ 0.023ms │ packer.jobs 0.039ms │ 0.013ms │ buftabline.build 0.037ms │ 0.014ms │ octo.model.title-metadata 0.025ms │ 0.025ms │ vim.lsp.buf 0.022ms │ 0.027ms │ gitsigns 0.027ms │ 0.022ms │ lewis6991.status 0.016ms │ 0.032ms │ gitsigns.git 0.026ms │ 0.020ms │ octo.window 0.033ms │ 0.012ms │ octo.folds 0.037ms │ 0.008ms │ trouble.providers.lsp 0.016ms │ 0.028ms │ vim.lsp.protocol 0.028ms │ 0.016ms │ octo.signs 0.028ms │ 0.014ms │ null-ls 0.027ms │ 0.014ms │ octo.reviews.renderer 0.018ms │ 0.024ms │ trouble.view 0.017ms │ 0.025ms │ luasnip.nodes.snippet 0.023ms │ 0.018ms │ colorizer.nvim 0.017ms │ 0.024ms │ vim.lsp._snippet 0.015ms │ 0.025ms │ nvim-treesitter.install 0.018ms │ 0.022ms │ plenary.async.structs 0.018ms │ 0.021ms │ dirvish 0.027ms │ 0.012ms │ octo.ui.bubbles 0.019ms │ 0.020ms │ treesitter-context 0.015ms │ 0.024ms │ vim.lsp.diagnostic 0.016ms │ 0.023ms │ vim.lsp.rpc 0.022ms │ 0.016ms │ trouble 0.022ms │ 0.016ms │ null-ls.helpers.generator_factory 0.020ms │ 0.017ms │ luasnip 0.014ms │ 0.023ms │ plenary.job 0.026ms │ 0.011ms │ lewis6991.cmp 0.027ms │ 0.010ms │ trouble.providers 0.022ms │ 0.014ms │ nvim-treesitter.query 0.018ms │ 0.018ms │ vim.treesitter.highlighter 0.017ms │ 0.018ms │ nvim-treesitter.shell_command_selectors 0.014ms │ 0.021ms │ nvim-treesitter.configs 0.025ms │ 0.010ms │ lewis6991.floating_man 0.022ms │ 0.012ms │ vim.keymap 0.013ms │ 0.021ms │ cmp.entry 0.024ms │ 0.010ms │ lspconfig.server_configurations.bashls 0.018ms │ 0.016ms │ gitsigns.hunks 0.017ms │ 0.017ms │ gitsigns.status 0.014ms │ 0.019ms │ cmp.core 0.018ms │ 0.015ms │ spellsitter 0.014ms │ 0.019ms │ colorizer 0.024ms │ 0.009ms │ diffview.bootstrap 0.016ms │ 0.016ms │ null-ls.utils 0.021ms │ 0.011ms │ nvim-treesitter.info 0.022ms │ 0.010ms │ vim.highlight 0.016ms │ 0.016ms │ null-ls.info 0.019ms │ 0.013ms │ cmp_path 0.026ms │ 0.006ms │ cmp.utils.autocmd 0.021ms │ 0.011ms │ foldsigns 0.014ms │ 0.018ms │ lewis6991.null-ls 0.018ms │ 0.013ms │ cmp.view 0.017ms │ 0.014ms │ null-ls.client 0.016ms │ 0.015ms │ gitsigns.manager 0.013ms │ 0.018ms │ cmp.view.custom_entries_view 0.015ms │ 0.015ms │ nvim-lsp-installer.ui.display 0.020ms │ 0.010ms │ null-ls.methods 0.016ms │ 0.014ms │ plenary.async.control 0.019ms │ 0.011ms │ null-ls.diagnostics 0.014ms │ 0.015ms │ luasnip.util.util 0.017ms │ 0.013ms │ gitsigns.current_line_blame 0.013ms │ 0.016ms │ buftabline.buftab 0.015ms │ 0.015ms │ trouble.util 0.015ms │ 0.015ms │ luasnip.config 0.019ms │ 0.010ms │ plenary.async.async 0.018ms │ 0.012ms │ nvim-treesitter.tsrange 0.021ms │ 0.007ms │ cmp_nvim_lua 0.014ms │ 0.015ms │ vim.treesitter.query 0.015ms │ 0.014ms │ cmp.source 0.014ms │ 0.015ms │ vim.treesitter.languagetree 0.012ms │ 0.016ms │ nvim-lsp-installer._generated.filetype_map 0.015ms │ 0.014ms │ nvim-lsp-installer.servers 0.014ms │ 0.014ms │ lspconfig.util 0.011ms │ 0.017ms │ cmp 0.015ms │ 0.013ms │ cmp.view.wildmenu_entries_view 0.021ms │ 0.007ms │ lspconfig.server_configurations.jedi_language_server 0.015ms │ 0.013ms │ lua-dev 0.018ms │ 0.010ms │ gitsigns.util 0.014ms │ 0.014ms │ vim.lsp.codelens 0.017ms │ 0.011ms │ plenary.async.util 0.013ms │ 0.014ms │ null-ls.sources 0.015ms │ 0.012ms │ nvim-treesitter.query_predicates 0.013ms │ 0.015ms │ luasnip.nodes.choiceNode 0.015ms │ 0.013ms │ null-ls.helpers.diagnostics 0.017ms │ 0.011ms │ trouble.renderer 0.015ms │ 0.013ms │ luasnip.nodes.node 0.014ms │ 0.013ms │ lua-dev.sumneko 0.013ms │ 0.014ms │ cmp.utils.window 0.021ms │ 0.006ms │ treesitter-context.utils 0.018ms │ 0.009ms │ cleanfold 0.015ms │ 0.012ms │ nvim-treesitter.ts_utils 0.012ms │ 0.015ms │ nvim-lsp-installer.installers.std 0.015ms │ 0.012ms │ nvim-lsp-installer.server 0.014ms │ 0.012ms │ lewis6991.lsp 0.016ms │ 0.011ms │ gitsigns.signs 0.020ms │ 0.006ms │ buftabline 0.019ms │ 0.007ms │ plenary.tbl 0.013ms │ 0.013ms │ nvim-lsp-installer 0.018ms │ 0.008ms │ plenary 0.015ms │ 0.010ms │ cmp_luasnip 0.019ms │ 0.007ms │ null-ls.logger 0.016ms │ 0.010ms │ vim.lsp.sync 0.016ms │ 0.010ms │ spaceless 0.017ms │ 0.009ms │ gitsigns.subprocess 0.016ms │ 0.009ms │ plenary.functional 0.016ms │ 0.010ms │ buftabline.buffers 0.016ms │ 0.009ms │ vim.lsp.log 0.019ms │ 0.006ms │ cmp_tmux 0.013ms │ 0.012ms │ luasnip.nodes.dynamicNode 0.017ms │ 0.008ms │ vim.treesitter 0.013ms │ 0.013ms │ nvim-lsp-installer.process 0.013ms │ 0.012ms │ luasnip.util.environ 0.015ms │ 0.009ms │ lewis6991.treesitter 0.015ms │ 0.010ms │ null-ls.config 0.019ms │ 0.006ms │ ts_context_commentstring 0.013ms │ 0.012ms │ cmp_buffer.buffer 0.018ms │ 0.007ms │ null-ls.builtins.diagnostics.shellcheck 0.015ms │ 0.010ms │ null-ls.helpers.make_builtin 0.012ms │ 0.012ms │ diffview.path 0.016ms │ 0.008ms │ null-ls.builtins.diagnostics.gitlint 0.017ms │ 0.007ms │ trouble.providers.telescope 0.013ms │ 0.011ms │ diffview.oop 0.015ms │ 0.010ms │ cmp-rg 0.013ms │ 0.011ms │ cmp.utils.keymap 0.014ms │ 0.011ms │ nvim-treesitter 0.018ms │ 0.007ms │ cmp.utils.highlight 0.016ms │ 0.008ms │ lspconfig.server_configurations.sumneko_lua 0.015ms │ 0.009ms │ colorizer.trie 0.016ms │ 0.007ms │ plenary.vararg.rotate 0.015ms │ 0.009ms │ trouble.config 0.011ms │ 0.012ms │ lspconfig.configs 0.014ms │ 0.009ms │ null-ls.helpers.command_resolver 0.016ms │ 0.007ms │ cmp_tmux.source 0.016ms │ 0.007ms │ lspconfig 0.017ms │ 0.006ms │ plenary.vararg 0.012ms │ 0.011ms │ nvim-lsp-installer.installers.context 0.014ms │ 0.009ms │ cmp.view.native_entries_view 0.014ms │ 0.009ms │ cmp.config.default 0.017ms │ 0.006ms │ tmux.version.parse 0.016ms │ 0.007ms │ gitsigns.message 0.017ms │ 0.006ms │ persistence.config 0.013ms │ 0.010ms │ cmp_nvim_lsp_signature_help 0.012ms │ 0.010ms │ cmp.view.docs_view 0.017ms │ 0.006ms │ cmp.config.sources 0.013ms │ 0.009ms │ luasnip.nodes.restoreNode 0.014ms │ 0.009ms │ vim.ui 0.013ms │ 0.010ms │ luasnip.nodes.insertNode 0.013ms │ 0.010ms │ null-ls.state 0.014ms │ 0.008ms │ lspconfig.server_configurations.vimls 0.016ms │ 0.006ms │ plenary.errors 0.014ms │ 0.008ms │ null-ls.builtins.diagnostics.flake8 0.016ms │ 0.006ms │ null-ls.helpers 0.015ms │ 0.008ms │ null-ls.builtins.diagnostics.luacheck 0.014ms │ 0.008ms │ luasnip.util.mark 0.015ms │ 0.008ms │ cmp.utils.buffer 0.012ms │ 0.010ms │ nvim-lsp-installer.log 0.015ms │ 0.007ms │ luasnip.nodes.util 0.015ms │ 0.007ms │ null-ls.builtins.diagnostics.teal 0.016ms │ 0.006ms │ null-ls.helpers.range_formatting_args_factory 0.012ms │ 0.010ms │ nvim-treesitter.utils 0.015ms │ 0.007ms │ cmp.utils.event 0.013ms │ 0.009ms │ tmux.wrapper.tmux 0.015ms │ 0.007ms │ nvim-treesitter-playground 0.012ms │ 0.010ms │ cmp_buffer.source 0.015ms │ 0.007ms │ cmp_treesitter 0.013ms │ 0.009ms │ luasnip.util.parser 0.015ms │ 0.006ms │ trouble.providers.qf 0.014ms │ 0.008ms │ lewis6991.telescope 0.014ms │ 0.007ms │ cmp_tmux.tmux 0.014ms │ 0.007ms │ cmp_nvim_lsp.source 0.015ms │ 0.006ms │ plenary.reload 0.014ms │ 0.008ms │ buftabline.highlights 0.015ms │ 0.006ms │ trouble.providers.diagnostic 0.015ms │ 0.007ms │ nvim-lsp-installer.core.clients.github 0.014ms │ 0.007ms │ nvim-lsp-installer.installers.shell 0.016ms │ 0.005ms │ cmp-spell 0.014ms │ 0.007ms │ null-ls.builtins 0.013ms │ 0.008ms │ cmp_treesitter.lru 0.016ms │ 0.005ms │ buftabline.tabpages 0.015ms │ 0.006ms │ buftabline.options 0.016ms │ 0.005ms │ lua-dev.config 0.015ms │ 0.006ms │ nvim-lsp-installer.jobs.outdated-servers.cargo 0.014ms │ 0.007ms │ diffview.events 0.013ms │ 0.008ms │ nvim-lsp-installer.fs 0.013ms │ 0.008ms │ cmp.utils.feedkeys 0.013ms │ 0.007ms │ nvim-treesitter.caching 0.013ms │ 0.008ms │ nvim-lsp-installer._generated.language_autocomplete_map 0.013ms │ 0.007ms │ cmp.view.ghost_text_view 0.013ms │ 0.008ms │ cmp_nvim_lsp 0.013ms │ 0.007ms │ luasnip.nodes.functionNode 0.013ms │ 0.007ms │ nvim-lsp-installer.jobs.outdated-servers 0.012ms │ 0.008ms │ nvim-lsp-installer.ui.status-win.components.settings-schema 0.012ms │ 0.009ms │ lewis6991.cmp_gh 0.015ms │ 0.006ms │ luasnip.util.dict 0.013ms │ 0.007ms │ plenary.async 0.014ms │ 0.006ms │ nvim-lsp-installer.installers.composer 0.013ms │ 0.007ms │ cmp_treesitter.treesitter 0.014ms │ 0.006ms │ nvim-lsp-installer.jobs.outdated-servers.gem 0.015ms │ 0.005ms │ nvim-lsp-installer.platform 0.014ms │ 0.006ms │ buftabline.utils 0.013ms │ 0.007ms │ trouble.text 0.011ms │ 0.008ms │ cmp.config 0.013ms │ 0.006ms │ trouble.colors 0.012ms │ 0.007ms │ cmp.utils.misc 0.012ms │ 0.008ms │ nvim-lsp-installer.installers.npm 0.013ms │ 0.007ms │ lspconfig.server_configurations.clangd 0.012ms │ 0.007ms │ cmp_cmdline 0.011ms │ 0.008ms │ cmp.types.lsp 0.014ms │ 0.006ms │ vim.treesitter.language 0.014ms │ 0.006ms │ cmp.config.mapping 0.015ms │ 0.004ms │ luasnip.util.events 0.014ms │ 0.005ms │ luasnip.extras.filetype_functions 0.012ms │ 0.007ms │ cmp.utils.async 0.012ms │ 0.007ms │ cmp.config.compare 0.013ms │ 0.005ms │ cmp_emoji 0.015ms │ 0.004ms │ cmp_buffer 0.011ms │ 0.007ms │ nvim-lsp-installer.core.receipt 0.012ms │ 0.007ms │ nvim-lsp-installer.ui 0.013ms │ 0.006ms │ cmp.utils.api 0.012ms │ 0.007ms │ nvim-lsp-installer.core.fetch 0.013ms │ 0.005ms │ nvim-lsp-installer.jobs.pool 0.011ms │ 0.007ms │ nvim-lsp-installer.installers 0.012ms │ 0.007ms │ nvim-lsp-installer.data 0.013ms │ 0.006ms │ cmp.matcher 0.014ms │ 0.005ms │ tmux 0.011ms │ 0.008ms │ tmux.copy 0.013ms │ 0.005ms │ luasnip.util.types 0.014ms │ 0.004ms │ nvim-lsp-installer.servers.jedi_language_server 0.014ms │ 0.004ms │ nvim-lsp-installer.servers.vimls 0.014ms │ 0.004ms │ cmp.utils.cache 0.013ms │ 0.006ms │ luasnip.util.pattern_tokenizer 0.012ms │ 0.006ms │ luasnip.nodes.textNode 0.013ms │ 0.005ms │ null-ls.helpers.formatter_factory 0.013ms │ 0.006ms │ plenary.async.tests 0.013ms │ 0.005ms │ nvim-lsp-installer.jobs.outdated-servers.version-check-result 0.012ms │ 0.005ms │ nvim-lsp-installer.settings 0.011ms │ 0.006ms │ cmp.context 0.011ms │ 0.006ms │ cmp.utils.str 0.013ms │ 0.004ms │ luasnip.session 0.013ms │ 0.005ms │ nvim-lsp-installer.jobs.outdated-servers.composer 0.012ms │ 0.006ms │ nvim-lsp-installer.servers.sumneko_lua 0.012ms │ 0.005ms │ cmp_buffer.timer 0.011ms │ 0.006ms │ cmp.utils.char 0.013ms │ 0.004ms │ cmp.utils.pattern 0.011ms │ 0.006ms │ nvim-lsp-installer.installers.pip3 0.013ms │ 0.004ms │ luasnip.util.functions 0.013ms │ 0.005ms │ tmux.log.channels 0.012ms │ 0.005ms │ tmux.navigation 0.013ms │ 0.005ms │ trouble.folds 0.012ms │ 0.005ms │ nvim-lsp-installer.ui.status-win.server_hints 0.012ms │ 0.005ms │ nvim-lsp-installer.jobs.outdated-servers.pip3 0.012ms │ 0.005ms │ nvim-lsp-installer.jobs.outdated-servers.npm 0.011ms │ 0.006ms │ cmp.utils.debug 0.013ms │ 0.004ms │ nvim-lsp-installer.notify 0.011ms │ 0.006ms │ tmux.layout 0.013ms │ 0.004ms │ nvim-lsp-installer.servers.bashls 0.012ms │ 0.004ms │ nvim-lsp-installer.dispatcher 0.012ms │ 0.005ms │ buftabline.tabpage-tab 0.012ms │ 0.005ms │ nvim-lsp-installer.path 0.010ms │ 0.006ms │ tmux.resize 0.013ms │ 0.004ms │ cmp.types.vim 0.012ms │ 0.004ms │ nvim-lsp-installer.ui.state 0.011ms │ 0.005ms │ nvim-lsp-installer.installers.gem 0.012ms │ 0.005ms │ tmux.configuration.options 0.012ms │ 0.005ms │ nvim-lsp-installer.jobs.outdated-servers.git 0.012ms │ 0.004ms │ nvim-lsp-installer.jobs.outdated-servers.github_release_file 0.012ms │ 0.005ms │ cmp.types.cmp 0.013ms │ 0.004ms │ cmp.types 0.011ms │ 0.005ms │ tmux.log 0.011ms │ 0.005ms │ tmux.navigation.navigate 0.012ms │ 0.005ms │ tmux.configuration 0.012ms │ 0.004ms │ nvim-lsp-installer.jobs.outdated-servers.github_tag 0.011ms │ 0.005ms │ tmux.layout.parse 0.012ms │ 0.004ms │ nvim-lsp-installer.jobs.outdated-servers.jdtls 0.011ms │ 0.005ms │ tmux.log.convert 0.011ms │ 0.005ms │ tmux.log.severity 0.011ms │ 0.004ms │ tmux.version 0.012ms │ 0.004ms │ nvim-lsp-installer.core.clients.eclipse 0.011ms │ 0.004ms │ nvim-lsp-installer.core.clients.crates 0.011ms │ 0.004ms │ tmux.configuration.logging 0.011ms │ 0.004ms │ tmux.wrapper.nvim 0.011ms │ 0.004ms │ tmux.configuration.validate 0.011ms │ 0.004ms │ tmux.keymaps ────────────┴────────────┴───────────────────────────────────────────────────────────────── ```

Total resolve: 6.357ms, total load: 6.796ms

Relevant Neovim PR's

libs: vendor libmpack and libmpack-lua [merged]

fix(vim.mpack): rename pack/unpack => encode/decode [merged]

fix(runtime): add compressed representation to &rtp [merged]

fix(runtime): don't use regexes inside lua require'mod' [merged]

fix(lua): restore priority of the preloader [merged]

refactor(lua): call loadfile internally instead of luaL_loadfile [merged]

feat(lua): startup profiling

Credit

All credit goes to @bfredl who implemented the majority of this plugin in https://github.com/neovim/neovim/pull/15436.