From 46bf47a864f85c1ed307494e3e4b6aca9aea823b Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Sun, 15 Sep 2024 16:58:08 +0900 Subject: [PATCH] Add clearSelectedItems() for UI --- deno.jsonc | 2 +- denops/ddu/base/ui.ts | 110 +++++++++++++++++------------------------- denops/ddu/ddu.ts | 10 ++++ 3 files changed, 56 insertions(+), 66 deletions(-) diff --git a/deno.jsonc b/deno.jsonc index 5b8b22e..5c15fe4 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -16,7 +16,7 @@ "include": [ "denops/ddu/**/*.ts", "denops/ddu/**/*.js" - ], + ] }, "imports": { }, diff --git a/denops/ddu/base/ui.ts b/denops/ddu/base/ui.ts index 2f6cf79..ee48bef 100644 --- a/denops/ddu/base/ui.ts +++ b/denops/ddu/base/ui.ts @@ -33,85 +33,61 @@ export type OnAfterActionArguments = { uiParams: Params; }; -export type RefreshItemsArguments = { +type BaseUiArguments = { denops: Denops; context: Context; options: DduOptions; uiOptions: UiOptions; uiParams: Params; - sources: SourceInfo[]; - items: DduItem[]; }; -export type CollapseItemArguments = { - denops: Denops; - context: Context; - options: DduOptions; - uiOptions: UiOptions; - uiParams: Params; - item: DduItem; -}; +export type RefreshItemsArguments = + & BaseUiArguments + & { + sources: SourceInfo[]; + items: DduItem[]; + }; -export type ExpandItemArguments = { - denops: Denops; - context: Context; - options: DduOptions; - uiOptions: UiOptions; - uiParams: Params; - parent: DduItem; - children: DduItem[]; - isGrouped: boolean; -}; +export type CollapseItemArguments = + & BaseUiArguments + & { + item: DduItem; + }; -export type SearchItemArguments = { - denops: Denops; - context: Context; - options: DduOptions; - uiOptions: UiOptions; - uiParams: Params; - item: DduItem; -}; +export type ExpandItemArguments = + & BaseUiArguments + & { + parent: DduItem; + children: DduItem[]; + isGrouped: boolean; + }; -export type RedrawArguments = { - denops: Denops; - context: Context; - options: DduOptions; - uiOptions: UiOptions; - uiParams: Params; -}; +export type SearchItemArguments = + & BaseUiArguments + & { + item: DduItem; + }; -export type QuitArguments = { - denops: Denops; - context: Context; - options: DduOptions; - uiOptions: UiOptions; - uiParams: Params; -}; +export type RedrawArguments = BaseUiArguments< + Params +>; -export type VisibleArguments = { - denops: Denops; - context: Context; - options: DduOptions; - uiOptions: UiOptions; - uiParams: Params; - tabNr: number; -}; +export type QuitArguments = BaseUiArguments; -export type WinidArguments = { - denops: Denops; - context: Context; - options: DduOptions; - uiOptions: UiOptions; - uiParams: Params; -}; +export type VisibleArguments = + & BaseUiArguments + & { + tabNr: number; + }; -export type UpdateCursorArguments = { - denops: Denops; - context: Context; - options: DduOptions; - uiOptions: UiOptions; - uiParams: Params; -}; +export type WinidArguments = BaseUiArguments; + +export type UpdateCursorArguments = BaseUiArguments< + Params +>; + +export type ClearSelectedItemsArguments = + BaseUiArguments; export abstract class BaseUi { apiVersion = 2; @@ -155,6 +131,10 @@ export abstract class BaseUi { updateCursor(_args: UpdateCursorArguments): void | Promise {} + clearSelectedItems( + _args: ClearSelectedItemsArguments, + ): void | Promise {} + abstract actions: UiActions; abstract params(): Params; diff --git a/denops/ddu/ddu.ts b/denops/ddu/ddu.ts index 025a61e..ac4eca4 100644 --- a/denops/ddu/ddu.ts +++ b/denops/ddu/ddu.ts @@ -1110,6 +1110,16 @@ export class Ddu { const { signal } = this.#aborter; if (ui) { + if (ui.clearSelectedItems) { + await ui.clearSelectedItems({ + denops, + context: this.#context, + options: this.#options, + uiOptions, + uiParams, + }); + } + await uiRedraw( denops, this.#uiRedrawLock,