Under the hood, rescript-editor-analysis.exe returns null instead of an object/dict when a completion item has no documentation. This results in multiple errors in rescript#Complete.
A minimal example with vim-plug and the latest versions of vim-rescript and rescript (tested in VIM 8.2 and in Neovim 0.6.1):
~/.vimrc or ~/.config/nvim/init.vim:
call plug#begin()
Plug 'rescript-lang/vim-rescript'
call plug#end()
set omnifunc=rescript#Complete
set completeopt+=preview
Example.res:
let myInteger = 1
let myString = "2"
Also needed:
complete/completion mismatch fix: #56
Make sure the project is built. Type let my as the last line of Example.res and hit <C-x><C-o> in insert mode. You'll get the following errors twice:
Error detected while processing function rescript#Complete:
line 36:
E121: Undefined variable: value
Press ENTER or type command to continue
Error detected while processing function rescript#Complete:
line 38:
E121: Undefined variable: entry
Press ENTER or type command to continue
Error detected while processing function rescript#Complete:
line 38:
E116: Invalid arguments for function add(l:ret, entry)
Press ENTER or type command to continue
item.documentation is null for undocumented matches.
I tried to replace the offending line with the following, and now omni completion works both for built-in items and for undocumented local items (but I'm no expert in vimscript, so this may be a silly way to do it):
if type(item.documentation) == v:t_dict
let l:info = item.documentation.value
else
let l:info = item.detail " or some default value
endif
let entry = { 'word': item.label, 'kind': l:kind, 'info': l:info }
Under the hood,
rescript-editor-analysis.exe
returnsnull
instead of an object/dict when a completion item has no documentation. This results in multiple errors inrescript#Complete
.A minimal example with
vim-plug
and the latest versions ofvim-rescript
andrescript
(tested in VIM 8.2 and in Neovim 0.6.1):~/.vimrc or ~/.config/nvim/init.vim:
Example.res:
Also needed:
Make sure the project is built. Type
let my
as the last line ofExample.res
and hit<C-x><C-o>
in insert mode. You'll get the following errors twice:After hitting ENTER enough times:
I think the problem lies here:
https://github.com/rescript-lang/vim-rescript/blob/faeeb2deef1ad0ec67fc892ceeb9949f3bf2d77c/autoload/rescript.vim#L369
item.documentation
is null for undocumented matches.I tried to replace the offending line with the following, and now omni completion works both for built-in items and for undocumented local items (but I'm no expert in vimscript, so this may be a silly way to do it):