From 54de6e45b958e37a2eca4dca22572b6c08866177 Mon Sep 17 00:00:00 2001 From: JINNOUCHI Yasushi Date: Mon, 7 Aug 2023 17:46:32 +0900 Subject: [PATCH] chore: add types for plenary.async (#115) --- lua/frecency/async_finder.lua | 11 ++--------- lua/frecency/types.lua | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/lua/frecency/async_finder.lua b/lua/frecency/async_finder.lua index 0e42624..7dc2fdd 100644 --- a/lua/frecency/async_finder.lua +++ b/lua/frecency/async_finder.lua @@ -1,18 +1,12 @@ -local async = require "plenary.async" +local async = require "plenary.async" --[[@as PlenaryAsync]] ---@class FrecencyAsyncFinder ---@field closed boolean ---@field entries FrecencyEntry[] ----@field rx FrecencyRx +---@field rx PlenaryAsyncControlChannelRx ---@overload fun(_: string, process_result: (fun(entry: FrecencyEntry): nil), process_complete: fun(): nil): nil local AsyncFinder = {} ----@class FrecencyRx ----@field recv fun(): FrecencyEntry? - ----@class FrecencyTx ----@field send fun(entry: FrecencyEntry?): nil - ---@param fs FrecencyFS ---@param path string ---@param entry_maker fun(file: FrecencyFile): FrecencyEntry @@ -33,7 +27,6 @@ AsyncFinder.new = function(fs, path, entry_maker, initial_results) entry.index = i table.insert(self.entries, entry) end - ---@type FrecencyTx, FrecencyRx local tx, rx = async.control.channel.mpsc() self.rx = rx async.run(function() diff --git a/lua/frecency/types.lua b/lua/frecency/types.lua index cdbd154..232ccf5 100644 --- a/lua/frecency/types.lua +++ b/lua/frecency/types.lua @@ -1,3 +1,4 @@ +---@diagnostic disable: unused-local -- NOTE: types below are borrowed from sqlite.lua ---@class sqlite_db @Main sqlite.lua object. @@ -65,6 +66,41 @@ ---@alias scan_dir fun(path: string, opts: PlenaryScanDirOptions): string[] +---@class PlenaryAsync +---@field control PlenaryAsyncControl +---@field util PlenaryAsyncUtil +local PlenaryAsync = {} + +---@async +---@param f fun(): nil +---@return nil +function PlenaryAsync.run(f) end + +---@class PlenaryAsyncControl +---@field channel PlenaryAsyncControlChannel + +---@class PlenaryAsyncControlChannel +---@field mpsc fun(): PlenaryAsyncControlChannelTx, PlenaryAsyncControlChannelRx + +---@class PlenaryAsyncControlChannelTx +---@field send fun(entry: FrecencyEntry?): nil +local PlenaryAsyncControlChannelTx = {} + +---@class PlenaryAsyncControlChannelRx +local PlenaryAsyncControlChannelRx = {} + +---@async +---@return FrecencyEntry? +function PlenaryAsyncControlChannelRx.recv() end + +---@class PlenaryAsyncUtil +local PlenaryAsyncUtil = {} + +---@async +---@param ms integer +---@return nil +function PlenaryAsyncUtil.sleep(ms) end + -- NOTE: types are for telescope.nvim ---@alias TelescopeEntryDisplayer fun(items: string[]): table