@@ -5,7 +5,7 @@ import { ulid } from "https://deno.land/
[email protected] /ulid/mod.ts";
55
66import type { Border , OpenOptions } from "./types.ts" ;
77
8- const cacheKey = "denops_std/popup/nvim.ts@1 " ;
8+ const cacheKey = "denops_std/popup/nvim.ts@2 " ;
99
1010async function ensurePrerequisites ( denops : Denops ) : Promise < string > {
1111 if ( typeof denops . context [ cacheKey ] === "string" ) {
@@ -21,6 +21,12 @@ async function ensurePrerequisites(denops: Denops): Promise<string> {
2121 endif
2222 return winid
2323 endfunction
24+ function! DenopsStdPopupNvimWinSetConfig_${ suffix } (winid, config, winhighlight) abort
25+ call nvim_win_set_config(a:winid, a:config)
26+ if a:winhighlight isnot v:null
27+ call nvim_win_set_option(winid, 'winhighlight', a:winhighlight)
28+ endif
29+ endfunction
2430 ` ;
2531 await execute ( denops , script ) ;
2632 return suffix ;
@@ -42,12 +48,36 @@ export async function openPopup(
4248 ) as number ;
4349}
4450
51+ export async function configPopup (
52+ denops : Denops ,
53+ winid : number ,
54+ options : Partial < Omit < OpenOptions , "bufnr" | "noRedraw" > > ,
55+ ) : Promise < void > {
56+ const suffix = await ensurePrerequisites ( denops ) ;
57+ const nvimWinSetConfig = toNvimWinSetConfig ( options ) ;
58+ const winhighlight = toNvimWinhighlight ( options . highlight ) ;
59+ await denops . call (
60+ `DenopsStdPopupNvimWinSetConfig_${ suffix } ` ,
61+ winid ,
62+ nvimWinSetConfig ,
63+ winhighlight ,
64+ ) ;
65+ }
66+
4567export async function closePopup ( denops : Denops , winid : number ) : Promise < void > {
4668 await nvimFn . nvim_win_close ( denops , winid , true ) ;
4769}
4870
49- function toNvimOpenWinConfig ( options : OpenOptions ) : nvimFn . NvimOpenWinConfig {
50- const v : nvimFn . NvimOpenWinConfig = {
71+ function toNvimOpenWinConfig (
72+ options : Omit < OpenOptions , "bufnr" | "noRedraw" > ,
73+ ) : nvimFn . NvimOpenWinConfig {
74+ return toNvimWinSetConfig ( options ) as nvimFn . NvimOpenWinConfig ;
75+ }
76+
77+ function toNvimWinSetConfig (
78+ options : Partial < Omit < OpenOptions , "bufnr" | "noRedraw" > > ,
79+ ) : Partial < nvimFn . NvimOpenWinConfig > {
80+ const v : Partial < nvimFn . NvimOpenWinConfig > = {
5181 relative : options . relative ,
5282 anchor : options . anchor ,
5383 width : options . width ,
@@ -63,7 +93,7 @@ function toNvimOpenWinConfig(options: OpenOptions): nvimFn.NvimOpenWinConfig {
6393 Object
6494 . entries ( v )
6595 . filter ( ( [ , v ] ) => v != undefined ) ,
66- ) as nvimFn . NvimOpenWinConfig ;
96+ ) as Partial < nvimFn . NvimOpenWinConfig > ;
6797}
6898
6999function toNvimBorder (
0 commit comments