Shougo / neosnippet.vim

neo-snippet plugin
Other
1.12k stars 108 forks source link

deoplete + neosnippetで関数の引数補完ができない #413

Closed nekowasabi closed 6 years ago

nekowasabi commented 6 years ago

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

Problems summary

deopleteと連携して、phpの関数を補完しようとしたところ、関数の引数の補完ができない。

Expected

<?php

class A {
  public function test($a, $b)
  {
    return "ok";
  }
}

$obj = new A();

上記コード後に$obj->test と入力したとき、$obj->test($a, $b)の補完候補が表示され、補完後にneosnippetの展開を実行すると、関数と引数が展開されることを期待する。

Environment Information

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

filetype plugin indent off

"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

set pythonthreedll=$VIM/python3/python36.dll
let g:python3_host_prog = expand('C:\users\nekowasabi\AppData\Local\Programs\Python\Python36\python.exe')

let s:dein_dir = expand('~/.cache/dein')
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'

if &runtimepath !~# '/dein.vim'
    if !isdirectory(s:dein_repo_dir)
        execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
    endif
    set runtimepath+=~/.cache/dein/repos/github.com/Shougo/dein.vim
endif
set runtimepath+=~/.config/nvim
if dein#load_state(s:dein_dir)
  call dein#begin(s:dein_dir)
  call dein#add('Shougo/dein.vim')
  call dein#add('Shougo/deoplete.nvim')
  call dein#add('roxma/nvim-yarp')
  call dein#add('roxma/vim-hug-neovim-rpc')

  call dein#add('Shougo/neosnippet.vim')
  call dein#add('Shougo/neosnippet-snippets')

  call dein#end()
  call dein#save_state()
endif

let g:deoplete#enable_at_startup = 1

imap <C-s>     <Plug>(neosnippet_expand_or_jump)
smap <C-s>     <Plug>(neosnippet_expand_or_jump)
xmap <C-s>     <Plug>(neosnippet_expand_target)

set pythonthreedll let g:python3_host_prog のみ読み替えてください。

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

  1. gvim.exeを起動
  2. deinからプラグインをインストール
  3. gvim.exeを再起動

Screen shot (if possible)

sc 自動補完の途中でしてオムニ補完すると、候補の表示までは行われるが、実際の関数と引数の補完ができない。

Shougo commented 6 years ago

@nekowasabi parallel ブランチ最新版での動作確認をおねがいします。

Shougo commented 6 years ago

@nekowasabi Typescript だと neocomplete が良いという件に関しても説明をおねがいします。手元で確認を行います。

Shougo commented 6 years ago

自動補完の途中でしてオムニ補完すると、候補の表示までは行われるが、実際の関数と引数の補完ができない。

再現しません。

nekowasabi commented 6 years ago

parallelブランチの最新版で、php, typescript両方での引数補完が確認できました。

@nekowasabi Typescript だと neocomplete が良いという件に関しても説明をおねがいします。手元で確認を行います。

昨日時点において、不完全でもtypescriptの引数補完ができたのはneocompleteのみだったということに由来します。現時点で補完できるようになったため、問題なくなりました。

typescriptの補完について

typescriptの複数の引数が補完できないことについては、 tsuquyomi(https://github.com/Quramy/tsuquyomi) というtypescript用のプラグインから補完を実行しており、こちらの影響で補完がおかしくなっているものと考えています。

以下、手元の環境での動作例

sc1 同じファイル内のtest(name, id)を補完しようとすると、補完情報自体は正しく表示される。

sc2 neosnippetで展開すると、補完情報のmethodの文字列がそのまま置換対象になっている(本来はname, idが展開後の置換候補になるはず)。

Shougo commented 6 years ago

これについては原因が分かりました。 対応を検討します。