🪟

ある window が floating window かどうか判定する(Neovim)

2023/04/09に公開

はじめに

Neovim には、ある window が floating window かどうか直接判定する API はありません。
しかしやり方はありますし、実は help にも書いています。

判定法

以下のように判定できます。

local function is_floating_win(winid)
  local config = vim.api.nvim_win_get_config(winid)
  return config.relative ~= ""
end

nvim_win_get_config() のヘルプを引用します。
この関数の戻り値は、nvim_open_win() に与えられた値になります。
しかし通常の window でも使用でき、その場合は relative が空(文字列)になります。

nvim_win_get_config({window})                          *nvim_win_get_config()*
    Gets window configuration.

    The returned value may be given to |nvim_open_win()|.

    `relative` is empty for normal windows.

    Parameters:
      • {window}  Window handle, or 0 for current window

    Return:
        Map defining the window configuration, see |nvim_open_win()|
GitHubで編集を提案

Discussion