matsui54 / denops-signature_help

Shows signature help from lsp server.
MIT License
62 stars 9 forks source link

sumneko_lua でメソッドの2つ目の引数を入力した状態で、1つ目の引数が空のときエラーになってしまう問題 #3

Closed tamago324 closed 2 years ago

tamago324 commented 2 years ago

日本語で失礼いたします。

バグの説明

sumneko_lua を使って、2つ目の引数を入力した状態で、1つ目の引数が空のときにインサートモードに入るとエラーになってしまい、正しくシグニチャが表示されません。 たとえば、table.concat(|, 'hoge') のような時です。

nvim -u mini.vim -i NONE を使って再現する方法

set encoding=utf-8

filetype plugin indent on
if has('vim_starting')
  let s:pluin_manager_dir='~/.config/nvim/.plugged/vim-plug'
  execute 'set runtimepath+=' . s:pluin_manager_dir
endif
call plug#begin('~/.config/nvim/.plugged')
Plug 'vim-denops/denops.vim'
Plug 'matsui54/denops-signature_help'
Plug 'neovim/nvim-lspconfig'
Plug 'williamboman/nvim-lsp-installer'
call plug#end()

set nobackup
set nowritebackup
set noswapfile
set updatecount=0
set backspace=indent,eol,start
language messages en_US.utf8

nnoremap <Space><Space> :
nnoremap <Space><Tab> <Cmd>quit<CR>
nnoremap <Space><S-Tab> <Cmd>quit!<CR>
inoremap <C-r><C-r> <C-r>+
cnoremap <C-o>      <C-r>+

call signature_help#enable()

let g:signature_help_config = {
\  "style": "virtual",
\}

" nvim -u ~/ghq/github.com/tamago324/sandbox-vim/issues/denops-signicha-help.vim -i NONE
" LspInstall sumneko_lua

lua << EOF
local lsp_installer = require'nvim-lsp-installer'
local lspconfig = require("lspconfig")

lsp_installer.on_server_ready(function(server)
  server:setup({})
end)

ステップ:

  1. nvim -u mini.vim -i NONE
  2. :LspInstall sumneko_lua
  3. :e sample.lua でバッファを開きます。
  4. table.concat(, hoge) を入力します。 5, 1つ目の引数にカーソルを移動し、インサートモードを開始します。

すると、以下のエラーになってしまいます。

[denops] Error: Failed to call 'respond' with [{"signatures":[{"label":"function table.concat(list: table, sep?: string, i?: number, j?: number)","activeParameter":-1,"parameters":[{"label":[22,33]},{"label":[35,47]},{"label":[49,59]},{"label":[61,71]}],"documentation":{"kind":"markdown","value":"\nGiven a list where all elements are strings or numbers, returns the string `list[i]..sep..list[i+1] ··· sep..list[j]`.\n\n[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-table.concat)"}}]}]: TypeError: Cannot read properties of undefined (reading 'label')
[denops]     at convertSignatureHelpToMarkdownLines (file:///home/tamago324/ghq/github.com/tamago324/vimfiles/.plugged/denops-signature_help/denops/signature_help/markdown.ts:113:26)
[denops]     at SigHandler.showSignatureHelp (file:///home/tamago324/ghq/github.com/tamago324/vimfiles/.plugged/denops-signature_help/denops/signature_help/signature.ts:136:19)
[denops]     at async EventHandler.onSighelpResponce (file:///home/tamago324/ghq/github.com/tamago324/vimfiles/.plugged/denops-signature_help/denops/signature_help/event.ts:79:5)
[denops]     at async Session.respond (file:///home/tamago324/ghq/github.com/tamago324/vimfiles/.plugged/denops-signature_help/denops/signature_help/app.ts:23:7)
[denops]     at async Session.dispatch (https://deno.land/x/msgpack_rpc@v3.1.4/session.ts:99:12)
[denops]     at async https://deno.land/x/msgpack_rpc@v3.1.4/session.ts:108:18
[denops]     at async Session.handleRequest (https://deno.land/x/msgpack_rpc@v3.1.4/session.ts:104:29)
[denops]     at Session.call (https://deno.land/x/msgpack_rpc@v3.1.4/session.ts:207:13)
[denops]     at async Service.dispatch (file:///home/tamago324/ghq/github.com/tamago324/vimfiles/.plugged/denops.vim/denops/@denops-private/service.ts:101:14)
[denops]     at async Session.invoke (file:///home/tamago324/ghq/github.com/tamago324/vimfiles/.plugged/denops.vim/denops/@denops-private/host/nvim.ts:48:16)
[denops]     at async Session.dispatch (https://deno.land/x/msgpack_rpc@v3.1.4/session.ts:99:12)
[denops]     at async Session.handleNotification (https://deno.land/x/msgpack_rpc@v3.1.4/session.ts:130:7)

予想される行動

エラーが発生せずにパラメータが表示される or エラーが発生せずに何も表示されない

スクリーンショット

https://user-images.githubusercontent.com/16581287/151388292-b0d05503-e066-4a16-8a7f-89c078a079a8.mp4

よろしくお願いいたします。

matsui54 commented 2 years ago

報告ありがとうございます。直しました。

tamago324 commented 2 years ago

早速の修正ありがとうございます!問題なさそうです!