Shougo / dein.vim

:zap: Dark powered Vim/Neovim plugin manager
MIT License
3.42k stars 197 forks source link

Race of nvim-treesitter automatic installation #484

Closed e-kwsm closed 1 year ago

e-kwsm commented 1 year ago

Warning: I will close the issue without the minimal init.vim and the reproduction instructions.

Problems summary

Race occurs if nvim-treesitter is managed by dein and automatic installation is enabled. An error message would look like:

[nvim-treesitter] [0/2] Downloading tree-sitter-python...
[nvim-treesitter] [0/2] Downloading tree-sitter-python...
[nvim-treesitter] [0/2] Creating temporary directory
[nvim-treesitter] [0/2] Extracting tree-sitter-python...
[nvim-treesitter] [0/2] Creating temporary directory
Error detected while processing command line:
nvim-treesitter[python]: Could not create tree-sitter-python-tmp
mkdir: cannot create directory 'tree-sitter-python-tmp': File exists
[nvim-treesitter] [1/2, failed: 1] Compiling...
[nvim-treesitter] [2/2, failed: 1] Treesitter parser for python has been installed
[nvim-treesitter] [0/2] Downloading tree-sitter-python...
[nvim-treesitter] [0/2] Downloading tree-sitter-python...
[nvim-treesitter] [0/2] Creating temporary directory
[nvim-treesitter] [0/2] Extracting tree-sitter-python...
[nvim-treesitter] [0/2] Compiling...
[nvim-treesitter] [0/2] Creating temporary directory
[nvim-treesitter] [0/2] Extracting tree-sitter-python...
Error detected while processing command line:
nvim-treesitter[python]: Error during tarball extraction.
tar (child): tree-sitter-python.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
[nvim-treesitter] [2/2, failed: 1] Treesitter parser for python has been installed
[nvim-treesitter] [0/2] Downloading tree-sitter-python...
[nvim-treesitter] [0/2] Downloading tree-sitter-python...
[nvim-treesitter] [0/2] Creating temporary directory
[nvim-treesitter] [0/2] Extracting tree-sitter-python...
[nvim-treesitter] [0/2] Compiling...
[nvim-treesitter] [0/2] Creating temporary directory
[nvim-treesitter] [0/2] Extracting tree-sitter-python...
[nvim-treesitter] [0/2] Compiling...
[nvim-treesitter] [1/2] Treesitter parser for python has been installed
Error detected while processing command line:
nvim-treesitter[python]: Error during compilation
cc1plus: fatal error: src/scanner.cc: No such file or directory
compilation terminated.

Expected

No race occurs.

Environment Information (Required!)

Provide a minimal init.vim/vimrc without plugin managers (Required!)

let s:dein_base = '/tmp/dein'

set runtimepath+=/path/to/dein.vim

if exists('g:without_dein') && g:without_dein
  " no race
  let &runtimepath .= ',' . s:dein_base . '/repos/github.com/nvim-treesitter/nvim-treesitter'
else
  " race
  call dein#begin(s:dein_base)
  call dein#add('nvim-treesitter/nvim-treesitter')
  call dein#end()
  if dein#check_install()
    call dein#install()
  endif
endif

lua << EOF
require'nvim-treesitter.configs'.setup {
  auto_install = true,
}
EOF

How to reproduce the problem from neovim/Vim startup (Required!)

Here python parser is chosen as example:

  1. Make sure the parser is not installed: nvim --headless -u vimrc -c 'TSUninstall python' -c q
  2. Open a Python file: nvim --headless -u vimrc -c 'sleep 4' -c q a.py

Race does not occur for the followings:

Screen shot (if possible)

Upload the log messages by :redir and :message (if errored)

Shougo commented 1 year ago

Sorry. It is not dein.vim's problem. In the example, dein.vim just add nvim-treesitter to runtimepath.

If it has the race condition, it is in nvim-treesitter upgrade process.

If you think it is the problem in dein.vim, please provide what the code is wrong. I will check it later.

Shougo commented 1 year ago

I get the reason.

nvim-treesitter must be filetype plugin indent on. But dein.vim disables it because performance reason. So you need to enable it manually.

filetype plugin indent on

is needed in your init.vim. It is not bug.

e-kwsm commented 1 year ago

I see, thank you.