Skip to content

fix: improve BufEnter performance #87

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 6, 2023
Merged

fix: improve BufEnter performance #87

merged 1 commit into from
May 6, 2023

Conversation

mhanberg
Copy link
Collaborator

@mhanberg mhanberg commented May 6, 2023

we are running elixir --version every single time we attach to an elixir filetype (on FileType), so
we need to schedule the callback for later as to not slow down BufEnter.

Fixes #59


I tested this using @NJichev's dotfiles using NVIM_APPNAME nj-nvim nvim path/to/file.ex (with his dotfiles cloned to ~/.config/nj-nvim).

I tested before the change, after the change, and not including the plug-in at all (completely uninstalled it).

@NJichev, please try out this branch and confirm it works for you and i'll merge.

--startuptime before.txt



times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

000.005  000.005: --- NVIM STARTING ---
000.042  000.037: event init
000.100  000.059: early init
000.292  000.192: locale set
000.314  000.022: init first window
000.474  000.160: inits 1
000.484  000.009: window checked
000.551  000.068: parsing arguments
000.801  000.019  000.019: require('vim.shared')
000.849  000.021  000.021: require('vim._meta')
000.850  000.047  000.027: require('vim._editor')
000.851  000.102  000.036: require('vim._init_packages')
000.851  000.198: init lua interpreter
002.183  001.332: expanding arguments
002.204  000.021: inits 2
002.353  000.150: init highlight
002.354  000.001: waiting for UI
002.450  000.097: done waiting for UI
002.461  000.011: clear screen
002.641  000.180: init default mappings & autocommands
003.300  000.271  000.271: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/ftplugin.vim
003.605  000.259  000.259: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/indent.vim
004.484  000.507  000.507: require('keybinds')
004.664  000.178  000.178: require('lazy')
004.684  000.011  000.011: require('ffi')
004.706  000.021  000.021: require('vim.loader')
004.776  000.021  000.021: require('vim.fs')
004.963  000.237  000.216: require('lazy.stats')
005.188  000.204  000.204: require('lazy.core.util')
005.454  000.265  000.265: require('lazy.core.config')
005.793  000.153  000.153: require('lazy.core.handler')
005.937  000.143  000.143: require('lazy.core.plugin')
005.942  000.486  000.189: require('lazy.core.loader')
006.407  000.281  000.281: require('plugins')
006.645  000.195  000.195: require('plugins.cmp')
006.853  000.193  000.193: require('plugins.elixir')
007.078  000.211  000.211: require('plugins.fzf')
007.322  000.237  000.237: require('plugins.lsp')
007.969  000.631  000.631: require('plugins.noice')
008.239  000.260  000.260: require('plugins.treesitter')
008.932  000.306  000.306: require('lazy.core.handler.cmd')
009.456  000.300  000.300: require('lazy.core.handler.event')
009.458  000.523  000.223: require('lazy.core.handler.ft')
009.679  000.218  000.218: require('lazy.core.handler.keys')
009.821  000.003  000.003: require('vim.keymap')
010.679  000.382  000.382: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/filetype.lua
011.621  000.832  000.832: require('gruvbox')
012.191  000.331  000.331: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/editorconfig.lua
012.506  000.260  000.260: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/gzip.vim
012.671  000.123  000.123: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/man.lua
013.487  000.196  000.196: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim
013.569  000.858  000.662: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/matchit.vim
013.818  000.211  000.211: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/matchparen.vim
014.181  000.304  000.304: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/netrwPlugin.vim
014.438  000.194  000.194: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/nvim.lua
014.639  000.147  000.147: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/rplugin.vim
014.794  000.100  000.100: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/shada.vim
014.899  000.050  000.050: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/spellfile.vim
015.030  000.071  000.071: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/tarPlugin.vim
015.163  000.073  000.073: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/tohtml.vim
015.259  000.032  000.032: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/tutor.vim
015.415  000.085  000.085: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/zipPlugin.vim
015.755  000.083  000.083: sourcing /Users/mitchell/.config/nj-nvim/config/functions.vim
015.999  000.198  000.198: sourcing /Users/mitchell/.config/nj-nvim/config/keybinds.vim
017.374  000.210  000.210: require('vim.version')
018.477  000.397  000.397: require('gruvbox.groups')
018.992  000.513  000.513: require('gruvbox.palette')
019.761  002.775  001.655: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/gruvbox.nvim/colors/gruvbox.lua
019.785  003.741  000.967: sourcing /Users/mitchell/.config/nj-nvim/config/interface.vim
019.956  000.105  000.105: sourcing /Users/mitchell/.config/nj-nvim/config/settings.vim
020.256  000.232  000.232: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/macros/matchit.vim
020.285  016.575  003.193: sourcing /Users/mitchell/.config/nj-nvim/init.lua
020.292  000.547: sourcing vimrc file(s)
020.595  000.235  000.235: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/filetype.lua
021.148  000.117  000.117: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/syntax/synload.vim
021.196  000.531  000.414: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/syntax/syntax.vim
021.202  000.145: inits 3
021.617  000.415: reading ShaDa
022.984  000.217  000.217: require('vim.lsp.log')
023.627  000.642  000.642: require('vim.lsp.protocol')
023.968  000.194  000.194: require('vim.lsp._snippet')
024.230  000.261  000.261: require('vim.highlight')
024.235  000.004  000.004: require('vim.F')
024.243  000.615  000.157: require('vim.lsp.util')
024.248  001.700  000.226: require('vim.lsp.handlers')
024.464  000.215  000.215: require('vim.lsp.rpc')
024.657  000.192  000.192: require('vim.lsp.sync')
024.899  000.241  000.241: require('vim.lsp.semantic_tokens')
025.163  000.263  000.263: require('vim.lsp.buf')
025.364  000.200  000.200: require('vim.lsp.diagnostic')
025.542  000.177  000.177: require('vim.lsp.codelens')
025.584  003.360  000.374: require('vim.lsp')
026.110  004.040  000.679: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-lspconfig/plugin/lspconfig.lua
027.284  000.295  000.295: require('lspconfig.util')
027.285  000.511  000.216: require('lspconfig.configs')
027.287  001.154  000.643: require('lspconfig')
028.714  000.480  000.480: require('cmp_nvim_lsp.source')
028.716  001.000  000.520: require('cmp_nvim_lsp')
028.723  001.148  000.148: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua
028.728  001.440  000.292: require('cmp_nvim_lsp')
029.224  000.163  000.163: require('mason-core.path')
029.749  000.320  000.320: require('mason-core.functional')
029.923  000.070  000.070: require('mason-core.functional.data')
029.926  000.167  000.098: require('mason-core.functional.function')
030.003  000.070  000.070: require('mason-core.functional.relation')
030.094  000.088  000.088: require('mason-core.functional.logic')
030.100  000.876  000.230: require('mason-core.platform')
030.174  000.073  000.073: require('mason.settings')
030.175  001.260  000.148: require('mason')
030.862  000.342  000.342: require('mason-core.functional.list')
030.961  000.097  000.097: require('mason-core.functional.string')
030.974  000.616  000.178: require('mason.api.command')
031.053  000.077  000.077: require('mason-registry.sources')
031.208  000.080  000.080: require('mason-core.log')
031.275  000.066  000.066: require('mason-lspconfig.settings')
031.276  000.219  000.074: require('mason-lspconfig')
031.487  000.068  000.068: require('mason-lspconfig.notify')
031.489  000.141  000.072: require('mason-lspconfig.lspconfig_hook')
031.639  000.070  000.070: require('mason-core.functional.table')
031.662  000.172  000.102: require('mason-lspconfig.mappings.server')
031.803  000.064  000.064: require('mason-core.EventEmitter')
031.941  000.138  000.138: require('mason-core.optional')
032.197  000.075  000.075: require('mason-core.async')
032.494  000.295  000.295: require('mason-core.async.uv')
032.497  000.539  000.169: require('mason-core.fs')
032.506  000.843  000.101: require('mason-registry')
032.577  000.070  000.070: require('mason-lspconfig.server_config_extensions')
032.672  000.094  000.094: require('lspconfig.server_configurations.omnisharp')
032.794  000.068  000.068: require('mason-lspconfig.ensure_installed')
033.171  000.073  000.073: require('mason-core.result')
033.202  000.174  000.101: require('mason-core.purl')
033.208  000.336  000.161: require('mason-core.package')
033.542  000.173  000.173: require('mason-core.process')
033.625  000.082  000.082: require('mason-core.spawn')
033.627  000.329  000.074: require('mason-core.managers.powershell')
033.628  000.420  000.091: require('mason-core.fetch')
033.698  000.069  000.069: require('mason-core.providers')
034.086  000.083  000.083: require('mason-core.installer.registry.expr')
034.094  000.231  000.148: require('mason-core.installer.registry.link')
034.705  000.113  000.113: require('mason-core.receipt')
034.717  000.334  000.221: require('mason-core.installer.context')
034.797  000.079  000.079: require('mason-core.async.control')
034.887  000.089  000.089: require('mason-core.installer.linker')
034.890  000.605  000.103: require('mason-core.installer')
034.904  000.711  000.106: require('mason-core.installer.managers.std')
034.905  000.810  000.099: require('mason-core.installer.registry.schemas')
034.911  001.212  000.170: require('mason-core.installer.registry')
034.917  002.120  000.084: require('mason-registry.sources.github')
038.595  000.080  000.080: require('mason-core.functional.number')
038.607  000.185  000.105: require('mason-lspconfig.api.command')
038.689  000.080  000.080: require('lspconfig.server_configurations.lua_ls')
041.007  000.186  000.186: require('lspconfig.server_configurations.tailwindcss')
041.882  000.184  000.184: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/plenary.nvim/plugin/plenary.vim
042.774  000.094  000.094: require('plenary.bit')
042.925  000.150  000.150: require('plenary.functional')
042.937  000.450  000.206: require('plenary.path')
043.298  000.171  000.171: require('plenary.strings')
043.300  000.262  000.091: require('plenary.window.border')
043.778  000.477  000.477: require('plenary.window')
043.880  000.101  000.101: require('plenary.popup.utils')
043.882  000.945  000.105: require('plenary.popup')
043.984  000.101  000.101: require('elixir.elixirls.version')
044.230  000.168  000.168: require('plenary.job')
044.298  000.068  000.068: require('elixir.utils')
044.299  000.314  000.079: require('elixir.elixirls.download')
044.403  000.036  000.036: require('vim.inspect')
044.520  000.220  000.185: require('elixir.elixirls.compile')
044.570  002.176  000.146: require('elixir.elixirls')
044.667  000.096  000.096: require('elixir.credo')
044.921  000.062  000.062: require('elixir.mix.git')
044.922  000.125  000.062: require('elixir.mix.exs')
044.923  000.189  000.064: require('elixir.mix.wrapper')
044.925  000.256  000.068: require('elixir.mix')
045.072  000.147  000.147: require('elixir.projectionist')
045.077  003.167  000.491: require('elixir')
046.489  000.106  000.106: require('vim.treesitter.language')
046.493  000.274  000.167: require('vim.treesitter.query')
046.614  000.121  000.121: require('vim.treesitter._range')
046.618  000.577  000.183: require('vim.treesitter.languagetree')
046.620  000.836  000.258: require('vim.treesitter')
046.893  000.271  000.271: require('vim.treesitter.highlighter')
047.025  000.131  000.131: require('treesitter-context.cache')
048.493  000.159  000.159: require('nvim-treesitter.compat')
049.306  000.576  000.576: require('nvim-treesitter.parsers')
049.394  000.087  000.087: require('nvim-treesitter.utils')
049.399  000.832  000.168: require('nvim-treesitter.ts_utils')
049.401  000.907  000.076: require('nvim-treesitter.tsrange')
049.475  000.073  000.073: require('nvim-treesitter.caching')
049.480  001.331  000.191: require('nvim-treesitter.query')
049.502  001.533  000.203: require('nvim-treesitter.configs')
049.503  001.986  000.452: require('nvim-treesitter-textobjects')
049.944  000.179  000.179: require('nvim-treesitter.info')
050.161  000.217  000.217: require('nvim-treesitter.shell_command_selectors')
050.182  000.592  000.197: require('nvim-treesitter.install')
050.282  000.098  000.098: require('nvim-treesitter.statusline')
050.534  000.251  000.251: require('nvim-treesitter.query_predicates')
050.535  001.031  000.089: require('nvim-treesitter')
051.021  000.179  000.179: require('nvim-treesitter.textobjects.shared')
051.025  000.483  000.304: require('nvim-treesitter.textobjects.select')
051.541  000.167  000.167: require('nvim-treesitter.textobjects.attach')
051.638  000.095  000.095: require('nvim-treesitter.textobjects.repeatable_move')
051.642  000.598  000.336: require('nvim-treesitter.textobjects.move')
051.864  000.149  000.149: require('nvim-treesitter.textobjects.swap')
052.696  000.821  000.821: require('nvim-treesitter.textobjects.lsp_interop')
052.708  005.330  000.262: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-textobjects/plugin/nvim-treesitter-textobjects.vim
053.340  000.369  000.369: require('nvim-treesitter-textsubjects')
053.342  000.474  000.104: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-textsubjects/plugin/nvim-treesitter-textsubjects.vim
053.951  000.075  000.075: require('nvim-tree-docs.aniseed.autoload')
053.954  000.405  000.331: require('nvim-tree-docs.main')
053.958  000.513  000.108: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-tree-docs/plugin/nvim-tree-docs.vim
054.481  000.309  000.309: require('ts_context_commentstring')
054.483  000.411  000.102: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-ts-context-commentstring/plugin/ts_context_commentstring.vim
054.932  000.309  000.309: require('nvim-treesitter-endwise')
054.934  000.358  000.049: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-endwise/plugin/nvim-treesitter-endwise.lua
055.771  000.071  000.071: require('nvim-ts-autotag._log')
055.773  000.154  000.083: require('nvim-ts-autotag.utils')
055.781  000.337  000.183: require('nvim-ts-autotag.internal')
055.782  000.651  000.314: require('nvim-ts-autotag')
055.785  000.749  000.098: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-ts-autotag/plugin/nvim-ts-autotag.vim
056.313  000.333  000.333: require('rainbow')
056.319  000.430  000.097: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-ts-rainbow/plugin/rainbow.vim
057.235  000.673  000.673: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter/plugin/nvim-treesitter.lua
062.688  000.078  000.078: require('ts_context_commentstring.utils')
062.692  000.219  000.141: require('ts_context_commentstring.internal')
063.108  000.131  000.131: require('nvim-treesitter.endwise')
063.541  000.266  000.266: require('nvim-treesitter.indent')
063.709  000.132  000.132: require('rainbow.internal')
063.873  000.131  000.131: require('nvim-treesitter.highlight')
064.314  000.166  000.166: require('nvim-treesitter.locals')
064.316  000.430  000.264: require('nvim-treesitter.incremental_selection')
064.324  017.299  007.052: require('nvim-treesitter.parsers')
064.343  018.950  000.414: require('treesitter-context')
064.344  019.057  000.106: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-context/plugin/treesitter-context.vim
065.189  000.181  000.181: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/vim-tmux-navigator/plugin/tmux_navigator.vim
065.903  000.402  000.402: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/vim-surround/plugin/surround.vim
066.492  000.252  000.252: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/auto-pairs/plugin/auto-pairs.vim
067.786  000.325  000.325: require('Comment.config')
068.125  000.181  000.181: require('Comment.ft')
068.127  000.340  000.159: require('Comment.utils')
068.199  000.071  000.071: require('Comment.opfunc')
068.269  000.069  000.069: require('Comment.extra')
068.287  001.323  000.519: require('Comment.api')
068.354  001.567  000.243: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/Comment.nvim/plugin/Comment.lua
068.434  000.069  000.069: require('Comment')
068.807  000.236  000.236: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/vim-endwise/plugin/endwise.vim
069.429  000.324  000.324: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/CamelCaseMotion/plugin/camelcasemotion.vim
070.207  000.471  000.471: require('vim.filetype')
070.893  000.310  000.310: require('vim.filetype.detect')
071.683  000.192  000.192: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/ftplugin/elixir.vim
073.885  000.210  000.210: require('vim.uri')
680.321  000.315  000.315: require('rainbow.levels')
754.686  000.946  000.946: require('editorconfig')
755.967  000.374  000.374: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/autoload/provider/clipboard.vim
756.272  693.636: opening buffers
778.899  022.627: BufEnter autocommands
778.902  000.003: editing files in windows
779.041  000.139: VimEnter autocommands
779.068  000.027: UIEnter autocommands
779.070  000.002: before starting main loop
901.259  122.189: first screen update
901.262  000.003: --- NVIM STARTED ---


times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

000.006  000.006: --- NVIM STARTING ---
000.102  000.097: event init
000.227  000.124: early init
000.430  000.204: locale set
000.507  000.077: init first window
000.764  000.258: inits 1
000.769  000.004: window checked
000.846  000.077: parsing arguments
001.209  000.020  000.020: require('vim.shared')
001.256  000.020  000.020: require('vim._meta')
001.257  000.047  000.027: require('vim._editor')
001.258  000.110  000.044: require('vim._init_packages')
001.259  000.303: init lua interpreter
001.431  000.172: expanding arguments
001.439  000.009: inits 2
001.652  000.213: init highlight

--startuptime after.txt



times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

000.004  000.004: --- NVIM STARTING ---
000.041  000.037: event init
000.100  000.059: early init
000.297  000.197: locale set
000.318  000.021: init first window
000.481  000.163: inits 1
000.491  000.010: window checked
000.562  000.071: parsing arguments
000.817  000.019  000.019: require('vim.shared')
000.864  000.021  000.021: require('vim._meta')
000.865  000.047  000.026: require('vim._editor')
000.866  000.105  000.039: require('vim._init_packages')
000.866  000.200: init lua interpreter
002.130  001.263: expanding arguments
002.150  000.020: inits 2
002.304  000.155: init highlight
002.305  000.001: waiting for UI
002.441  000.136: done waiting for UI
002.452  000.011: clear screen
002.638  000.186: init default mappings & autocommands
003.073  000.171  000.171: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/ftplugin.vim
003.270  000.142  000.142: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/indent.vim
004.005  000.477  000.477: require('keybinds')
004.193  000.186  000.186: require('lazy')
004.214  000.011  000.011: require('ffi')
004.237  000.021  000.021: require('vim.loader')
004.306  000.020  000.020: require('vim.fs')
004.490  000.234  000.214: require('lazy.stats')
004.708  000.199  000.199: require('lazy.core.util')
004.958  000.248  000.248: require('lazy.core.config')
005.274  000.144  000.144: require('lazy.core.handler')
005.435  000.160  000.160: require('lazy.core.plugin')
005.439  000.480  000.176: require('lazy.core.loader')
005.842  000.253  000.253: require('plugins')
006.053  000.167  000.167: require('plugins.cmp')
006.636  000.350  000.350: require('plugins.elixir')
006.873  000.206  000.206: require('plugins.fzf')
007.085  000.204  000.204: require('plugins.lsp')
007.339  000.134  000.134: require('plugins.noice')
007.683  000.213  000.213: require('plugins.treesitter')
008.266  000.220  000.220: require('lazy.core.handler.keys')
008.475  000.204  000.204: require('lazy.core.handler.cmd')
008.768  000.291  000.291: require('lazy.core.handler.event')
008.908  000.138  000.138: require('lazy.core.handler.ft')
008.989  000.003  000.003: require('vim.keymap')
009.835  000.298  000.298: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/filetype.lua
010.224  000.300  000.300: require('gruvbox')
010.559  000.158  000.158: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/editorconfig.lua
010.794  000.187  000.187: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/gzip.vim
010.969  000.128  000.128: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/man.lua
011.903  000.262  000.262: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim
012.012  001.002  000.740: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/matchit.vim
012.183  000.122  000.122: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/matchparen.vim
012.422  000.191  000.191: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/netrwPlugin.vim
012.623  000.152  000.152: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/nvim.lua
012.776  000.111  000.111: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/rplugin.vim
012.869  000.052  000.052: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/shada.vim
012.953  000.043  000.043: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/spellfile.vim
013.068  000.063  000.063: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/tarPlugin.vim
013.191  000.067  000.067: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/tohtml.vim
013.260  000.028  000.028: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/tutor.vim
013.401  000.081  000.081: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/zipPlugin.vim
013.683  000.038  000.038: sourcing /Users/mitchell/.config/nj-nvim/config/functions.vim
013.879  000.153  000.153: sourcing /Users/mitchell/.config/nj-nvim/config/keybinds.vim
015.291  000.585  000.585: require('vim.version')
016.218  000.373  000.373: require('gruvbox.groups')
016.422  000.202  000.202: require('gruvbox.palette')
017.190  002.563  001.404: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/gruvbox.nvim/colors/gruvbox.lua
017.200  003.278  000.715: sourcing /Users/mitchell/.config/nj-nvim/config/interface.vim
017.354  000.103  000.103: sourcing /Users/mitchell/.config/nj-nvim/config/settings.vim
017.548  000.128  000.128: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/macros/matchit.vim
017.575  014.223  003.300: sourcing /Users/mitchell/.config/nj-nvim/init.lua
017.579  000.406: sourcing vimrc file(s)
017.671  000.034  000.034: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/filetype.lua
017.970  000.096  000.096: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/syntax/synload.vim
018.012  000.276  000.181: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/syntax/syntax.vim
018.018  000.128: inits 3
018.363  000.345: reading ShaDa
019.777  000.144  000.144: require('vim.treesitter.language')
019.782  000.330  000.186: require('vim.treesitter.query')
019.920  000.138  000.138: require('vim.treesitter._range')
019.924  000.681  000.213: require('vim.treesitter.languagetree')
019.927  000.877  000.196: require('vim.treesitter')
020.173  000.245  000.245: require('vim.treesitter.highlighter')
020.356  000.182  000.182: require('treesitter-context.cache')
021.902  000.155  000.155: require('nvim-treesitter.compat')
022.838  000.624  000.624: require('nvim-treesitter.parsers')
022.930  000.091  000.091: require('nvim-treesitter.utils')
022.933  000.895  000.180: require('nvim-treesitter.ts_utils')
022.937  001.033  000.138: require('nvim-treesitter.tsrange')
023.038  000.101  000.101: require('nvim-treesitter.caching')
023.051  001.498  000.208: require('nvim-treesitter.query')
023.062  001.758  000.261: require('nvim-treesitter.configs')
023.064  002.189  000.431: require('nvim-treesitter-textobjects')
023.659  000.324  000.324: require('nvim-treesitter.info')
023.920  000.260  000.260: require('nvim-treesitter.shell_command_selectors')
023.938  000.783  000.199: require('nvim-treesitter.install')
024.008  000.069  000.069: require('nvim-treesitter.statusline')
024.252  000.244  000.244: require('nvim-treesitter.query_predicates')
024.254  001.189  000.094: require('nvim-treesitter')
024.715  000.164  000.164: require('nvim-treesitter.textobjects.shared')
024.717  000.460  000.296: require('nvim-treesitter.textobjects.select')
025.242  000.162  000.162: require('nvim-treesitter.textobjects.attach')
025.331  000.089  000.089: require('nvim-treesitter.textobjects.repeatable_move')
025.342  000.615  000.364: require('nvim-treesitter.textobjects.move')
025.538  000.134  000.134: require('nvim-treesitter.textobjects.swap')
026.353  000.804  000.804: require('nvim-treesitter.textobjects.lsp_interop')
026.373  005.615  000.224: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-textobjects/plugin/nvim-treesitter-textobjects.vim
026.878  000.298  000.298: require('nvim-treesitter-textsubjects')
026.880  000.390  000.092: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-textsubjects/plugin/nvim-treesitter-textsubjects.vim
027.527  000.072  000.072: require('nvim-tree-docs.aniseed.autoload')
027.529  000.446  000.374: require('nvim-tree-docs.main')
027.533  000.547  000.101: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-tree-docs/plugin/nvim-tree-docs.vim
028.084  000.330  000.330: require('ts_context_commentstring')
028.086  000.437  000.106: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-ts-context-commentstring/plugin/ts_context_commentstring.vim
028.591  000.331  000.331: require('nvim-treesitter-endwise')
028.593  000.401  000.070: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-endwise/plugin/nvim-treesitter-endwise.lua
029.443  000.091  000.091: require('nvim-ts-autotag._log')
029.444  000.171  000.080: require('nvim-ts-autotag.utils')
029.449  000.353  000.182: require('nvim-ts-autotag.internal')
029.450  000.659  000.306: require('nvim-ts-autotag')
029.451  000.754  000.095: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-ts-autotag/plugin/nvim-ts-autotag.vim
029.898  000.266  000.266: require('rainbow')
029.904  000.368  000.102: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-ts-rainbow/plugin/rainbow.vim
030.630  000.535  000.535: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter/plugin/nvim-treesitter.lua
034.766  000.115  000.115: require('nvim-treesitter.endwise')
035.163  000.141  000.141: require('rainbow.internal')
035.432  000.246  000.246: require('nvim-treesitter.indent')
035.795  000.176  000.176: require('nvim-treesitter.locals')
035.797  000.354  000.178: require('nvim-treesitter.incremental_selection')
036.051  000.102  000.102: require('ts_context_commentstring.utils')
036.059  000.215  000.112: require('ts_context_commentstring.internal')
036.227  000.126  000.126: require('nvim-treesitter.highlight')
036.230  015.873  005.628: require('nvim-treesitter.parsers')
036.248  017.604  000.428: require('treesitter-context')
036.250  017.708  000.104: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-context/plugin/treesitter-context.vim
037.663  000.207  000.207: require('vim.lsp.log')
038.131  000.467  000.467: require('vim.lsp.protocol')
038.823  000.538  000.538: require('vim.lsp._snippet')
039.020  000.196  000.196: require('vim.highlight')
039.037  000.012  000.012: require('vim.F')
039.046  000.913  000.168: require('vim.lsp.util')
039.060  001.829  000.242: require('vim.lsp.handlers')
039.251  000.189  000.189: require('vim.lsp.rpc')
039.427  000.175  000.175: require('vim.lsp.sync')
039.602  000.174  000.174: require('vim.lsp.semantic_tokens')
039.781  000.177  000.177: require('vim.lsp.buf')
039.922  000.140  000.140: require('vim.lsp.diagnostic')
040.039  000.116  000.116: require('vim.lsp.codelens')
040.089  003.157  000.356: require('vim.lsp')
040.514  003.748  000.591: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-lspconfig/plugin/lspconfig.lua
041.375  000.231  000.231: require('lspconfig.util')
041.376  000.390  000.159: require('lspconfig.configs')
041.378  000.852  000.461: require('lspconfig')
042.652  000.483  000.483: require('cmp_nvim_lsp.source')
042.654  000.895  000.412: require('cmp_nvim_lsp')
042.661  001.051  000.156: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua
042.666  001.287  000.236: require('cmp_nvim_lsp')
043.015  000.160  000.160: require('mason-core.path')
043.484  000.273  000.273: require('mason-core.functional')
043.616  000.060  000.060: require('mason-core.functional.data')
043.619  000.125  000.066: require('mason-core.functional.function')
043.684  000.060  000.060: require('mason-core.functional.relation')
043.746  000.059  000.059: require('mason-core.functional.logic')
043.759  000.744  000.227: require('mason-core.platform')
043.824  000.064  000.064: require('mason.settings')
043.826  001.101  000.133: require('mason')
044.395  000.307  000.307: require('mason-core.functional.list')
044.472  000.075  000.075: require('mason-core.functional.string')
044.485  000.572  000.191: require('mason.api.command')
044.570  000.082  000.082: require('mason-registry.sources')
044.747  000.086  000.086: require('mason-core.log')
044.814  000.066  000.066: require('mason-lspconfig.settings')
044.816  000.232  000.080: require('mason-lspconfig')
044.944  000.059  000.059: require('mason-lspconfig.notify')
044.946  000.125  000.066: require('mason-lspconfig.lspconfig_hook')
045.103  000.067  000.067: require('mason-core.functional.table')
045.126  000.163  000.097: require('mason-lspconfig.mappings.server')
045.274  000.066  000.066: require('mason-core.EventEmitter')
045.431  000.156  000.156: require('mason-core.optional')
045.684  000.075  000.075: require('mason-core.async')
045.925  000.240  000.240: require('mason-core.async.uv')
045.928  000.495  000.181: require('mason-core.fs')
045.936  000.809  000.092: require('mason-registry')
045.997  000.060  000.060: require('mason-lspconfig.server_config_extensions')
046.064  000.066  000.066: require('lspconfig.server_configurations.omnisharp')
046.170  000.061  000.061: require('mason-lspconfig.ensure_installed')
046.546  000.064  000.064: require('mason-core.result')
046.577  000.161  000.097: require('mason-core.purl')
046.583  000.336  000.175: require('mason-core.package')
046.951  000.241  000.241: require('mason-core.process')
047.023  000.071  000.071: require('mason-core.spawn')
047.024  000.375  000.063: require('mason-core.managers.powershell')
047.025  000.442  000.067: require('mason-core.fetch')
047.093  000.067  000.067: require('mason-core.providers')
047.490  000.099  000.099: require('mason-core.installer.registry.expr')
047.497  000.264  000.165: require('mason-core.installer.registry.link')
048.022  000.093  000.093: require('mason-core.receipt')
048.049  000.292  000.199: require('mason-core.installer.context')
048.126  000.076  000.076: require('mason-core.async.control')
048.220  000.093  000.093: require('mason-core.installer.linker')
048.223  000.561  000.100: require('mason-core.installer')
048.236  000.670  000.109: require('mason-core.installer.managers.std')
048.237  000.740  000.070: require('mason-core.installer.registry.schemas')
048.242  001.148  000.144: require('mason-core.installer.registry')
048.250  002.072  000.079: require('mason-registry.sources.github')
051.895  000.074  000.074: require('mason-core.functional.number')
051.906  000.171  000.097: require('mason-lspconfig.api.command')
051.993  000.085  000.085: require('lspconfig.server_configurations.lua_ls')
052.917  000.104  000.104: require('lspconfig.server_configurations.tailwindcss')
053.713  000.127  000.127: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/plenary.nvim/plugin/plenary.vim
054.955  000.104  000.104: require('plenary.bit')
055.108  000.152  000.152: require('plenary.functional')
055.120  000.481  000.225: require('plenary.path')
055.683  000.191  000.191: require('plenary.strings')
055.689  000.352  000.161: require('plenary.window.border')
055.924  000.235  000.235: require('plenary.window')
056.396  000.470  000.470: require('plenary.popup.utils')
056.402  001.281  000.223: require('plenary.popup')
056.541  000.138  000.138: require('elixir.elixirls.version')
056.965  000.295  000.295: require('plenary.job')
057.057  000.092  000.092: require('elixir.utils')
057.058  000.517  000.130: require('elixir.elixirls.download')
057.158  000.036  000.036: require('vim.inspect')
057.233  000.174  000.138: require('elixir.elixirls.compile')
057.304  003.048  000.457: require('elixir.elixirls')
057.422  000.117  000.117: require('elixir.credo')
057.693  000.059  000.059: require('elixir.mix.git')
057.694  000.124  000.065: require('elixir.mix.exs')
057.695  000.191  000.067: require('elixir.mix.wrapper')
057.697  000.273  000.082: require('elixir.mix')
057.840  000.143  000.143: require('elixir.projectionist')
057.846  004.086  000.506: require('elixir')
058.873  000.178  000.178: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/vim-tmux-navigator/plugin/tmux_navigator.vim
059.457  000.281  000.281: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/CamelCaseMotion/plugin/camelcasemotion.vim
060.839  000.270  000.270: require('Comment.config')
061.163  000.170  000.170: require('Comment.ft')
061.166  000.325  000.155: require('Comment.utils')
061.231  000.064  000.064: require('Comment.opfunc')
061.293  000.061  000.061: require('Comment.extra')
061.295  001.218  000.497: require('Comment.api')
061.371  001.437  000.219: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/Comment.nvim/plugin/Comment.lua
061.470  000.073  000.073: require('Comment')
061.872  000.249  000.249: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/vim-endwise/plugin/endwise.vim
062.577  000.410  000.410: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/vim-surround/plugin/surround.vim
063.090  000.226  000.226: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/auto-pairs/plugin/auto-pairs.vim
063.611  000.450  000.450: require('vim.filetype')
064.294  000.286  000.286: require('vim.filetype.detect')
065.271  000.219  000.219: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/ftplugin/elixir.vim
238.125  000.261  000.261: require('rainbow.levels')
307.641  000.875  000.875: require('vim.uri')
310.151  000.417  000.417: require('editorconfig')
311.015  000.268  000.268: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/autoload/provider/clipboard.vim
311.256  253.750: opening buffers
334.918  023.662: BufEnter autocommands
334.923  000.005: editing files in windows
335.062  000.139: VimEnter autocommands
335.089  000.027: UIEnter autocommands
335.091  000.003: before starting main loop
452.434  117.343: first screen update
452.437  000.003: --- NVIM STARTED ---


times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

000.005  000.005: --- NVIM STARTING ---
000.080  000.075: event init
000.185  000.105: early init
000.518  000.332: locale set
000.574  000.057: init first window
000.790  000.216: inits 1
000.795  000.004: window checked
000.877  000.082: parsing arguments
001.229  000.020  000.020: require('vim.shared')
001.277  000.020  000.020: require('vim._meta')
001.278  000.047  000.027: require('vim._editor')
001.278  000.110  000.043: require('vim._init_packages')
001.279  000.292: init lua interpreter
001.444  000.165: expanding arguments
001.454  000.010: inits 2
001.658  000.204: init highlight

--startuptime noplugin.txt



times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

000.004  000.004: --- NVIM STARTING ---
000.042  000.038: event init
000.099  000.057: early init
000.327  000.228: locale set
000.349  000.022: init first window
000.510  000.161: inits 1
000.520  000.010: window checked
000.589  000.069: parsing arguments
000.842  000.031  000.031: require('vim.shared')
000.889  000.020  000.020: require('vim._meta')
000.890  000.046  000.026: require('vim._editor')
000.891  000.112  000.034: require('vim._init_packages')
000.891  000.190: init lua interpreter
002.230  001.339: expanding arguments
002.251  000.021: inits 2
002.403  000.152: init highlight
002.404  000.001: waiting for UI
002.504  000.100: done waiting for UI
002.515  000.011: clear screen
002.624  000.110: init default mappings & autocommands
004.248  000.202  000.202: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/ftplugin.vim
004.444  000.142  000.142: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/indent.vim
005.202  000.478  000.478: require('keybinds')
005.379  000.177  000.177: require('lazy')
005.399  000.011  000.011: require('ffi')
005.419  000.018  000.018: require('vim.loader')
005.483  000.020  000.020: require('vim.fs')
005.819  000.382  000.362: require('lazy.stats')
006.035  000.196  000.196: require('lazy.core.util')
006.275  000.239  000.239: require('lazy.core.config')
006.602  000.141  000.141: require('lazy.core.handler')
006.728  000.124  000.124: require('lazy.core.plugin')
006.731  000.455  000.189: require('lazy.core.loader')
007.096  000.215  000.215: require('plugins')
007.301  000.162  000.162: require('plugins.cmp')
007.459  000.134  000.134: require('plugins.elixir')
007.645  000.184  000.184: require('plugins.fzf')
007.812  000.159  000.159: require('plugins.lsp')
007.949  000.117  000.117: require('plugins.noice')
008.134  000.179  000.179: require('plugins.treesitter')
008.719  000.351  000.351: require('lazy.core.handler.event')
008.884  000.162  000.162: require('lazy.core.handler.ft')
009.252  000.366  000.366: require('lazy.core.handler.keys')
009.406  000.152  000.152: require('lazy.core.handler.cmd')
009.557  000.010  000.010: require('vim.keymap')
010.743  000.536  000.536: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/filetype.lua
011.165  000.352  000.352: require('gruvbox')
011.533  000.200  000.200: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/editorconfig.lua
011.775  000.188  000.188: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/gzip.vim
011.936  000.119  000.119: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/man.lua
012.617  000.230  000.230: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim
012.696  000.724  000.494: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/matchit.vim
012.908  000.175  000.175: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/matchparen.vim
013.119  000.175  000.175: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/netrwPlugin.vim
013.395  000.235  000.235: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/nvim.lua
013.559  000.122  000.122: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/rplugin.vim
013.704  000.101  000.101: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/shada.vim
013.792  000.046  000.046: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/spellfile.vim
013.910  000.066  000.066: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/tarPlugin.vim
014.025  000.074  000.074: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/tohtml.vim
014.108  000.029  000.029: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/tutor.vim
014.256  000.080  000.080: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/plugin/zipPlugin.vim
014.689  000.036  000.036: sourcing /Users/mitchell/.config/nj-nvim/config/functions.vim
014.886  000.154  000.154: sourcing /Users/mitchell/.config/nj-nvim/config/keybinds.vim
016.139  000.252  000.252: require('vim.version')
017.058  000.333  000.333: require('gruvbox.groups')
017.238  000.178  000.178: require('gruvbox.palette')
017.930  002.101  001.338: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/gruvbox.nvim/colors/gruvbox.lua
017.938  003.008  000.907: sourcing /Users/mitchell/.config/nj-nvim/config/interface.vim
018.059  000.071  000.071: sourcing /Users/mitchell/.config/nj-nvim/config/settings.vim
018.246  000.116  000.116: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/macros/matchit.vim
018.274  013.727  002.973: sourcing /Users/mitchell/.config/nj-nvim/init.lua
018.280  001.584: sourcing vimrc file(s)
018.385  000.037  000.037: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/filetype.lua
018.714  000.094  000.094: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/syntax/synload.vim
018.756  000.295  000.201: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/syntax/syntax.vim
018.762  000.150: inits 3
019.100  000.338: reading ShaDa
020.849  000.149  000.149: require('vim.lsp.log')
021.350  000.500  000.500: require('vim.lsp.protocol')
021.703  000.211  000.211: require('vim.lsp._snippet')
021.873  000.169  000.169: require('vim.highlight')
021.878  000.004  000.004: require('vim.F')
021.885  000.534  000.150: require('vim.lsp.util')
021.892  001.400  000.217: require('vim.lsp.handlers')
022.102  000.210  000.210: require('vim.lsp.rpc')
022.335  000.232  000.232: require('vim.lsp.sync')
022.639  000.303  000.303: require('vim.lsp.semantic_tokens')
022.870  000.229  000.229: require('vim.lsp.buf')
023.054  000.183  000.183: require('vim.lsp.diagnostic')
023.230  000.175  000.175: require('vim.lsp.codelens')
023.270  003.124  000.394: require('vim.lsp')
023.809  003.962  000.838: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-lspconfig/plugin/lspconfig.lua
025.733  000.212  000.212: require('lspconfig.util')
025.735  000.415  000.202: require('lspconfig.configs')
025.736  001.902  001.487: require('lspconfig')
027.178  000.514  000.514: require('cmp_nvim_lsp.source')
027.180  000.917  000.404: require('cmp_nvim_lsp')
027.187  001.112  000.194: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua
027.192  001.456  000.344: require('cmp_nvim_lsp')
027.783  000.157  000.157: require('mason-core.path')
028.259  000.271  000.271: require('mason-core.functional')
028.399  000.063  000.063: require('mason-core.functional.data')
028.402  000.134  000.071: require('mason-core.functional.function')
028.474  000.066  000.066: require('mason-core.functional.relation')
028.542  000.065  000.065: require('mason-core.functional.logic')
028.547  000.763  000.227: require('mason-core.platform')
028.617  000.069  000.069: require('mason.settings')
028.618  001.229  000.240: require('mason')
029.205  000.312  000.312: require('mason-core.functional.list')
029.274  000.067  000.067: require('mason-core.functional.string')
029.285  000.570  000.190: require('mason.api.command')
029.567  000.279  000.279: require('mason-registry.sources')
029.736  000.074  000.074: require('mason-core.log')
029.813  000.076  000.076: require('mason-lspconfig.settings')
029.817  000.246  000.096: require('mason-lspconfig')
030.080  000.187  000.187: require('mason-lspconfig.notify')
030.083  000.262  000.075: require('mason-lspconfig.lspconfig_hook')
030.245  000.083  000.083: require('mason-core.functional.table')
030.269  000.185  000.102: require('mason-lspconfig.mappings.server')
030.566  000.227  000.227: require('mason-core.EventEmitter')
030.770  000.203  000.203: require('mason-core.optional')
031.011  000.079  000.079: require('mason-core.async')
031.282  000.270  000.270: require('mason-core.async.uv')
031.286  000.499  000.150: require('mason-core.fs')
031.295  001.025  000.097: require('mason-registry')
031.358  000.062  000.062: require('mason-lspconfig.server_config_extensions')
031.424  000.065  000.065: require('lspconfig.server_configurations.omnisharp')
031.552  000.067  000.067: require('mason-lspconfig.ensure_installed')
031.956  000.069  000.069: require('mason-core.result')
031.990  000.199  000.131: require('mason-core.purl')
031.996  000.359  000.159: require('mason-core.package')
032.434  000.164  000.164: require('mason-core.process')
032.528  000.093  000.093: require('mason-core.spawn')
032.530  000.463  000.205: require('mason-core.managers.powershell')
032.531  000.534  000.072: require('mason-core.fetch')
032.693  000.160  000.160: require('mason-core.providers')
033.921  000.083  000.083: require('mason-core.installer.registry.expr')
033.929  000.242  000.159: require('mason-core.installer.registry.link')
034.614  000.095  000.095: require('mason-core.receipt')
034.625  000.280  000.185: require('mason-core.installer.context')
034.716  000.090  000.090: require('mason-core.async.control')
034.813  000.095  000.095: require('mason-core.installer.linker')
034.818  000.645  000.179: require('mason-core.installer')
034.837  000.820  000.175: require('mason-core.installer.managers.std')
034.839  000.909  000.089: require('mason-core.installer.registry.schemas')
034.844  002.150  000.999: require('mason-core.installer.registry')
034.850  003.295  000.091: require('mason-registry.sources.github')
038.606  000.078  000.078: require('mason-core.functional.number')
038.616  000.173  000.095: require('mason-lspconfig.api.command')
038.698  000.079  000.079: require('lspconfig.server_configurations.lua_ls')
042.100  000.221  000.221: require('lspconfig.server_configurations.tailwindcss')
044.127  000.106  000.106: require('vim.treesitter.language')
044.132  000.285  000.180: require('vim.treesitter.query')
044.339  000.206  000.206: require('vim.treesitter._range')
044.344  000.681  000.190: require('vim.treesitter.languagetree')
044.348  001.062  000.381: require('vim.treesitter')
044.543  000.194  000.194: require('vim.treesitter.highlighter')
044.648  000.103  000.103: require('treesitter-context.cache')
046.802  000.150  000.150: require('nvim-treesitter.compat')
047.652  000.426  000.426: require('nvim-treesitter.parsers')
047.737  000.084  000.084: require('nvim-treesitter.utils')
047.740  000.782  000.272: require('nvim-treesitter.ts_utils')
047.742  000.939  000.157: require('nvim-treesitter.tsrange')
047.828  000.086  000.086: require('nvim-treesitter.caching')
047.841  001.368  000.194: require('nvim-treesitter.query')
047.848  001.557  000.189: require('nvim-treesitter.configs')
047.849  002.069  000.512: require('nvim-treesitter-textobjects')
048.475  000.151  000.151: require('nvim-treesitter.info')
048.654  000.177  000.177: require('nvim-treesitter.shell_command_selectors')
048.663  000.517  000.189: require('nvim-treesitter.install')
048.745  000.081  000.081: require('nvim-treesitter.statusline')
048.962  000.216  000.216: require('nvim-treesitter.query_predicates')
048.964  001.114  000.299: require('nvim-treesitter')
049.437  000.149  000.149: require('nvim-treesitter.textobjects.shared')
049.439  000.472  000.323: require('nvim-treesitter.textobjects.select')
049.781  000.165  000.165: require('nvim-treesitter.textobjects.attach')
049.950  000.169  000.169: require('nvim-treesitter.textobjects.repeatable_move')
049.953  000.504  000.171: require('nvim-treesitter.textobjects.move')
050.149  000.125  000.125: require('nvim-treesitter.textobjects.swap')
050.992  000.832  000.832: require('nvim-treesitter.textobjects.lsp_interop')
051.019  005.735  000.620: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-textobjects/plugin/nvim-treesitter-textobjects.vim
051.507  000.289  000.289: require('nvim-treesitter-textsubjects')
051.510  000.388  000.099: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-textsubjects/plugin/nvim-treesitter-textsubjects.vim
052.056  000.067  000.067: require('nvim-tree-docs.aniseed.autoload')
052.058  000.326  000.259: require('nvim-tree-docs.main')
052.062  000.424  000.098: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-tree-docs/plugin/nvim-tree-docs.vim
052.663  000.318  000.318: require('ts_context_commentstring')
052.664  000.411  000.093: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-ts-context-commentstring/plugin/ts_context_commentstring.vim
053.044  000.261  000.261: require('nvim-treesitter-endwise')
053.046  000.303  000.041: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-endwise/plugin/nvim-treesitter-endwise.lua
054.053  000.060  000.060: require('nvim-ts-autotag._log')
054.054  000.136  000.076: require('nvim-ts-autotag.utils')
054.061  000.408  000.271: require('nvim-ts-autotag.internal')
054.062  000.661  000.254: require('nvim-ts-autotag')
054.064  000.748  000.087: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-ts-autotag/plugin/nvim-ts-autotag.vim
054.598  000.270  000.270: require('rainbow')
054.604  000.361  000.090: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-ts-rainbow/plugin/rainbow.vim
055.229  000.485  000.485: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter/plugin/nvim-treesitter.lua
060.332  000.296  000.296: require('nvim-treesitter.highlight')
060.470  000.107  000.107: require('nvim-treesitter.endwise')
061.092  000.203  000.203: require('nvim-treesitter.locals')
061.095  000.512  000.309: require('nvim-treesitter.incremental_selection')
061.267  000.141  000.141: require('rainbow.internal')
061.569  000.214  000.214: require('nvim-treesitter.indent')
061.774  000.085  000.085: require('ts_context_commentstring.utils')
061.781  000.175  000.090: require('ts_context_commentstring.internal')
061.783  017.135  006.835: require('nvim-treesitter.parsers')
061.805  019.054  000.559: require('treesitter-context')
061.806  019.154  000.100: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/nvim-treesitter-context/plugin/treesitter-context.vim
063.747  000.343  000.343: require('Comment.config')
064.209  000.306  000.306: require('Comment.ft')
064.214  000.466  000.160: require('Comment.utils')
064.326  000.111  000.111: require('Comment.opfunc')
064.436  000.110  000.110: require('Comment.extra')
064.444  001.510  000.480: require('Comment.api')
064.518  001.740  000.230: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/Comment.nvim/plugin/Comment.lua
064.675  000.133  000.133: require('Comment')
065.353  000.282  000.282: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/vim-endwise/plugin/endwise.vim
066.237  000.394  000.394: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/vim-surround/plugin/surround.vim
066.809  000.259  000.259: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/auto-pairs/plugin/auto-pairs.vim
067.595  000.284  000.284: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/vim-tmux-navigator/plugin/tmux_navigator.vim
068.218  000.304  000.304: sourcing /Users/mitchell/.local/share/nj-nvim/lazy/CamelCaseMotion/plugin/camelcasemotion.vim
068.854  000.499  000.499: require('vim.filetype')
069.663  000.387  000.387: require('vim.filetype.detect')
070.459  000.169  000.169: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/ftplugin/elixir.vim
072.640  000.216  000.216: require('vim.uri')
231.745  000.343  000.343: require('rainbow.levels')
304.914  000.448  000.448: require('editorconfig')
306.093  000.231  000.231: sourcing /Users/mitchell/.asdf/installs/neovim/ref-master/share/nvim/runtime/autoload/provider/clipboard.vim
306.330  247.311: opening buffers
328.204  021.874: BufEnter autocommands
328.206  000.002: editing files in windows
328.322  000.117: VimEnter autocommands
328.344  000.021: UIEnter autocommands
328.346  000.002: before starting main loop
439.011  110.665: first screen update
439.012  000.002: --- NVIM STARTED ---


times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

000.005  000.005: --- NVIM STARTING ---
000.057  000.052: event init
000.317  000.260: early init
000.707  000.390: locale set
000.745  000.038: init first window
000.973  000.228: inits 1
000.977  000.005: window checked
001.061  000.084: parsing arguments
001.347  000.035  000.035: require('vim.shared')
001.394  000.020  000.020: require('vim._meta')
001.395  000.046  000.026: require('vim._editor')
001.396  000.109  000.028: require('vim._init_packages')
001.397  000.227: init lua interpreter
001.570  000.173: expanding arguments
001.580  000.010: inits 2
001.755  000.175: init highlight

we are running `elixir --version` every single time we attach to an elixir filetype (on FileType), so
we need to schedule the callback for later as to not slow down BufEnter.

Fixes #59
@NJichev
Copy link
Contributor

NJichev commented May 6, 2023

I can confirm that it works.
I tried using main and was still getting the slow performance:

2027.139  000.139  000.139: sourcing ....
2027.266  1958.692: opening buffers
2027.629  000.364: BufEnter autocommands

And on this branch I am getting the improved performance:

285.376  000.020  000.020: require('vim.fs')
286.062  000.273  000.273: sourcing ....
286.197  172.006: opening buffers
306.798  020.601: BufEnter autocommands

@mhanberg
Copy link
Collaborator Author

mhanberg commented May 6, 2023

Odd that the difference is so huge on your computer, whereas mine went from 800->400

@mhanberg mhanberg merged commit 08b7843 into main May 6, 2023
@mhanberg mhanberg deleted the mh/fix-buf-start branch May 6, 2023 10:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Getting very slow neovim startup time after using elixir.nvim
2 participants