irongit

A Neovim plugin enabling you to solve LeetCode problems.

50 lines1020 BLua
1local Object = require("nui.object")
2
3---@class lc.ui.opts
4---@field padding? lc.ui.padding
5---@field spacing? integer
6---@field position? lc.ui.position
7---@field hl? string
8---@field on_press? function
9---@field sc? string
10
11---@class lc.ui.Opts
12---@field opts lc.ui.opts
13local Opts = Object("LeetOpts")
14
15function Opts:get_padding() --
16 local pad = vim.deepcopy(self.opts.padding)
17 self.opts.padding = {}
18 return pad
19end
20
21function Opts:get_spacing() --
22 local spacing = self.opts.spacing
23 self.opts.spacing = nil
24 return spacing
25end
26
27function Opts:merge(opts) --
28 self.opts = vim.tbl_deep_extend("keep", self.opts, opts or {})
29
30 return self
31end
32
33function Opts:set(opts)
34 self.opts = vim.tbl_deep_extend("force", self.opts, opts)
35end
36
37function Opts:get()
38 return self.opts
39end
40
41function Opts:init(opts) --
42 self.opts = vim.tbl_deep_extend("force", {
43 padding = {},
44 }, vim.deepcopy(opts) or {})
45end
46
47---@type fun(opts: table): lc.ui.Opts
48local LeetOpts = Opts
49
50return LeetOpts