ayamir / nvimdots

A well configured and structured Neovim.
BSD 3-Clause "New" or "Revised" License
2.95k stars 459 forks source link

Nvimdots starts up very slowly on the Windows platform, please help analyze this issue. #765

Closed sunchangtan closed 1 year ago

sunchangtan commented 1 year ago

Version confirmation

Following prerequisites

Neovim version

NVIM v0.9.0

Operating system/version

Windows 11 Professional Edition

Terminal name/version

Powershell 7.3.4

$TERM environment variable

No response

Branch info

main (Default/Latest)

Fetch Preferences

SSH (use_ssh = true)

Affected language servers

lua-language-server

How to reproduce the issue

  1. install vimdots
  2. launch nvim

Actual behavior

Nvimdots starts up very slowly on the Windows platform image

Expected behavior

The startup time is less than one second.

Support info

:LspInfo image

Logs

[START][2023-05-26 09:22:51] LSP logging initiated
[ERROR][2023-05-26 09:22:51] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:51.947] clangd version 16.0.2 (https://github.com/llvm/llvm-project 18ddebe1a1a9bde349441631365f0472e9693520)\r\nI[09:22:51.948] Features: windows+grpc\r\nI[09:22:51.948] PID: 23408\r\nI[09:22:51.948] Working directory: C:\\Users\\sunli\\AppData\\Local\\nvim\r\nI[09:22:51.948] argv[0]: C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\packages\\clangd\\clangd_16.0.2/bin/clangd.exe\r\nI[09:22:51.948] argv[1]: --background-index\r\nI[09:22:51.948] argv[2]: --pch-storage=memory\r\nI[09:22:51.948] argv[3]: --query-driver=[31;1mSet-PSReadLineOption: \27[0mE:\\sunli\\Documents\\PowerShell\\Microsoft.PowerShell_profile.ps1:38\27[0m\r\nI[09:22:51.951] Starting LSP over stdin/stdout\r\nI[09:22:51.952] <-- initialize(1)\r\nI[09:22:51.963] --> reply:initialize(1) 10 ms\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.022] <-- initialized\r\nI[09:22:52.022] <-- textDocument/didOpen\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "E[09:22:52.030] System include extraction: driver clang not found in PATH\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.031] <-- textDocument/semanticTokens/full(2)\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    'I[09:22:52.031] Failed to find compilation database for C:\\Users\\sunli\\AppData\\Local\\nvim\\test.c\r\nI[09:22:52.031] ASTWorker building file C:\\Users\\sunli\\AppData\\Local\\nvim\\test.c version 0 with command clangd fallback\r\n[C:\\Users\\sunli\\AppData\\Local\\nvim]\r\n"D:\\\\Scoop\\\\apps\\\\mingw\\\\12.2.0-rt_v10-rev2\\\\bin\\\\clang" "-resource-dir=C:\\\\Users\\\\sunli\\\\AppData\\\\Local\\\\nvim-data\\\\mason\\\\packages\\\\clangd\\\\clangd_16.0.2\\\\lib\\\\clang\\\\16" -- "C:\\\\Users\\\\sunli\\\\AppData\\\\Local\\\\nvim\\\\test.c"\r\n'
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.043] Indexing c17 standard library in the context of C:\\Users\\sunli\\AppData\\Local\\nvim\\test.c\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.043] Built preamble of size 224708 for file C:\\Users\\sunli\\AppData\\Local\\nvim\\test.c version 0 in 0.00 seconds\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.043] --> workspace/semanticTokens/refresh(0)\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.044] <-- $/cancelRequest\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.044] <-- textDocument/semanticTokens/full(3)\r\nI[09:22:52.044] <-- reply(0)\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.054] --> textDocument/publishDiagnostics\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.054] --> reply:textDocument/semanticTokens/full(2) 22 ms, error: Task was cancelled.\r\nI[09:22:52.054] --> reply:textDocument/semanticTokens/full(3) 10 ms\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.116] Indexed c17 standard library: 2698 symbols, 1058 filtered\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.146] <-- textDocument/documentSymbol(4)\r\nI[09:22:52.146] --> reply:textDocument/documentSymbol(4) 0 ms\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.306] <-- textDocument/signatureHelp(5)\r\n"
[ERROR][2023-05-26 09:22:52] .../vim/lsp/rpc.lua:734    "rpc"   "C:\\Users\\sunli\\AppData\\Local\\nvim-data\\mason\\bin\\clangd.CMD"   "stderr"    "I[09:22:52.320] --> reply:textDocument/signatureHelp(5) 13 ms\r\n"

Additional information

[ERROR 2023/5/26 9:22:51] ...on-lspconfig.nvim/lua/mason-lspconfig/lspconfig_hook.lua:84: Failed to expand cmd path html { "html-languageserver", "--stdio" }

CharlesChiuGit commented 1 year ago

[ERROR 2023/5/26 9:22:51] ...on-lspconfig.nvim/lua/mason-lspconfig/lspconfig_hook.lua:84: Failed to expand cmd path html { "html-languageserver", "--stdio" }

read the wiki

CharlesChiuGit commented 1 year ago

The startup time is less than one second.

It is how it is. No idea why.

ayamir commented 1 year ago

[ERROR 2023/5/26 9:22:51] ...on-lspconfig.nvim/lua/mason-lspconfig/lspconfig_hook.lua:84: Failed to expand cmd path html { "html-languageserver", "--stdio" }

npm i -g vscode-html-languageserver-bin

And ensure html-languageserver in your PATH.

sunchangtan commented 1 year ago

[ERROR 2023/5/26 9:22:51] ...on-lspconfig.nvim/lua/mason-lspconfig/lspconfig_hook.lua:84: Failed to expand cmd path html { "html-languageserver", "--stdio" }

npm i -g vscode-html-languageserver-bin

And ensure html-languageserver in your PATH.

@ayamir @CharlesChiuGit I've installed vscode-html-languageserver-bin, and it has loaded correctly, but the startup is still very slow

CharlesChiuGit commented 1 year ago

https://www.reddit.com/r/neovim/comments/13qraxk/extremely_slow_startup_on_windows/

This is why I hard coded some path before, but the settings has been removed now. U could also try other methods in the comments.

ayamir commented 1 year ago

Put the output of :checkhealth pls.

sunchangtan commented 1 year ago

@ayamir

==============================================================================
hop: require("hop.health").check()

Ensuring keys are unique ~
- OK Keys are unique

Checking for deprecated features ~
- OK All good

==============================================================================
lazy: require("lazy.health").check()

lazy.nvim ~
- OK Git installed
- OK no existing packages found by other package managers
- OK packer_compiled.lua not found

==============================================================================
lspsaga: require("lspsaga.health").check()

Lspsaga.nvim report ~
- OK `tree-sitter` found 
- OK tree-sitter `markdown` parser found
- OK tree-sitter `markdown_inline` parser found

==============================================================================
mason: require("mason.health").check()

mason.nvim ~
- WARNING mason.nvim version v1.0.1
  - ADVICE:
    - The latest version of mason.nvim is: v1.1.0
- OK PATH: prepend
- OK Providers: 
  mason.providers.registry-api
  mason.providers.client
- OK neovim version >= 0.7.0

mason.nvim [Registries] ~
- OK Registry `github.com/mason-org/mason-registry version: 2023-05-28-scant-platy` is installed.

mason.nvim [Core utils] ~
- WARNING unzip: not available
  - ADVICE:
    - spawn: unzip failed with exit code - and signal -. unzip is not executable
- OK wget: `GNU Wget 1.21.3 built on mingw32.
`
- OK curl: `curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN
`
- WARNING gzip: not available
  - ADVICE:
    - spawn: gzip failed with exit code - and signal -. gzip is not executable
- OK tar: `bsdtar 3.5.2 - libarchive 3.5.2 zlib/1.2.5.f-ipp bz2lib/1.0.6 
`
- OK pwsh: `7.3.4 Microsoft Windows 10.0.22621 Win32NT
`
- OK 7z: `7-Zip 22.01 (arm64) : Copyright (c) 1999-2022 Igor Pavlov : 2022-07-15
`

mason.nvim [Languages] ~
- WARNING luarocks: not available
  - ADVICE:
    - spawn: luarocks failed with exit code - and signal -. luarocks is not executable
- WARNING Composer: not available
  - ADVICE:
    - spawn: composer.bat failed with exit code - and signal -. composer.bat is not executable
- WARNING PHP: not available
  - ADVICE:
    - spawn: php failed with exit code - and signal -. php is not executable
- OK Go: `go version go1.20 windows/arm64`
- OK cargo: `cargo 1.67.0 (8ecd4f20a 2023-01-10)`
- WARNING javac: not available
  - ADVICE:
    - spawn: javac failed with exit code - and signal -. javac is not executable
- WARNING java: not available
  - ADVICE:
    - spawn: java failed with exit code - and signal -. java is not executable
- WARNING julia: not available
  - ADVICE:
    - spawn: julia failed with exit code - and signal -. julia is not executable
- WARNING Ruby: not available
  - ADVICE:
    - spawn: ruby failed with exit code 1 and signal 0. unexpected ucrtbase.dll

- WARNING RubyGem: not available
  - ADVICE:
    - spawn: gem.cmd failed with exit code 1 and signal 0. unexpected ucrtbase.dll

- OK python: `Python 3.11.1
`
- OK node: `v19.6.0
`
- OK python3_host_prog: `Python 3.11.1
`
- OK pip: `pip 22.3.1 from C:\Users\tank\scoop\apps\python\current\Lib\site-packages\pip (python 3.11)

`
- OK python3_host_prog pip: `pip 22.3.1 from C:\Users\tank\scoop\apps\python\current\Lib\site-packages\pip (python 3.11)

`
- OK npm: `9.4.0`

mason.nvim [GitHub] ~
- OK GitHub API rate limit. Used: 7. Remaining: 53. Limit: 60. Reset: 2023/5/28 19:21:49.
  Install and authenticate via gh-cli to increase rate limit.

==============================================================================
null-ls: require("null-ls.health").check()

- OK black: the command "black" is executable.
- ERROR clang_format: the command "clang-format" is not executable.
- OK prettier: the command "prettier" is executable.
- OK stylua: the command "stylua" is executable.
- OK vint: the command "vint" is executable.
- OK shfmt: the command "shfmt" is executable.
- OK rustfmt: the command "rustfmt" is executable.

==============================================================================
nvim: require("nvim.health").check()

Configuration ~
- OK no issues found

Runtime ~
- OK $VIMRUNTIME: C:\Users\tank\AppData\Local\Programs\Neovim\share\nvim\runtime

Performance ~
- OK Build type: RelWithDebInfo
- WARNING Slow shell invocation (took 1.56 seconds).

Remote Plugins ~
- WARNING "wilder.nvim" is not registered.
- WARNING Out of date
  - ADVICE:
    - Run `:UpdateRemotePlugins`

==============================================================================
nvim-treesitter: require("nvim-treesitter.health").check()

Installation ~
- OK `tree-sitter` found 0.20.8 (0c49d6745b3fc4822ab02e0018770cd6383a779c) (parser generator, only needed for :TSInstallFromGrammar)
- OK `node` found v19.6.0 (only needed for :TSInstallFromGrammar)
- OK `git` executable found.
- OK `gcc` executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl", "zig" }
  Version: Set-PSReadLineOption: C:\Users\tank\Documents\PowerShell\Microsoft.PowerShell_profile.ps1:38
- OK Neovim was compiled with tree-sitter runtime ABI version 14 (required >=13). Parsers must be compatible with runtime ABI.

OS Info:
{
  machine = "x86_64",
  release = "10.0.22621",
  sysname = "Windows_NT",
  version = "Windows 11 Pro"
} ~

Parser/Features         H L F I J
  - bash                ✓ ✓ ✓ . ✓
  - c                   ✓ ✓ ✓ ✓ ✓
  - cpp                 ✓ ✓ ✓ ✓ ✓
  - css                 ✓ . ✓ ✓ ✓
  - go                  ✓ ✓ ✓ ✓ ✓
  - gomod               ✓ . . . ✓
  - html                ✓ ✓ ✓ ✓ ✓
  - javascript          ✓ ✓ ✓ ✓ ✓
  - json                ✓ ✓ ✓ ✓ .
  - latex               ✓ . ✓ . ✓
  - lua                 ✓ ✓ ✓ ✓ ✓
  - make                ✓ . ✓ . ✓
  - markdown            ✓ . ✓ . ✓
  - markdown_inline     ✓ . . . ✓
  - python              ✓ ✓ ✓ ✓ ✓
  - rust                ✓ ✓ ✓ ✓ ✓
  - typescript          ✓ ✓ ✓ ✓ ✓
  - vimdoc              ✓ . . . ✓
  - vue                 ✓ . ✓ ✓ ✓
  - yaml                ✓ ✓ ✓ ✓ ✓

  Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[j]ections
         +) multiple parsers found, only one will be used
         x) errors found in the query, try to run :TSUpdate {lang} ~

==============================================================================
provider: health#provider#check

Clipboard (optional) ~
- OK Clipboard tool found: win32yank

Python 3 provider (optional) ~
- Using: g:python3_host_prog = "python3"
- Executable: C:\Users\tank\scoop\shims\python3.EXE
- ERROR Command error (job=5, exit code 1): `"C:\Users\tank\scoop\shims\python3.EXE" -c "import sys; sys.path = [p for p in sys.path if p != """"]; import neovim; print(neovim.__file__)"` (in 'C:\Users\tank\AppData\Local\nvim-data')
  stderr: Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\tank\AppData\Roaming\Python\Python311-arm64\site-packages\neovim\__init__.py", line 5, in <module>
    import pynvim
  File "C:\Users\tank\AppData\Roaming\Python\Python311-arm64\site-packages\pynvim\__init__.py", line 11, in <module>
    from pynvim.msgpack_rpc import (ErrorResponse, child_session, socket_session,
  File "C:\Users\tank\AppData\Roaming\Python\Python311-arm64\site-packages\pynvim\msgpack_rpc\__init__.py", line 10, in <module>
    from pynvim.msgpack_rpc.session import ErrorResponse, Session
  File "C:\Users\tank\AppData\Roaming\Python\Python311-arm64\site-packages\pynvim\msgpack_rpc\session.py", line 7, in <module>
    import greenlet
  File "C:\Users\tank\AppData\Roaming\Python\Python311-arm64\site-packages\greenlet\__init__.py", line 29, in <module>
    from ._greenlet import _C_API # pylint:disable=no-name-in-module
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: DLL load failed while importing _greenlet: %1 不是有效的 Win32 应用程序。
- Python version: 3.11.1
- pynvim version: unable to load neovim Python module
- ERROR pynvim is not installed.
  Error: unable to load neovim Python module
  - ADVICE:
    - Run in shell: C:\Users\tank\scoop\shims\python3.EXE -m pip install pynvim

Python virtualenv ~
- OK no $VIRTUAL_ENV

Ruby provider (optional) ~
- ERROR Command error (job=6, exit code 1): `ruby -v` (in 'C:\Users\tank\AppData\Local\nvim-data')
  stderr: unexpected ucrtbase.dll
- Ruby: 
- WARNING `neovim-ruby-host` not found.
  - ADVICE:
    - Run `gem install neovim` to ensure the neovim RubyGem is installed.
    - Run `gem environment` to ensure the gem bin directory is in $PATH.
    - If you are using rvm/rbenv/chruby, try "rehashing".
    - See :help |g:ruby_host_prog| for non-standard gem installations.
    - You may disable this provider (and warning) by adding `let g:loaded_ruby_provider = 0` to your init.vim

Node.js provider (optional) ~
- Node.js: v19.6.0
- Nvim node.js host: C:\Users\tank\scoop\persist\nodejs\bin\node_modules/neovim/bin/cli.js
- OK Latest "neovim" npm/yarn/pnpm package is installed: 4.10.1

Perl provider (optional) ~
- WARNING "Neovim::Ext" cpan module is not installed
  - ADVICE:
    - See :help |provider-perl| for more information.
    - You may disable this provider (and warning) by adding `let g:loaded_perl_provider = 0` to your init.vim

==============================================================================
vim.lsp: require("vim.lsp.health").check()

- LSP log level : WARN
- Log path: C:\Users\tank\AppData\Local\nvim-data\lsp.log
- Log size: 7 KB

vim.lsp: Active Clients ~
- No active clients

==============================================================================
vim.treesitter: require("vim.treesitter.health").check()

- Nvim runtime ABI version: 14
- OK Parser: bash       ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\bash.so
- OK Parser: c          ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\c.so
- OK Parser: cpp        ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\cpp.so
- OK Parser: css        ABI: 13, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\css.so
- OK Parser: go         ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\go.so
- OK Parser: gomod      ABI: 13, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\gomod.so
- OK Parser: html       ABI: 13, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\html.so
- OK Parser: javascript ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\javascript.so
- OK Parser: json       ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\json.so
- OK Parser: latex      ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\latex.so
- OK Parser: lua        ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\lua.so
- OK Parser: make       ABI: 13, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\make.so
- OK Parser: markdown   ABI: 13, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\markdown.so
- OK Parser: markdown_inline ABI: 13, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\markdown_inline.so
- OK Parser: python     ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\python.so
- OK Parser: rust       ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\rust.so
- OK Parser: typescript ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\typescript.so
- OK Parser: vimdoc     ABI: 14, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\vimdoc.so
- OK Parser: vue        ABI: 13, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\vue.so
- OK Parser: yaml       ABI: 13, path: C:\Users\tank\AppData\Local\nvim-data\site\lazy\nvim-treesitter\parser\yaml.so
- OK Parser: c          ABI: 14, path: C:\Users\tank\AppData\Local\Programs\Neovim\lib\nvim\parser\c.dll
- OK Parser: lua        ABI: 14, path: C:\Users\tank\AppData\Local\Programs\Neovim\lib\nvim\parser\lua.dll
- OK Parser: query      ABI: 14, path: C:\Users\tank\AppData\Local\Programs\Neovim\lib\nvim\parser\query.dll
- OK Parser: vim        ABI: 14, path: C:\Users\tank\AppData\Local\Programs\Neovim\lib\nvim\parser\vim.dll
- OK Parser: vimdoc     ABI: 14, path: C:\Users\tank\AppData\Local\Programs\Neovim\lib\nvim\parser\vimdoc.dll

==============================================================================
which-key: require("which-key.health").check()

WhichKey: checking conflicting keymaps ~
- WARNING conflicting keymap exists for mode **"n"**, lhs: **"gb"**
- rhs: `<Plug>(comment_toggle_blockwise)`
- WARNING conflicting keymap exists for mode **"n"**, lhs: **"gc"**
- rhs: `<Plug>(comment_toggle_linewise)`
- WARNING conflicting keymap exists for mode **"n"**, lhs: **" c"**
- rhs: `<Cmd>HopChar1<CR>`
- WARNING conflicting keymap exists for mode **"n"**, lhs: **"t"**
- rhs: `<Plug>(clever-f-t)`
- WARNING conflicting keymap exists for mode **"v"**, lhs: **" c"**
- rhs: `<Cmd>HopChar1<CR>`
sunchangtan commented 1 year ago

The previous version was not this slow.

ayamir commented 1 year ago

Error: unable to load neovim Python module

try solving this error?

Also put the content of log after executing nvim --startuptime log pls.

sunchangtan commented 1 year ago

I've reinstalled nvimdots, and now the startup speed is very fast. The only difference is that clangd is still being installed and hasn't been installed successfully.

sunchangtan commented 1 year ago

After clangd was installed successfully, the startup time increased to more than 4 seconds.

I deleted clangd again, and the startup speed is around 210 milliseconds.

CharlesChiuGit commented 1 year ago

So u r using this nvimdots with c/c++ projects? If so, then the extra 4 seconds delay is for lsp, which is clangd, to start. nvim is just waiting lsp to get ready.

sunchangtan commented 1 year ago

@ayamir

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

000.013  000.013: --- NVIM STARTING ---
000.054  000.042: event init
000.122  000.068: early init
024.280  024.158: locale set
024.334  000.054: init first window
024.715  000.381: inits 1
024.775  000.061: window checked
025.146  000.371: parsing arguments
025.977  000.245  000.245: require('vim.shared')
026.697  000.352  000.352: require('vim._meta')
026.704  000.721  000.368: require('vim._editor')
026.707  001.054  000.089: require('vim._init_packages')
026.732  000.532: init lua interpreter
026.951  000.219: expanding arguments
026.978  000.027: inits 2
027.415  000.437: init highlight
027.419  000.005: waiting for UI
027.590  000.171: done waiting for UI
027.596  000.006: clear screen
027.814  000.218: init default mappings & autocommands
029.735  000.070  000.070: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\ftplugin.vim
030.207  000.042  000.042: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\indent.vim
031.034  000.192  000.192: require('core.global')
031.723  000.351  000.351: require('core.options')
031.928  000.091  000.091: require('keymap.bind')
032.221  000.491  000.400: require('core.mapping')
032.370  000.058  000.058: require('keymap.helpers')
032.584  000.083  000.083: require('keymap.completion')
032.907  000.318  000.318: require('keymap.editor')
032.984  000.073  000.073: require('keymap.lang')
033.589  000.601  000.601: require('keymap.tool')
033.799  000.205  000.205: require('keymap.ui')
033.803  001.578  000.240: require('keymap')
034.147  000.342  000.342: require('core.event')
034.324  000.059  000.059: require('core.settings')
034.417  000.089  000.089: require('modules.utils.icons')
035.446  000.427  000.427: require('completion.lsp')
035.725  000.273  000.273: require('completion.lspsaga')
035.932  000.202  000.202: require('completion.null-ls')
036.208  000.272  000.272: require('completion.cmp')
036.407  000.196  000.196: require('completion.luasnip')
036.607  000.196  000.196: require('completion.copilot')
036.803  000.194  000.194: require('completion.copilot-cmp')
036.807  001.853  000.093: require('modules\plugins\completion')
037.194  000.215  000.215: require('editor.accelerated-jk')
037.404  000.206  000.206: require('editor.auto-session')
037.616  000.209  000.209: require('editor.autoclose')
037.810  000.190  000.190: require('editor.better-escape')
038.016  000.203  000.203: require('editor.bigfile')
038.219  000.199  000.199: require('editor.cleverf')
038.421  000.198  000.198: require('editor.comment')
038.608  000.182  000.182: require('editor.hop')
038.813  000.202  000.202: require('editor.vim-illuminate')
039.001  000.183  000.183: require('editor.suda')
039.223  000.219  000.219: require('editor.treesitter')
039.421  000.194  000.194: require('editor.autotag')
039.605  000.180  000.180: require('editor.colorizer')
039.801  000.193  000.193: require('editor.tabout')
039.805  002.909  000.136: require('modules\plugins\editor')
040.185  000.217  000.217: require('lang.vim-go')
040.419  000.228  000.228: require('lang.rust-tools')
040.671  000.248  000.248: require('lang.crates')
040.676  000.777  000.084: require('modules\plugins\lang')
041.123  000.317  000.317: require('tool.nvim-tree')
041.358  000.231  000.231: require('tool.smartyank')
041.600  000.232  000.232: require('tool.sniprun')
041.842  000.234  000.234: require('tool.toggleterm')
042.058  000.212  000.212: require('tool.trouble')
042.266  000.205  000.205: require('tool.which-key')
042.739  000.469  000.469: require('tool.wilder')
043.017  000.271  000.271: require('tool.telescope')
043.227  000.206  000.206: require('tool.project')
043.573  000.342  000.342: require('tool.dap')
043.819  000.235  000.235: require('tool.dap.dapui')
043.822  003.112  000.160: require('modules\plugins\tool')
044.163  000.262  000.262: require('ui.alpha')
044.381  000.214  000.214: require('ui.bufferline')
044.651  000.267  000.267: require('ui.catppuccin')
044.850  000.195  000.195: require('ui.edge')
045.045  000.192  000.192: require('ui.fidget')
045.365  000.230  000.230: require('ui.gitsigns')
045.585  000.216  000.216: require('ui.indent-blankline')
045.848  000.259  000.259: require('ui.lualine')
046.038  000.187  000.187: require('ui.neodim')
046.244  000.202  000.202: require('ui.neoscroll')
046.430  000.183  000.183: require('ui.nord')
046.648  000.216  000.216: require('ui.notify')
046.981  000.330  000.330: require('ui.paint')
047.215  000.226  000.226: require('ui.scrollview')
047.438  000.219  000.219: require('ui.specs')
047.441  003.605  000.210: require('modules\plugins\ui')
048.827  001.189  001.189: require('lazy')
048.861  000.012  000.012: require('ffi')
049.065  000.200  000.200: require('vim.loader')
049.326  000.251  000.251: require('lazy.core.cache')
049.533  000.144  000.144: require('lazy.stats')
049.792  000.129  000.129: require('lazy.core.util')
049.907  000.110  000.110: require('lazy.core.config')
050.114  000.105  000.105: require('lazy.core.handler')
050.225  000.107  000.107: require('lazy.core.plugin')
050.233  000.323  000.110: require('lazy.core.loader')
052.639  000.158  000.158: require('lazy.core.handler.event')
052.647  000.256  000.098: require('lazy.core.handler.ft')
052.770  000.119  000.119: require('lazy.core.handler.keys')
052.855  000.079  000.079: require('lazy.core.handler.cmd')
053.146  000.091  000.091: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/vim-go/ftdetect/gofiletype.vim
053.653  000.036  000.036: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/csv.vim/ftdetect/csv.vim
055.014  000.980  000.980: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/filetype.lua
056.238  001.065  001.065: require('catppuccin')
056.609  000.079  000.079: require('catppuccin.lib.hashing')
058.362  000.141  000.141: require('bigfile.features')
058.375  001.521  001.380: require('bigfile')
059.101  000.152  000.152: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/editorconfig.lua
059.465  000.040  000.040: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/gzip.vim
059.823  000.023  000.023: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/health.vim
060.327  000.165  000.165: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/man.lua
060.781  000.037  000.037: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/matchit.vim
061.121  000.024  000.024: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/matchparen.vim
061.925  000.470  000.470: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/netrwPlugin.vim
062.394  000.127  000.127: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/nvim.lua
063.191  000.479  000.479: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/rplugin.vim
063.606  000.072  000.072: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/shada.vim
063.956  000.015  000.015: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/spellfile.vim
064.270  000.016  000.016: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/tarPlugin.vim
064.589  000.013  000.013: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/tohtml.vim
064.909  000.025  000.025: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/tutor.vim
065.249  000.020  000.020: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime/plugin/zipPlugin.vim
069.038  000.159  000.159: require('vim.treesitter.language')
069.055  000.360  000.201: require('vim.treesitter.query')
069.222  000.164  000.164: require('vim.treesitter._range')
069.232  000.713  000.189: require('vim.treesitter.languagetree')
069.241  000.871  000.158: require('vim.treesitter')
069.244  000.961  000.091: require('nvim-treesitter.compat')
070.337  000.875  000.875: require('nvim-treesitter.parsers')
070.477  000.134  000.134: require('nvim-treesitter.utils')
070.484  001.127  000.118: require('nvim-treesitter.ts_utils')
070.489  001.242  000.116: require('nvim-treesitter.tsrange')
070.582  000.090  000.090: require('nvim-treesitter.caching')
070.627  002.446  000.153: require('nvim-treesitter.query')
070.637  002.604  000.157: require('nvim-treesitter.configs')
070.640  003.622  001.019: require('nvim-treesitter-textobjects')
070.962  000.080  000.080: require('nvim-treesitter.info')
071.078  000.111  000.111: require('nvim-treesitter.shell_command_selectors')
071.094  000.316  000.125: require('nvim-treesitter.install')
071.230  000.133  000.133: require('nvim-treesitter.statusline')
071.323  000.089  000.089: require('nvim-treesitter.query_predicates')
071.326  000.684  000.145: require('nvim-treesitter')
071.460  000.068  000.068: require('nvim-treesitter.textobjects.shared')
071.464  000.133  000.065: require('nvim-treesitter.textobjects.select')
071.638  000.058  000.058: require('nvim-treesitter.textobjects.attach')
071.701  000.060  000.060: require('nvim-treesitter.textobjects.repeatable_move')
071.707  000.194  000.077: require('nvim-treesitter.textobjects.move')
072.044  000.063  000.063: require('nvim-treesitter.textobjects.swap')
072.150  000.060  000.060: require('nvim-treesitter.textobjects.lsp_interop')
072.185  005.187  000.431: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-treesitter-textobjects/plugin/nvim-treesitter-textobjects.vim
073.610  000.128  000.128: require('vim.treesitter.highlighter')
073.679  000.063  000.063: require('treesitter-context.cache')
073.713  001.258  001.067: require('treesitter-context')
073.720  001.278  000.020: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-treesitter-context/plugin/treesitter-context.vim
075.288  001.105  001.105: require('rainbow')
075.308  001.155  000.050: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-ts-rainbow/plugin/rainbow.vim
076.747  001.185  001.185: require('ts_context_commentstring')
076.758  001.212  000.026: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-ts-context-commentstring/plugin/ts_context_commentstring.vim
077.019  000.048  000.048: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-treehopper/plugin/tsht.vim
079.684  000.014  000.014: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\plugin\matchparen.vim
080.471  000.159  000.159: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\plugin\matchparen.vim
081.014  000.334  000.334: sourcing C:\Users\sunli\AppData\Local\nvim-data\site\lazy\vim-matchup\autoload\matchup.vim
081.271  000.088  000.088: sourcing C:\Users\sunli\AppData\Local\nvim-data\site\lazy\vim-matchup\autoload\matchup\perf.vim
081.897  000.217  000.217: require('treesitter-matchup')
082.175  000.562  000.345: sourcing C:\Users\sunli\AppData\Local\nvim-data\site\lazy\vim-matchup\autoload\matchup\loader.vim
082.908  000.483  000.483: sourcing C:\Users\sunli\AppData\Local\nvim-data\site\lazy\vim-matchup\autoload\matchup\matchparen.vim
083.777  005.582  003.941: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/vim-matchup/plugin/matchup.vim
085.504  000.058  000.058: require('nvim-ts-autotag._log')
085.582  000.070  000.070: require('nvim-ts-autotag.utils')
085.591  000.241  000.113: require('nvim-ts-autotag.internal')
085.594  001.553  001.313: require('nvim-ts-autotag')
085.602  001.576  000.022: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-ts-autotag/plugin/nvim-ts-autotag.vim
085.924  000.080  000.080: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-colorizer.lua/plugin/colorizer.lua
087.467  000.052  000.052: require('colorizer.color')
087.680  000.149  000.149: require('colorizer.trie')
087.892  000.136  000.136: require('colorizer.utils')
087.897  000.213  000.077: require('colorizer.parser.names')
087.978  000.078  000.078: require('colorizer.parser.rgb')
088.038  000.057  000.057: require('colorizer.parser.hsl')
088.097  000.057  000.057: require('colorizer.parser.argb_hex')
088.156  000.056  000.056: require('colorizer.parser.rgba_hex')
088.223  000.065  000.065: require('colorizer.sass')
088.227  000.753  000.078: require('colorizer.matcher')
088.304  000.075  000.075: require('colorizer.tailwind')
088.311  000.963  000.084: require('colorizer.buffer')
088.332  002.339  001.376: require('colorizer')
088.685  000.033  000.033: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/tabout.nvim/plugin/tabout.vim
091.371  000.110  000.110: require('tabout.config')
091.381  000.243  000.133: require('tabout.logger')
091.519  000.135  000.135: require('tabout.utils')
091.987  000.333  000.333: require('tabout.node')
091.999  000.477  000.144: require('tabout.tab')
092.023  003.283  002.429: require('tabout')
093.759  000.953  000.953: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-treesitter/plugin/nvim-treesitter.lua
093.874  000.028  000.028: require('vim.F')
093.882  028.314  005.562: require('nvim-treesitter.configs')
093.945  028.460  000.146: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/bigfile.nvim/after/plugin/bigfile.lua
094.033  059.882  010.755: require('core.pack')
101.216  001.166  001.166: sourcing C:\Users\sunli\AppData\Local\nvim-data\site\lazy\catppuccin\colors\catppuccin.vim
101.444  000.178  000.178: require('rainbow.internal')
101.509  070.868  006.688: require('core')
101.513  070.921  000.053: sourcing C:\Users\sunli\AppData\Local\nvim\init.lua
101.541  002.694: sourcing vimrc file(s)
102.283  000.120  000.120: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\filetype.lua
103.506  000.082  000.082: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\syntax\synload.vim
103.615  000.730  000.648: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\syntax\syntax.vim
103.644  001.252: inits 3
104.155  000.511: reading ShaDa
129.915  024.298  024.298: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\autoload\provider\clipboard.vim
131.025  000.591  000.591: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/hop.nvim/plugin/hop.vim
132.641  001.544  001.544: require('hop')
132.824  000.075  000.075: require('hop.perm')
132.969  000.070  000.070: require('hop.priority')
132.974  000.144  000.074: require('hop.hint')
132.976  000.326  000.106: require('hop.defaults')
133.048  000.068  000.068: require('hop.highlight')
135.117  001.656  001.656: require('smartyank')
135.123  001.780  000.124: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/smartyank.nvim/plugin/smartyank.lua
139.062  002.059  002.059: require('scrollview')
139.096  003.447  001.387: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-scrollview/plugin/scrollview.vim
139.414  000.121  000.121: require('modules.utils')
139.506  000.085  000.085: require('catppuccin.palettes')
139.572  000.061  000.061: require('catppuccin.palettes.mocha')
139.671  000.071  000.071: require('catppuccin.groups.integrations.bufferline')
141.196  000.060  000.060: require('bufferline.lazy')
141.326  000.057  000.057: require('bufferline.constants')
141.333  000.130  000.073: require('bufferline.commands')
141.420  000.082  000.082: require('bufferline.config')
141.425  001.746  001.474: require('bufferline')
141.548  000.121  000.121: require('bufferline.utils')
141.707  000.154  000.154: require('vim.version')
142.739  000.116  000.116: require('bufferline.groups')
142.837  000.070  000.070: require('bufferline.colors')
143.287  000.093  000.093: require('bufferline.highlights')
143.786  000.043  000.043: require('vim.keymap')
144.355  000.692  000.649: require('bufferline.hover')
144.515  000.112  000.112: require('bufferline.ui')
146.263  000.080  000.080: require('lualine_require')
146.619  001.968  001.887: require('lualine')
147.523  000.072  000.072: require('catppuccin.utils.lualine')
152.248  000.107  000.107: require('lualine.utils.mode')
153.067  000.122  000.122: require('lualine.extensions.nerdtree')
154.536  000.096  000.096: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/lspsaga.nvim/plugin/lspsaga.lua
156.212  001.534  001.534: require('lspsaga')
156.474  000.104  000.104: require('lspsaga.highlight')
156.722  000.108  000.108: require('lspsaga.lspkind')
158.638  000.286  000.286: require('vim.lsp.log')
159.173  000.528  000.528: require('vim.lsp.protocol')
159.976  000.466  000.466: require('vim.lsp._snippet')
160.120  000.123  000.123: require('vim.highlight')
160.133  000.955  000.366: require('vim.lsp.util')
160.147  002.005  000.236: require('vim.lsp.handlers')
160.323  000.172  000.172: require('vim.lsp.rpc')
160.441  000.114  000.114: require('vim.lsp.sync')
160.571  000.127  000.127: require('vim.lsp.semantic_tokens')
160.714  000.138  000.138: require('vim.lsp.buf')
160.827  000.109  000.109: require('vim.lsp.diagnostic')
160.941  000.111  000.111: require('vim.lsp.codelens')
160.989  003.120  000.344: require('vim.lsp')
161.072  000.080  000.080: require('lspsaga.window')
161.129  000.053  000.053: require('lspsaga.util')
161.134  003.396  000.144: require('lspsaga.codeaction')
161.253  000.117  000.117: require('lspsaga.libs')
161.436  000.179  000.179: require('vim.diagnostic')
161.452  003.863  000.171: require('lspsaga.diagnostic')
161.474  007.677  001.974: require('lspsaga.lspkind')
167.035  000.737  000.737: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-lspconfig/plugin/lspconfig.lua
169.290  000.132  000.132: require('lspconfig.util')
169.297  000.215  000.083: require('lspconfig.configs')
169.301  002.206  001.990: require('lspconfig')
169.425  000.057  000.057: require('mason-core.path')
169.583  000.087  000.087: require('mason-core.functional')
169.737  000.052  000.052: require('mason-core.functional.data')
169.742  000.123  000.071: require('mason-core.functional.function')
169.822  000.051  000.051: require('mason-core.functional.relation')
169.881  000.050  000.050: require('mason-core.functional.logic')
169.890  000.462  000.150: require('mason-core.platform')
169.957  000.065  000.065: require('mason.settings')
169.961  000.657  000.073: require('mason')
170.095  000.073  000.073: require('mason-core.log')
170.157  000.059  000.059: require('mason-lspconfig.settings')
170.161  000.198  000.067: require('mason-lspconfig')
170.217  000.054  000.054: require('lspconfig.ui.windows')
170.391  000.060  000.060: require('mason-core.functional.list')
170.448  000.054  000.054: require('mason-core.functional.string')
170.482  000.222  000.108: require('mason.api.command')
170.574  000.085  000.085: require('mason-registry.sources')
170.700  000.050  000.050: require('mason-lspconfig.notify')
170.705  000.121  000.071: require('mason-lspconfig.lspconfig_hook')
170.826  000.057  000.057: require('mason-core.functional.table')
170.862  000.154  000.098: require('mason-lspconfig.mappings.server')
170.984  000.052  000.052: require('mason-core.EventEmitter')
171.041  000.054  000.054: require('mason-core.optional')
171.173  000.072  000.072: require('mason-core.async')
171.228  000.049  000.049: require('mason-core.async.uv')
171.234  000.190  000.070: require('mason-core.fs')
171.261  000.396  000.099: require('mason-registry')
171.323  000.058  000.058: require('mason-lspconfig.server_config_extensions')
171.386  000.060  000.060: require('lspconfig.server_configurations.omnisharp')
171.454  000.056  000.056: require('mason-lspconfig.ensure_installed')
171.733  000.057  000.057: require('mason-core.result')
171.769  000.153  000.096: require('mason-core.purl')
171.777  000.246  000.094: require('mason-core.package')
172.019  000.110  000.110: require('mason-core.process')
180.834  008.810  008.810: require('mason-core.spawn')
180.841  009.000  000.079: require('mason-core.managers.powershell')
180.844  009.064  000.065: require('mason-core.fetch')
180.940  000.093  000.093: require('mason-core.providers')
181.165  000.065  000.065: require('mason-core.installer.registry.expr')
181.174  000.147  000.082: require('mason-core.installer.registry.link')
181.514  000.059  000.059: require('mason-core.receipt')
181.530  000.148  000.089: require('mason-core.installer.context')
181.590  000.058  000.058: require('mason-core.async.control')
181.653  000.060  000.060: require('mason-core.installer.linker')
181.657  000.359  000.094: require('mason-core.installer')
181.669  000.437  000.078: require('mason-core.installer.managers.std')
181.672  000.496  000.059: require('mason-core.installer.registry.schemas')
181.718  000.774  000.131: require('mason-core.installer.registry')
181.725  010.264  000.087: require('mason-registry.sources.github')
184.466  000.066  000.066: require('mason-core.functional.number')
184.500  000.221  000.155: require('mason-lspconfig.api.command')
186.988  000.097  000.097: require('cmp_nvim_lsp.source')
186.995  001.834  001.737: require('cmp_nvim_lsp')
187.013  001.930  000.096: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua
187.029  002.482  000.552: require('cmp_nvim_lsp')
189.401  002.181  002.181: require('completion.servers.jsonls')
189.500  000.091  000.091: require('lspconfig.server_configurations.jsonls')
190.650  000.235  000.235: require('completion.servers.html')
190.744  000.087  000.087: require('lspconfig.server_configurations.html')
196.654  000.267  000.267: require('completion.servers.bashls')
196.752  000.090  000.090: require('lspconfig.server_configurations.bashls')
198.293  000.771  000.771: require('completion.servers.lua_ls')
198.408  000.106  000.106: require('lspconfig.server_configurations.lua_ls')
199.809  000.134  000.134: require('lspconfig.server_configurations.pylsp')
200.273  000.133  000.133: require('mason-core.managers.pip3')
200.279  000.240  000.108: require('mason-lspconfig.server_configurations.pylsp')
200.733  000.308  000.308: require('completion.servers.clangd')
200.844  000.104  000.104: require('lspconfig.server_configurations.clangd')
4852.323  000.109  000.109: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/clever-f.vim/plugin/clever-f.vim
4854.316  000.060  000.060: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-bufdel/plugin/bufdel.vim
4858.095  000.086  000.086: require('project_nvim.config')
4858.303  000.089  000.089: require('project_nvim.utils.path')
4858.312  000.210  000.122: require('project_nvim.utils.history')
4858.315  002.135  001.838: require('project_nvim')
4858.426  000.076  000.076: require('project_nvim.utils.globtopattern')
4858.699  000.108  000.108: require('project_nvim.project')
4861.808  000.165  000.165: require('indent_blankline/utils')
4861.816  002.096  001.931: require('indent_blankline')
4862.029  000.107  000.107: require('indent_blankline.commands')
4862.315  000.235  000.235: require('vim.inspect')
4862.601  003.017  000.579: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/indent-blankline.nvim/plugin/indent_blankline.vim
4864.976  000.114  000.114: require('neoscroll.config')
4865.069  000.087  000.087: require('neoscroll.utils')
4865.105  002.164  001.963: require('neoscroll')
4868.104  002.619  002.619: require('vim.filetype')
4878.246  008.177  008.177: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\ftplugin\ps1.vim
4881.234  000.030  000.030: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\indent\ps1.vim
4882.416  000.062  000.062: sourcing C:\Users\sunli\AppData\Local\nvim-data\site\lazy\vim-matchup\autoload\matchup\ts_engine.vim
4882.617  000.060  000.060: require('treesitter-matchup.compat')
4882.692  000.069  000.069: require('treesitter-matchup.third-party.query')
4882.755  000.060  000.060: require('treesitter-matchup.third-party.lru')
4882.816  000.058  000.058: require('treesitter-matchup.util')
4882.875  000.056  000.056: require('treesitter-matchup.third-party.utils')
4882.885  000.430  000.127: require('treesitter-matchup.internal')
4884.366  000.026  000.026: sourcing C:\Users\sunli\AppData\Local\nvim-data\site\lazy\vim-matchup\autoload\matchup\re.vim
4887.690  000.343  000.343: sourcing D:\Scoop\apps\neovim\current\share\nvim\runtime\syntax\ps1.vim
4889.505  000.130  000.130: require('nvim-treesitter.locals')
4889.804  000.175  000.175: require('editorconfig')
4889.970  000.160  000.160: require('vim.fs')
4892.131  001.873  001.873: require('alpha')
4892.212  000.075  000.075: require('alpha.themes.dashboard')
4894.882  4700.935: opening buffers
4895.056  000.085  000.085: require('bufferline.state')
4895.227  000.260: BufEnter autocommands
4895.231  000.004: editing files in windows
4896.207  000.976: VimEnter autocommands
4898.202  001.995: UIEnter autocommands
4899.105  000.903: before starting main loop
4899.567  000.143  000.143: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/vim-cool/plugin/cool.vim
4901.623  000.028  000.028: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/specs.nvim/plugin/specs.vim
4903.644  001.976  001.976: require('specs')
4904.569  000.101  000.101: sourcing C:\Users\sunli\AppData\Local\nvim-data\site\lazy\vim-matchup\autoload\matchup\pos.vim
4905.550  000.385  000.385: sourcing C:\Users\sunli\AppData\Local\nvim-data\site\lazy\vim-matchup\autoload\matchup\delim.vim
4906.644  000.066  000.066: require('bufferline.pick')
4906.711  000.061  000.061: require('bufferline.duplicates')
4906.837  000.123  000.123: require('bufferline.diagnostics')
4906.926  000.085  000.085: require('bufferline.models')
4906.930  000.459  000.124: require('bufferline.buffers')
4907.457  000.041  000.041: sourcing C:/Users/sunli/AppData/Local/nvim-data/site/lazy/nvim-web-devicons/plugin/nvim-web-devicons.vim
4908.051  001.063  001.022: require('nvim-web-devicons')
4909.147  000.097  000.097: require('bufferline.numbers')
4909.282  000.077  000.077: require('bufferline.sorters')
4909.368  000.068  000.068: require('bufferline.tabpages')
4909.468  000.066  000.066: require('bufferline.offset')
4909.542  000.067  000.067: require('bufferline.custom_area')
4911.114  007.480: first screen update
4911.118  000.004: --- NVIM STARTED ---

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

000.014  000.014: --- NVIM STARTING ---
000.057  000.043: event init
000.150  000.093: early init
024.477  024.327: locale set
024.558  000.081: init first window
025.284  000.726: inits 1
025.369  000.085: window checked
025.640  000.271: parsing arguments
026.485  000.241  000.241: require('vim.shared')
026.996  000.198  000.198: require('vim._meta')
027.000  000.508  000.310: require('vim._editor')
027.003  000.842  000.093: require('vim._init_packages')
027.013  000.531: init lua interpreter
033.559  006.545: expanding arguments
033.590  000.031: inits 2
034.020  000.430: init highlight
sunchangtan commented 1 year ago

So u r using this nvimdots with c/c++ projects? If so, then the extra 4 seconds delay is for lsp, which is clangd, to start. nvim is just waiting lsp to get ready.

@CharlesChiuGit Opening any file, including new files, is slow, not just C/C++ files.

CharlesChiuGit commented 1 year ago

4894.882 4700.935: opening buffers

this looks super weird. It seems like it takes almost 5 seconds just to open the buffer.

sunchangtan commented 1 year ago

4894.882 4700.935: opening buffers

this looks super weird. It seems like it takes almost 5 seconds just to open the buffer.

I deleted clangd again, and the startup speed is around 210 milliseconds.

Jint-lzxy commented 1 year ago

If I understand this correctly, maybe this issue is related to root_pattern() and shellcmd calls. What happens is all language servers are "preloaded" during initialization: https://github.com/ayamir/nvimdots/blob/a3fe21d7153a0321a9ac09b964a8fe118f6b5d3f/lua/modules/configs/completion/lsp.lua#L93

and one step during "preload" is to _check if the executable is invokable and set that server's root directory_. Does the directory where the file is opened have an overly large parent file tree? Also note that:

Performance ~
- OK Build type: RelWithDebInfo
- WARNING Slow shell invocation (took 1.56 seconds).

For servers that rely on shellcmds to perform live checks (e.g., clangd), they'll be greatly affected by the startup time of your shell. But unfortunately we can't do much about this - you need to debug this issue yourself.

Groveer commented 1 year ago

After clangd was installed successfully, the startup time increased to more than 4 seconds.

I deleted clangd again, and the startup speed is around 210 milliseconds.

You need remove find command in clangd config, it cannot find c compile in windows, you can change like this: https://github.com/ayamir/nvimdots/commit/6208dd7e9c28fc77208bac5ebec6c90f4d18c1f1 Remove --query-driver didn't make the slightest difference for me and fixed the issue.

ayamir commented 1 year ago

After clangd was installed successfully, the startup time increased to more than 4 seconds. I deleted clangd again, and the startup speed is around 210 milliseconds.

You need remove find command in clangd config, it cannot find c compile in windows, you can change like this: 6208dd7 Remove --query-driver didn't make the slightest difference for me and fixed the issue.

In fact, it's due to the inefficient implementation of get_binary_path. It should be fixed for all of platforms and no need to remove this line.

sunchangtan commented 1 year ago

I test passed. it works good.