はじめに
経緯 (よみもの)
いわゆる ShougoWare
のなるべく新しいものを追っている…つもりでありましたが、いつの間にか ddc.vim
や ddu.vim
などの Denops.vim
に依存先を変更したプラグインがリリースされていました
ようやく切り替えたのは確か2021年の秋ごろですが、windowsとmacOSを行ったり来たりすることが多い私にとっては python
のパスを切り替えて :healthcheck
のステータスを確認して…という作業がPCが交換されるたびに発生しており、それが非常に煩雑に感じていた為、この切り替えは非常にありがたかったのです
ですが…
どうして Defx.nvim ではサポートされていた vim-choosewin が使えなくなっているのですか?
知らんよって言われそうなのですが、その辺のことはShougoさんの記述記事に記載されているように思います
にわかものの私にとっては、歴史のところですでに読み物として面白いと感じておりますが、下記リンクの通り、プラグインそのものに拡張性を持たせるというのが ddc.vim
や ddu.vim
の設計思想の根幹にあるように思います
でも選んだファイル(item)を任意のウィンドウに開きたいねん!!
しかし、おそらく3年以上ほど Defx.nvim + vim-choosewin でのファイル操作に慣れ親しんだ私にとって、このあたりの修正はインパクトが大きかったです
なにより頭の中で 「source
…? sourceOption
…? source.parameter
…? filterParams
…? なにがなにでどれがどれ…? 😵💫😵💫😵💫」となってしまい、まともに設定を触ることができていませんでした
ただ、最近になってようやくヘルプページから以下の文言を見つけることができ、ここから解決ができました
動作確認環境
- OS: Windows 11 Pro
- バージョン 10.0.22621 ビルド 22621
- Neovim: v0.8.2
PS C:\Users\cocoa> nvim --version
NVIM v0.8.2
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3
Compiled by runneradmin@fv-az28-353
Features: -acl +iconv +tui
See ":help feature-compile"
システム vimrc: "$VIM\sysinit.vim"
省略時の $VIM: "C:/Program Files (x86)/nvim/share/nvim"
Run :checkhealth for more info
解決方法
設定ファイルにて、以下の通りに関数を定義し、それを ddu#ui#<filer|ff>#do_action('itemAction')
で呼んであげるようにするといい感じに vim-choosewin のあとにファイルを開くことができます
function! s:win_all()
return range(1, winnr('$'))
endfunction
function! MyDduChooseWin(args) abort
let l:path = a:args.items[0].action.path
call choosewin#start(s:win_all(), {'auto_choose': v:true, 'hook_enable': v:false})
execute 'edit ' . l:path
endfunction
call ddu#custom#action('kind', 'file', 'mychoosewin', { args -> MyDduChooseWin(args) })
nnoremap <buffer><silent> -
\ <Cmd>call ddu#ui#ff#do_action(
\ 'itemAction', #{ name: 'mychoosewin', quit: v:true }
\ )<CR>
nnoremap <buffer><silent> -
\ <Cmd>call ddu#ui#ff#do_action(
\ 'itemAction', #{ name: 'mychoosewin', quit: v:true }
\ )<CR>
ddu#custom#action()
について
こちらもヘルプに記載がありますが、 ddu.vim
に接続されているあらゆるソースタイプとソースを対象に、任意の名前で itemAction
からコールする関数を定義できるようです
そのほか貼っていなかった参考…?
おわりに
ddu-source-custom-list
あたりもそうですが、独自拡張が書きやすいのは非常にありがたいですね
なお使いこなせるとは言えないのがつらいところです、かなしみ
おわり