chore: add types for plenary.async (#115)

This commit is contained in:
JINNOUCHI Yasushi 2023-08-07 17:46:32 +09:00 committed by GitHub
parent c87b76f6ef
commit 54de6e45b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 9 deletions

View File

@ -1,18 +1,12 @@
local async = require "plenary.async" local async = require "plenary.async" --[[@as PlenaryAsync]]
---@class FrecencyAsyncFinder ---@class FrecencyAsyncFinder
---@field closed boolean ---@field closed boolean
---@field entries FrecencyEntry[] ---@field entries FrecencyEntry[]
---@field rx FrecencyRx ---@field rx PlenaryAsyncControlChannelRx
---@overload fun(_: string, process_result: (fun(entry: FrecencyEntry): nil), process_complete: fun(): nil): nil ---@overload fun(_: string, process_result: (fun(entry: FrecencyEntry): nil), process_complete: fun(): nil): nil
local AsyncFinder = {} local AsyncFinder = {}
---@class FrecencyRx
---@field recv fun(): FrecencyEntry?
---@class FrecencyTx
---@field send fun(entry: FrecencyEntry?): nil
---@param fs FrecencyFS ---@param fs FrecencyFS
---@param path string ---@param path string
---@param entry_maker fun(file: FrecencyFile): FrecencyEntry ---@param entry_maker fun(file: FrecencyFile): FrecencyEntry
@ -33,7 +27,6 @@ AsyncFinder.new = function(fs, path, entry_maker, initial_results)
entry.index = i entry.index = i
table.insert(self.entries, entry) table.insert(self.entries, entry)
end end
---@type FrecencyTx, FrecencyRx
local tx, rx = async.control.channel.mpsc() local tx, rx = async.control.channel.mpsc()
self.rx = rx self.rx = rx
async.run(function() async.run(function()

View File

@ -1,3 +1,4 @@
---@diagnostic disable: unused-local
-- NOTE: types below are borrowed from sqlite.lua -- NOTE: types below are borrowed from sqlite.lua
---@class sqlite_db @Main sqlite.lua object. ---@class sqlite_db @Main sqlite.lua object.
@ -65,6 +66,41 @@
---@alias scan_dir fun(path: string, opts: PlenaryScanDirOptions): string[] ---@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 -- NOTE: types are for telescope.nvim
---@alias TelescopeEntryDisplayer fun(items: string[]): table ---@alias TelescopeEntryDisplayer fun(items: string[]): table