👏

ddu.vim でファイルを開くときに tab drop で開く

2024/01/24に公開

かなり苦労して設定したので覚書。
最終的に出来上がったもの自体は簡素なんだけどね…。
あ、前提として ddu-kind-file に対する設定となります。

# tab drop 用の kind の action を定義する
function! s:open_tabdrop(items) abort
	for item in a:items
		let filepath = item["action"]["path"]
		execute "tab drop" filepath
	endfor
endfunction
call ddu#custom#action('kind', 'file', 'tabdrop',
	\ { args -> s:open_tabdrop(args["items"]) })

# ddu 用のキーマッピングを設定する場合
augroup my_ddu
	autocmd!
	autocmd FileType ddu-ff call s:ddu_my_settings()
augroup END
function! s:ddu_my_settings() abort
  # tabdrop アクションを呼び出す設定
  nnoremap <buffer><silent> t
          \ <Cmd>call ddu#ui#do_action('itemAction', #{ name: "tabdrop" })<CR>
endfunction

ddu-kind-file に依存せずに単純に ddu#ui#do_action 経由画 tab drop を呼び出す場合は以下のようにも呼び出せます。

# ddu 用のキーマッピングを設定する場合
augroup my_ddu
	autocmd!
	autocmd FileType ddu-ff call s:ddu_my_settings()
augroup END
function! s:ddu_my_settings() abort
  # ddu#ui#do_action 経由で任意の Vim コマンドを呼び出す
  nnoremap <buffer><silent> t
        \ <Cmd>call ddu#ui#do_action('itemAction', {'params': {'command': 'tab drop'}})<CR>
endfunction

ただ、この場合だとキー入力してからコマンドが実行されるまでに若干タイムラグがある?ぽい?ので気になります。
ddu.vim(に限らないんですが…)設定の仕方が複雑過ぎるので ちゃんと保守されている設定の仕方の一覧 みたいなのがほしいですねー。
help 見るだけだと絶対にたどり着けなかった…。

参照

GitHubで編集を提案

Discussion