irongit

A Neovim plugin enabling you to solve LeetCode problems.

feat(config): `open_on_runcode` now defaults to `true`

kawreauthored
parent 33912f0commit 6665aa7190b288328ac927bbc275bc568917bcbeBrowse files

6 files changed, +34 -25

+1-1README.md
@@ -97,7 +97,7 @@ To see full configuration types see [template.lua](./lua/leetcode/config/templat
9797 logging = true,
9898
9999 console = {
100- open_on_runcode = false, ---@type boolean
100+ open_on_runcode = true, ---@type boolean
101101
102102 dir = "row", ---@type "col" | "row"
103103
+2-1lua/leetcode-menu/init.lua
@@ -114,6 +114,7 @@ end
114114
115115 function menu:handle_mount()
116116 if cookie.get() then
117+ self:set_layout("loading")
117118 local auth_api = require("leetcode.api.auth")
118119
119120 auth_api._user(function(auth, err)
@@ -179,7 +180,7 @@ function menu:init()
179180 }, self)
180181
181182 _Lc_Menu = self
182- return self:set_layout("loading"):handle_mount()
183+ return self:handle_mount()
183184 end
184185
185186 return menu
+1-1lua/leetcode-menu/layout/loading.lua
@@ -7,7 +7,7 @@ local Title = require("leetcode-menu.components.title")
77
88 local title = Title:init({}, "Loading...")
99
10-local exit = button:init({ src = "Exit", icon = "󰩈" }, "q", function() vim.cmd.quitall() end)
10+local exit = button:init({ src = "Exit", icon = "󰩈" }, "q", vim.cmd.quitall)
1111
1212 return Layout:init({
1313 components = {
+0-0lua/leetcode/command/options.lua → lua/leetcode/command/arguments.lua

No content changes (mode or rename only).

+29-21lua/leetcode/command/init.lua
@@ -1,5 +1,5 @@
11 local log = require("leetcode.logger")
2-local arguments = require("leetcode.command.options")
2+local arguments = require("leetcode.command.arguments")
33
44 ---@class lc.Commands
55 local cmd = {}
@@ -187,14 +187,25 @@ local function cmds_keys(t)
187187 end, vim.tbl_keys(t))
188188 end
189189
190+---@param _ string
191+---@param line string
192+---
193+---@return string[]
194+function cmd.complete(_, line)
195+ local args, options = cmd.parse(line:gsub("Leet%s", ""))
196+ return cmd.rec_complete(args, options, cmd.commands)
197+end
198+
190199 ---@param args string[]
191200 ---@param options string[]
192201 ---@param cmds table<string,any>
193-function cmd.complete(args, options, cmds)
202+---
203+---@return string[]
204+function cmd.rec_complete(args, options, cmds)
194205 if not cmds or vim.tbl_isempty(args) then return {} end
195206
196207 if not cmds._args and cmds[args[1]] then
197- return cmd.complete(args, options, cmds[table.remove(args, 1)])
208+ return cmd.rec_complete(args, options, cmds[table.remove(args, 1)])
198209 end
199210
200211 local txt, keys = args[#args], cmds_keys(cmds)
@@ -225,58 +236,55 @@ function cmd.complete(args, options, cmds)
225236 )
226237 end
227238
228-function cmd.cmd(args)
239+function cmd.exec(args)
229240 local t = cmd.commands
241+
230242 local options = {}
231243 for s in vim.gsplit(args.args, "%s+", { trimempty = true }) do
232244 local opt = vim.split(s, "=")
233245 if opt[2] then
234- options[opt[1]] = vim.split(opt[2], ",%s*", { trimempty = true })
235- else
246+ options[opt[1]] = vim.split(opt[2], ",", { trimempty = true })
247+ elseif t then
236248 t = t[s]
249+ else
250+ break
237251 end
238252 end
239253
240- t[1](options)
254+ if t and type(t[1]) == "function" then
255+ t[1](options) ---@diagnostic disable-line
256+ else
257+ log.error(("Invalid command: `%s %s`"):format(args.name, args.args))
258+ end
241259 end
242260
243261 function cmd.setup()
244- vim.api.nvim_create_user_command("Leet", function(args)
245- if not pcall(cmd.cmd, args) then log.error(("Invalid command: `%s`"):format(args.args)) end
246- end, {
262+ vim.api.nvim_create_user_command("Leet", cmd.exec, {
247263 bar = true,
248264 bang = true,
249265 nargs = "?",
250266 desc = "Leet",
251- ---@param _ string
252- ---@param line string
253- complete = function(_, line)
254- local args, options = cmd.parse(line:gsub("Leet%s", ""))
255- return cmd.complete(args, options, cmd.commands)
256- end,
267+ complete = cmd.complete,
257268 })
258269 end
259270
260271 cmd.commands = {
261272 cmd.menu,
262273
274+ menu = { cmd.menu },
263275 console = { cmd.console },
264276 info = { cmd.info },
265- menu = { cmd.menu },
266277 tabs = { cmd.question_tabs },
267278 lang = { cmd.change_lang },
268279 run = { cmd.q_run },
269280 test = { cmd.q_run },
270281 submit = { cmd.q_submit },
271- fix = { cmd.fix },
272282 random = { cmd.random_question },
273283 daily = { cmd.qot },
284+ fix = { cmd.fix },
274285
275286 list = {
276287 cmd.problems,
277-
278- test = function() log.info("siema") end,
279-
280288 _args = arguments.list,
281289 },
282290
+1-1lua/leetcode/config/template.lua
@@ -56,7 +56,7 @@ local M = {
5656 logging = true,
5757
5858 console = {
59- open_on_runcode = false, ---@type boolean
59+ open_on_runcode = true, ---@type boolean
6060
6161 dir = "row", ---@type "col" | "row"
6262