From 2215e4ddd906d5a9ece37f5234429ddcb8b09f3e Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Wed, 22 May 2024 08:34:43 +0900 Subject: [PATCH] Add uiDone autocmd --- autoload/ddu/denops.vim | 2 +- denops/ddu/base/ui.ts | 1 + denops/ddu/ext.ts | 6 ++++++ doc/ddu.txt | 7 ++++++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/autoload/ddu/denops.vim b/autoload/ddu/denops.vim index b2e45d2..c6b25d4 100644 --- a/autoload/ddu/denops.vim +++ b/autoload/ddu/denops.vim @@ -92,7 +92,7 @@ function s:init() abort augroup ddu autocmd! autocmd User DenopsPluginPost:ddu let g:ddu#_initialized = v:true - autocmd User Ddu:redraw,Ddu:uiReady : + autocmd User Ddu:redraw,Ddu:uiReady,Ddu:uiDone : augroup END let g:ddu#_started = reltime() diff --git a/denops/ddu/base/ui.ts b/denops/ddu/base/ui.ts index 5f9d011..9dbe062 100644 --- a/denops/ddu/base/ui.ts +++ b/denops/ddu/base/ui.ts @@ -133,6 +133,7 @@ export abstract class BaseUi< name = ""; path = ""; isInitialized = false; + prevDone = false; onInit(_args: OnInitArguments): void | Promise {} onBeforeAction( diff --git a/denops/ddu/ext.ts b/denops/ddu/ext.ts index 3fd7bdb..7969843 100644 --- a/denops/ddu/ext.ts +++ b/denops/ddu/ext.ts @@ -973,6 +973,12 @@ export async function uiRedraw< // NOTE: UI window is generated. await denops.cmd("doautocmd User Ddu:uiReady"); } + + if (!ui.prevDone && context.done) { + await denops.cmd("doautocmd User Ddu:uiDone"); + } + + ui.prevDone = context.done; } catch (e: unknown) { if (e instanceof Error && e.message.includes(" E523: ")) { // NOTE: It may be called on invalid state diff --git a/doc/ddu.txt b/doc/ddu.txt index a5a097d..1fb76ec 100644 --- a/doc/ddu.txt +++ b/doc/ddu.txt @@ -1096,7 +1096,12 @@ ddu.vim defines some |User| autocmds. Ddu:redraw Called after |ddu-ui-attribute-redraw| is called. - *ddu-autocmd-Ddu:uiReady* + *ddu-autocmd-Ddu:uiDone* +Ddu:uiDone + Called after all items are gathered in + |ddu-ui-attribute-redraw|. + + *ddu-autocmd-Ddu:uiReady* Ddu:uiReady Called after UI window is created in |ddu-ui-attribute-redraw|.