lambdalisue / vim-gista

An alternative gist.vim, vim plugin which manipulate gists in Vim.
http://www.vim.org/scripts/script.php?script_id=4976
MIT License
156 stars 5 forks source link

unite-action 'select' does not work correctly when the action is executed directly #17

Closed lambdalisue closed 10 years ago

lambdalisue commented 10 years ago

If 'select' is called from 'smart_xxxx', it works but it does not work correctly when the action is called from user interface.

lambdalisue commented 10 years ago

下記のように 'select' アクションを定義しているが、'action'選択という 一時的な Uniteインターフェイスが既に存在しており、そこから呼ばれた場合

  1. 'action'の決定、実行
  2. 'action'が使用した一次インターフェイスを閉じる

という流れに巻き込まれて'select'が作成する一時Uniteインターフェイスも閉じられる、気がする。だからdefault_action経由で実行された場合は問題なく実行でき、'action'経由だと失敗する?

function! s:kind.action_table.select.func(candidate) " {{{
  let context = {}
  let context.source__gist = a:candidate.source__gist
  call unite#start_temporary(['gista_file'], context)
endfunction " }}}

該当部分ソースコード: https://github.com/lambdalisue/vim-gista/blob/master/autoload/unite/kinds/gista.vim#L52

たぶんうまくやる方法があるが、わからない……

lambdalisue commented 10 years ago

unite#start_script({sources} [, {context}]) を使うと現在存在しているバッファにより自動的に処理を切り替えてくれるのでこれを利用すれば良いらしい。

http://lingr.com/room/vim/archives/2014/07/02#message-19490730