From f637ef2e6dbfb03cc896143d73749f541ca18e3e Mon Sep 17 00:00:00 2001 From: William Boman Date: Thu, 12 May 2022 18:02:47 +0200 Subject: feat: patch :LspInfo's "cmd is executable" diagnostic message (#691) --- lua/nvim-lsp-installer/core/functional.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'lua') diff --git a/lua/nvim-lsp-installer/core/functional.lua b/lua/nvim-lsp-installer/core/functional.lua index 244c3d96..8b549fb6 100644 --- a/lua/nvim-lsp-installer/core/functional.lua +++ b/lua/nvim-lsp-installer/core/functional.lua @@ -172,4 +172,29 @@ function functional.partial(fn, ...) end end +function functional.compose(...) + local functions = functional.table_pack(...) + assert(functions.n > 0, "compose requires at least one function") + return function(...) + local result = functional.table_pack(...) + for i = functions.n, 1, -1 do + result = functional.table_pack(functions[i](unpack(result, 1, result.n))) + end + return unpack(result, 1, result.n) + end +end + +---@generic T +---@param filter_fn fun(item: T): boolean +---@return fun(list: T[]): T[] +function functional.filter(filter_fn) + return functional.partial(vim.tbl_filter, filter_fn) +end + +function functional.each(fn, list) + for k, v in pairs(list) do + fn(v, k) + end +end + return functional -- cgit v1.2.3-70-g09d2