Bad performance after opening any typescript or css file
killerart opened this issue · 10 comments
After opening and typescript (react tsx) or css file, any actions become delayed by approximately 1 second like switching between buffers, switching to file tree, starting typing a command or opening/switching to a terminal. So any action just freezes nvim for an entire second.
I don't have any modifications to the code besides a few keymappings.
Neovim 8.3
M1 iMac
Started getting the issue after the "lazy" update
I think that's a bit of expected behaviour that UI will be frozen for 200-500ms because that's the time to load TypeScript Language Server tsserver
. Could you please show the output of :Lazy profile
, :Lazy debug
after opening a tsx
or css
file?
Did you install LSP servers via Mason or manually via npm/yarn?
You can always try to opt-out from using them and use faster alternative like bun
. I tried it but didn't have better results.
:Lazy profile
after opening a tsx
file:
Startuptime: 112.57ms
Based on the actual CPU time of the Neovim process till UIEnter.
This is more accurate than `nvim --startuptime`.
LazyStart 15.61ms
LazyDone 61.02ms (+45.42ms)
UIEnter 112.57ms (+51.55ms)
Profile
You can press <C-s> to change sorting between chronological order & time taken.
Press <C-f> to filter profiling entries that took more time than a given threshold
● lazy.nvim 5.09ms
➜ module 1.46ms
➜ config 0.2ms
➜ spec 1.84ms
★ config.plugins 1.35ms
➜ state 0.23ms
➜ install 0.02ms
➜ handlers 1.33ms
● startup 59.45ms
➜ runtime/filetype.lua 0.19ms
➜ init 0.01ms
★ init nvim-notify 0ms
➜ start 56.85ms
★ start tokyonight.nvim 6.98ms
★ start nvim-surround 2.03ms
★ start nvim-toggleterm.lua 1.61ms
★ start Comment.nvim 1.76ms
‒ Comment.nvim/plugin/Comment.lua 1.06ms
★ start neovim-session-manager 3.92ms
‒ neovim-session-manager/plugin/session_manager.lua 3.41ms
● plenary.nvim 0.27ms
➜ plenary.nvim/plugin/plenary.vim 0.2ms
★ start printer.nvim 0.75ms
★ start switch.vim 0.49ms
‒ switch.vim/plugin/switch.vim 0.42ms
★ start numb.nvim 0.63ms
★ start stay-in-place.nvim 0.41ms
★ start telescope.nvim 24.37ms
‒ popup.nvim 0.15ms
‒ telescope-fzf-native.nvim 0.18ms
‒ telescope-repo.nvim 0.18ms
‒ telescope.nvim/plugin/telescope.lua 0.25ms
‒ nvim-treesitter 9.36ms
● nvim-ts-rainbow 3.43ms
➜ nvim-ts-rainbow/plugin/rainbow.vim 3.18ms
● nvim-ts-context-commentstring 0.52ms
➜ nvim-ts-context-commentstring/plugin/ts_context_commentstring.vim 0.48ms
● nvim-treesitter-textobjects 1.63ms
➜ nvim-treesitter-textobjects/plugin/nvim-treesitter-textobjects.vim 1.55ms
● nvim-treesitter-textsubjects 0.52ms
➜ nvim-treesitter-textsubjects/plugin/nvim-treesitter-textsubjects.vim 0.48ms
● hlargs.nvim 1.11ms
● nvim-treesitter/plugin/nvim-treesitter.lua 0.48ms
‒ git-worktree.nvim 0.95ms
★ start alpha-nvim 9.55ms
★ start mini.align 1.08ms
★ start vim-repeat 0.05ms
★ start todo-comments.nvim 1.94ms
‒ todo-comments.nvim/plugin/todo.vim 0.2ms
★ start vim-speeddating 0.59ms
‒ vim-speeddating/plugin/speeddating.vim 0.5ms
★ start splitjoin.vim 0.57ms
‒ splitjoin.vim/plugin/splitjoin.vim 0.25ms
➜ rtp plugins 2.24ms
★ runtime/plugin/health.vim 0.06ms
★ runtime/plugin/man.lua 0.25ms
★ runtime/plugin/matchit.vim 1.25ms
★ runtime/plugin/matchparen.vim 0.15ms
★ runtime/plugin/rplugin.vim 0.23ms
★ runtime/plugin/shada.vim 0.09ms
★ runtime/plugin/spellfile.vim 0.06ms
➜ after 0.14ms
● which-key.nvim 2.8ms
➜ which-key.nvim/plugin/which-key.vim 0.21ms
● typescript.nvim 0.03ms
● nvim-lspconfig 3.81ms
➜ mason.nvim 0.35ms
➜ mason-lspconfig.nvim 0.26ms
➜ cmp-nvim-lsp 0.92ms
★ after/plugin/cmp_nvim_lsp.lua 0.65ms
➜ nvim-lspconfig/plugin/lspconfig.lua 2.22ms
● nvim-ufo 0.95ms
➜ promise-async 0.39ms
● LuaSnip 2.8ms
➜ friendly-snippets 0.38ms
➜ LuaSnip/plugin/luasnip.vim 2.13ms
➜ LuaSnip/ftdetect/snippets.vim 0.17ms
● nvim-gps 1.57ms
➜ nvim-gps/plugin/nvim-gps.vim 0.65ms
● VeryLazy 5.72ms
➜ galaxyline.nvim 3.64ms
★ galaxyline.nvim/plugin/galaxyline.vim 0.96ms
★ package-info.nvim 1.89ms
➜ dressing.nvim 2.06ms
★ nui.nvim 0.38ms
★ dressing.nvim/plugin/dressing.lua 0.84ms
● nvim-notify 3.28ms
● markdown 5.05ms
➜ markdown-preview.nvim 0.4ms
★ markdown-preview.nvim/plugin/mkdp.vim 0.3ms
➜ vim-table-mode 1.28ms
★ vim-table-mode/plugin/table-mode.vim 0.52ms
● nvim-tree.lua 16.41ms
➜ barbar.nvim 6.36ms
★ nvim-web-devicons 3.01ms
‒ nvim-web-devicons/plugin/nvim-web-devicons.vim 0.25ms
★ barbar.nvim/plugin/bufferline.lua 2.83ms
● BufReadPre 22.11ms
➜ gitsigns.nvim 13.89ms
★ trouble.nvim 4.43ms
‒ trouble.nvim/plugin/trouble.vim 0.32ms
➜ indent-blankline.nvim 3.63ms
★ indent-blankline.nvim/plugin/indent_blankline.vim 3.07ms
➜ null-ls.nvim 4.51ms
● BufRead 9.11ms
➜ diffview.nvim 9.03ms
★ diffview.nvim/plugin/diffview.lua 1.59ms
● typescriptreact 6.42ms
➜ template-string.nvim 2.46ms
● lsp-inlayhints.nvim 3.97ms
:Lazy debug
:
Active Handlers
This shows only the lazy handlers that are still active. When a plugin loads, its handlers are removed
● ChatGPT ChatGPT.nvim
● ChatGPTEditWithInstructions ChatGPT.nvim
● LazyGit lazygit.nvim
● LazyGitCurrentFile lazygit.nvim
● LazyGitFilter lazygit.nvim
● LazyGitFilterCurrentFile lazygit.nvim
● ZenMode zen-mode.nvim
● InsertEnter copilot.lua nvim-autopairs nvim-cmp
● <C-Down> vim-visual-multi
● <C-n> vim-visual-multi
● <C-Up> vim-visual-multi
● <Leader>da nvim-dap
● <Leader>db nvim-dap
● <Leader>dc nvim-dap
● <Leader>dd nvim-dap
● <Leader>dh nvim-dap
● <Leader>di nvim-dap
● <Leader>dO nvim-dap
● <Leader>do nvim-dap
● <Leader>dt nvim-dap
● <S-Down> vim-visual-multi
● <S-Left> vim-visual-multi
● <S-Right> vim-visual-multi
● <S-Up> vim-visual-multi
Cache.find()
total 766
time 57.055ms
avg time 0.074ms
index 93
fs_stat 1077
not found 45
I understand that tsserver is loading for quite a while and it is expected to freeze a little on the first open, but it happens even after it's loaded on every window change, or just moving the cursor to nvim-tree and back to tsx file. The tsserver should already be loaded by that point
I've installed LSP servers via Mason
I also have LuaJIT version 5.4.4_1, if that would help
I downgraded EcoVim to release 2.4.2 and the performance is great
I don't know what the issue was, but I cleared ~/.local/nvim
and ~/.cache/nvim
and it got fixed.
I am happy that's resolved! I couldn't reproduce it as well and didn't think that could be a cache problem.