Skip to content

Completion menu show up time is long if a source is slow #645

@jsfaint

Description

@jsfaint

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

Problems summary

I compared deoplete with ncm.
In ncm, if a source is slow, it will not impact the completion menu show up time.
But in ncm, if a source is slow, it will impact the completion menu show up time.

Expected

If some source is slow, the faster source should show in completion menu first.

Environment Information

  • deoplete version(SHA1):
    c145a7f

  • OS:
    windows 10

  • neovim/Vim version:
    NVIM 0.2.2

  • :checkhealth or :CheckHealth result(neovim only):


health#deoplete#check
========================================================================
## deoplete.nvim
  - OK: has("nvim") was successful
  - OK: has("python3") was successful
  - INFO: If you're still having problems, try the following commands:
    $ export NVIM_PYTHON_LOG_FILE=/tmp/log
    $ export NVIM_PYTHON_LOG_LEVEL=DEBUG
    $ nvim
    $ cat /tmp/log_{PID}
    and then create an issue on github

health#nvim#check
========================================================================
## Configuration
  - OK: no issues found

## Performance
  - OK: Build type: RelWithDebInfo

## Remote Plugins
  - OK: Up to date

health#provider#check
========================================================================
## Clipboard (optional)
  - OK: Clipboard tool found: win32yank

## Python 2 provider (optional)
  - WARNING: No Python interpreter was found with the neovim module.  Using the first available for diagnostics.
  - WARNING: provider/pythonx: Could not load Python 2:
    python2 not found in search path or not executable.
    python2.7 not found in search path or not executable.
    python2.6 not found in search path or not executable.
    C:\Users\jia.sui\AppData\Local\Programs\Python\Python36\python is Python 3.6 and cannot provide Python 2.
  - ERROR: Python provider error
    - ADVICE:
      - provider/pythonx: Could not load Python 2:
          python2 not found in search path or not executable.
          python2.7 not found in search path or not executable.
          python2.6 not found in search path or not executable.
          C:\Users\jia.sui\AppData\Local\Programs\Python\Python36\python is Python 3.6 and cannot provide Python 2.
  - INFO: Executable: Not found

## Python 3 provider (optional)
  - INFO: Using: g:python3_host_prog = "C:/Users/jia.sui/AppData/Local/Programs/Python/Python36/python.exe"
  - INFO: Executable: C:/Users/jia.sui/AppData/Local/Programs/Python/Python36/python.exe
  - INFO: Python3 version: 3.6.4
  - INFO: python.exe-neovim version: 0.2.1
  - OK: Latest python.exe-neovim is installed: 0.2.1

## Ruby provider (optional)
  - WARNING: `ruby` and `gem` must be in $PATH.
    - ADVICE:
      - Install Ruby and verify that `ruby` and `gem` commands work.

## Node provider (optional)
  - INFO: Node: v8.9.0
  - WARNING: Missing "neovim" npm package.
    - ADVICE:
      - Run in shell: npm install -g neovim
      - Is the npm bin directory in $PATH?

Provide a minimal init.vim/vimrc with less than 50 lines (Required!)

let s:rc_path = fnamemodify(expand('<sfile>'), ':h')

let s:vimplug = expand(s:rc_path . '/autoload')

if empty(glob(s:vimplug . '/plug.vim'))
  execute '!git clone --depth=1 https://github.com/junegunn/vim-plug' s:vimplug
  augroup vimrc
    autocmd VimEnter * PlugInstall
  augroup END
endif

call plug#begin(s:rc_path . '/plugged')

"Completion
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }

call plug#end()

"deoplete.nvim
if (has('nvim') || v:version >= 800) && has('python3')
  let g:deoplete#enable_at_startup = 1
  let g:deoplete#num_processes = 20
endif

The reproduce ways from neovim/Vim starting (Required!)

  1. Add a time.sleep(10) in gather_candidates() tag.py
diff --git a/rplugin/python3/deoplete/source/tag.py b/rplugin/python3/deoplete/source/tag.py
index 1dcec7f..7a32695 100644
--- a/rplugin/python3/deoplete/source/tag.py
+++ b/rplugin/python3/deoplete/source/tag.py
@@ -33,6 +33,8 @@ class Source(Base):
       self._make_cache(context)

   def gather_candidates(self, context):
+        import time
+        time.sleep(10)
       self._make_cache(context)
       candidates = []
       for c in self._cache.values():
  1. Add
  2. Open any files, then type something
  3. The completion window will show up after 10s

Screen shot (if possible)

deoplete

Upload the log file

deoplete.log

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions