Shougo / deoplete.nvim

:stars: Dark powered asynchronous completion framework for neovim/Vim8
Other
5.93k stars 295 forks source link

error caught in async handler 'deoplete_enable_logging: Keyerror: level #567

Closed mhartington closed 6 years ago

mhartington commented 6 years ago

Warning: I will close the issue without the minimal init.vim and the reproduce ways.

Problems summary

When trying to enable logging/debuging, there's a python error.

```py error caught in async handler 'deoplete_enable_logging [{'max_menu_width': 105, 'cwd': '/Users/mhartington', 'vars': {'deoplete#sources#go#align_class': 0, 'de oplete#_initialized': True, 'deoplete#auto_complete_delay': 0, 'deoplete#max_abbr_width': 80, 'deoplete#delimiters': ['/'], 'deoplete#omni#input_patterns': {}, 'deoplete#auto_refresh_delay': 500, 'deoplete#sources#go#package_dot': 0, 'deoplete#omni_patterns': {'html': '', 'css': ''}, 'deoplete#enable_refresh_always': 0, 'deoplete#disable_auto_complete': 0, 'deoplete#sources': {}, 'deoplete#_logging': {'level': 'DEBUG', 'logfile': './deoplete.log'}, 'deoplete#auto_complete_ start_length': 2, 'deoplete#_channel_id': 2, 'deoplete#enable_smart_case': 0, 'deoplete#enable_at_startup': 1, 'deoplete#sources#go#gocode_binary': '/Users/mha rtington/go/bin/gocode', 'deoplete#max_menu_width': 40, 'deoplete#sources#go#pointer': 0, 'deoplete#enable_ignore_case': 0, 'deoplete#file#enable_buffer_path': 1, 'deoplete#complete_method': 'complete', 'deoplete#omni#functions': {}, 'deoplete#sources#go#cgo': 0, 'deoplete#sources#go#json_directory': '', 'deoplete#_r ank': {}, 'deoplete#ignore_sources': {'_': ['around']}, 'deoplete#max_list': 100, 'deoplete#member#prefix_patterns': {}, 'deoplete#enable_debug': 1, 'deoplete# enable_yarp': 0, 'deoplete#keyword_patterns': {}, 'deoplete#enable_camel_case': 0, 'deoplete#sources#go#sort_class': [], 'deoplete#sources#go#on_event': 0, 'de oplete#_keyword_patterns': {'_': '[a-zA-Z_]\\k*'}, 'deoplete#enable_profile': 1, 'deoplete#sources#go#use_cache': 0, 'deoplete#_context': {}, 'deoplete#_omni_p atterns': {'xhtml': ['<', ']*\\s[[:alnum:]-]*'], 'xml': ['<', ']*\\s[[:alnum:]-]*'], 'html': ['<', ']*\\s[[:alnum:]-]*']}, 'deopl ete#skip_chars': []}, 'same_filetypes': [], 'smartcase': 0, 'runtimepath': '/Users/mhartington/.config/nvim,/etc/xdg/nvim,/Users/mhartington/.local/share/nvim/ site,/usr/local/share/nvim/site,/usr/share/nvim/site,/Users/mhartington/GitHub/ionic-snippets,/Users/mhartington/GitHub/nvim-typescript,/Users/mhartington/.con fig/nvim/repos/github.com/nixprime/cpsm,/Users/mhartington/.config/nvim/repos/github.com/zchee/deoplete-go,/Users/mhartington/GitHub/oceanic-next,/Users/mharti ngton/.config/nvim/repos/github.com/Shougo/vimproc.vim,/Users/mhartington/.config/nvim/repos/github.com/euclio/vim-markdown-composer,/Users/mhartington/.config /nvim/repos/github.com/neovim/node-host,/Users/mhartington/.config/nvim/repos/github.com/Shougo/dein.vim,/Users/mhartington/GitHub/vim-folds,/Users/mhartington /.config/nvim/.cache/init.vim/.dein,/usr/local/Cellar/neovim/HEAD-54b79f1_1/share/nvim/runtime,/Users/mhartington/GitHub/nvim-typescript/after,/Users/mhartingt on/GitHub/oceanic-next/after,/Users/mhartington/.config/nvim/repos/github.com/euclio/vim-markdown-composer/after,/Users/mhartington/GitHub/vim-folds/after,/Use rs/mhartington/.config/nvim/.cache/init.vim/.dein/after,/usr/share/nvim/site/after,/usr/local/share/nvim/site/after,/Users/mhartington/.local/share/nvim/site/a fter,/etc/xdg/nvim/after,/Users/mhartington/.config/nvim/after,/Users/mhartington/.config/nvim/repos/github.com/Shougo/dein.vim/', 'bufvars': {}, 'bufnr': 1, ' changedtick': 3, 'custom': {'source': {'file': {'mark': '\uf413'}, 'neosnippet': {'mark': '\uf03c'}, 'omni': {'mark': '⌾'}, 'tern': {'mark': '\ue60c'}, 'typesc ript': {'debug_enabled': 1, 'rank': 630}, 'jedi': {'mark': '\ue606'}, 'buffer': {'mark': 'ℬ'}, '_': {}}}, 'omni__omnifunc': '', 'filetype': 'vim', 'input': '', 'delay': 0, 'bufsize': 0, 'max_kind_width': 105, 'rpc': 'deoplete_enable_logging', 'bufpath': '', 'bufname': 'test.vim', 'event': 'deoplete_auto_completion_be gin', 'max_abbr_width': 105, 'sources': [], 'complete_str': '', 'camelcase': 0, 'ignorecase': 0, 'filetypes': ['vim'], 'keyword_patterns': '[a-zA-Z_][a-zA-Z@0- 9_À-ÿ#]*', 'dict__dictionary': '', 'position': [0, 1, 1, 0], 'next_input': '', 'encoding': 'utf-8'}]' Traceback (most recent call last): File "/Users/mhartington/.config/nvim/.cache/init.vim/.dein/rplugin/python3/deoplete/__init__.py", line 32, in enable_logging self._deoplete.enable_logging(context) File "/Users/mhartington/.config/nvim/.cache/init.vim/.dein/rplugin/python3/deoplete/deoplete.py", line 51, in enable_logging logger.setup(self._vim, logging['level'], logging['logfile']) KeyError: 'level' ```

Expected

No error to be thrown.

Environment Information

``` ## 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: Release ## Remote Plugins - OK: Up to date ## terminal - INFO: key_backspace (kbs) terminfo entry: key_backspace=\177 - INFO: key_dc (kdch1) terminfo entry: key_dc=\E[3~ ```

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

" Your minimal init.vim/vimrc
set runtimepath+=~/path/to/deoplete.nvim/
let g:deoplete#enable_at_startup = 1

  let g:deoplete#enable_debug = 1
  let g:deoplete#enable_profile = 1
  call deoplete#enable_logging('DEBUG', 'deoplete.log')

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

  1. enable debugging and profiling
  2. open nvim
  3. attempt to enter insert mode and error is thrown.

Screen shot (if possible)

screen shot 2017-11-03 at 10 18 20 am

AitorATuin commented 6 years ago

https://github.com/Shougo/deoplete.nvim/blob/master/autoload/deoplete/util.vim#L224

I'm not an expert in deoplete code but seems that let g:deoplete#_logging is set to an empty dictionary the first time rcpnotify is called. Looking at the if statement seems that this behavior is on purpose, now I'm curious about the logic behind it.

For the moment i have commented that line out to be able to use deoplete with debug logs

Shougo commented 6 years ago

I will fix it later.