denite.nvimのFloating Windowオプションを使おう


皆さんNeoVim v4.0から追加される予定のFloating Windowという機能はご存じでしょうか?
既存のウィンドウの上部に重ねて表示できるウィンドウです。
最近のモダンなエディタなんかだとなんかFunctionにカーソル合わせたときに表示されるアレです。アレ。

私は以下の記事で存在を知りました。

話は変わりますが、私はVimのインタラクティブフィルターとして、もっぱらdenite.nvim推しです。
fzf.vimに浮気したりもしてますが、最終的にdeniteに戻ります。
がしかし、そんな私も少しだけdeniteに気になる点がありました。
deniteを起動したときに、既存のウィンドウがグイッと押し上げられるように見えるのです。
もっともこれはdeniteではなくVimの制約なので、どのインタラクティブフィルタでも同様の動きになりますが。

Floating Windowが気になって自分でVim scriptをいじいじして、ほえーこんなんなのかー。
と遊んでいたとき、Floating Windowがあればウィンドウグイッと問題が解決できるのではとひらめきました。

よーしPR作っちゃうぞと思ってdeniteのPRページに飛んでみると、
なんと。既に実装が完了していました。スバラシイ!

というわけでdeniteのFloating Windowを有効化するといい感じになります。

参考までに私の設定を以下にのっけておきます。デフォルトは少しウィンドウが狭いので広げてあります。@
Floating Windowが実装されたHEADのNeoVimでしか動かないので、あしからず。

let s:denite_win_width_percent = 0.85
let s:denite_win_height_percent = 0.7

" Change denite default options
call denite#custom#option('default', {
    \ 'split': 'floating',
    \ 'winwidth': float2nr(&columns * s:denite_win_width_percent),
    \ 'wincol': float2nr((&columns - (&columns * s:denite_win_width_percent)) / 2),
    \ 'winheight': float2nr(&lines * s:denite_win_height_percent),
    \ 'winrow': float2nr((&lines - (&lines * s:denite_win_height_percent)) / 2),
    \ })