mattn / vim-sonictemplate

Easy and high speed coding method
http://mattn.github.com/vim-sonictemplate
333 stars 42 forks source link

PHPでpostfix completionができない #41

Closed nekowasabi closed 4 years ago

nekowasabi commented 4 years ago

概要

golangで動作したPostfix Completionの設定をPHPに移植したところ、 入力した文字が消去されるのみで、置換されない。

環境

nvim 0.5.0 debian8

最小環境

" minimum setting {{{
if empty(glob('~/.config/nvim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
        \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
messages   autocmd VimEnter * PlugInstall | source $MYVIMRC
endif

call plug#begin('~/.config/nvim/plugged')
Plug 'mattn/vim-sonictemplate'
let g:sonictemplate_vim_template_dir = expand('~/.config/nvim/sonictemplate')
call plug#end()
" }}}1

■PHPのpattern.stpl
\(\S\+\)\.var$
    var {{$1}} = {{_cursor_}}

再現手順

  1. pattern.stplを~/.config/nvim/sonictemplate/phpにコピー
  2. PHPファイルを開き、 xxxx.var と入力してから、を入力

発生する現象

入力した文字が消去されるのみで、置換されない。

期待する動作

var xxxx = {{cursor}};に置換される

備考

autoload/sonictemplate.vim の364行目 let c = join(s:pat[s:get_raw_filetype()][k], "\n") の中を出力したところ、 golangでは['var {{$1}} = {{cursor}}'] PHPでは[ ]と空になっておりました。

また、coc.nvimを使用した場合、golangも同様の現象が発生し、 Postfix Completionができませんでした。

hiroebe commented 4 years ago

@nekowasabi これは補完が出ていないときにも再現するものでしょうか?

似た現象を確認していて,

の場合に,うまく動作していないようです.

これと同じ問題であれば,自分の fork の improve-normal-command ブランチ で改善されるかもしれないので,試してみていただけますか?

nekowasabi commented 4 years ago

@hiroebe 私も補完メニューが表示されているときに発生しています。

vim-jp.slack.comにて話題がありまして、

imap <expr> <c-y><c-b> pumvisible()?"<c-e><plug>(sonictemplate-postfix)":"<plug>(sonictemplate-postfix)"

のワークアラウンドで動作するという話がありました(mattnさんも見てみるとのことです)。

ブランチついては見てみます。

nekowasabi commented 4 years ago

@hiroebe coc.nvimが入っていると、phpだと動作しないようです さ