From 6a59fe42ed74dc0f35d1c62fca2dd50c11df57c8 Mon Sep 17 00:00:00 2001 From: Jingyi Zhao Date: Mon, 22 Sep 2025 23:19:51 -0700 Subject: [PATCH 1/2] feat: submit hook for capture both successful, failed submissions --- lua/leetcode/config/template.lua | 4 ++++ lua/leetcode/runner/init.lua | 2 ++ 2 files changed, 6 insertions(+) diff --git a/lua/leetcode/config/template.lua b/lua/leetcode/config/template.lua index 3d7c5c7..705237c 100644 --- a/lua/leetcode/config/template.lua +++ b/lua/leetcode/config/template.lua @@ -24,6 +24,7 @@ ---| "enter" ---| "question_enter" ---| "leave" +---| "submit" ---@alias lc.size ---| string @@ -120,6 +121,9 @@ local M = { ---@type fun()[] ["leave"] = {}, + + ---@type fun(question: lc.ui.Question, buffer: string, status_msg: string|nil, success: string|nil)[] + ["submit"] = {}, }, keys = { diff --git a/lua/leetcode/runner/init.lua b/lua/leetcode/runner/init.lua index 69fd543..1272220 100644 --- a/lua/leetcode/runner/init.lua +++ b/lua/leetcode/runner/init.lua @@ -4,6 +4,7 @@ local log = require("leetcode.logger") local interpreter = require("leetcode.api.interpreter") local config = require("leetcode.config") local Judge = require("leetcode.logger.spinner.judge") +local utils = require("leetcode.utils") ---@type Path local leetbody = config.storage.cache:joinpath("body") @@ -52,6 +53,7 @@ function Runner:handle(submit) end if item then + utils.exec_hooks("submit", question, body.typed_code, item.status_msg, item._.success) if item._.success then judge:success(item.status_msg) else From 606ac3d38d8dc29c34de49bdf7880c70e7f3d73b Mon Sep 17 00:00:00 2001 From: Jingyi Zhao Date: Sun, 7 Dec 2025 14:30:49 -0800 Subject: [PATCH 2/2] fix: bundle entire item into the submit hook and delegate logic outside --- lua/leetcode/config/template.lua | 2 +- lua/leetcode/runner/init.lua | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lua/leetcode/config/template.lua b/lua/leetcode/config/template.lua index 705237c..8223044 100644 --- a/lua/leetcode/config/template.lua +++ b/lua/leetcode/config/template.lua @@ -122,7 +122,7 @@ local M = { ---@type fun()[] ["leave"] = {}, - ---@type fun(question: lc.ui.Question, buffer: string, status_msg: string|nil, success: string|nil)[] + ---@type fun(question: lc.ui.Question, buffer: string, item_json: table)[] ["submit"] = {}, }, diff --git a/lua/leetcode/runner/init.lua b/lua/leetcode/runner/init.lua index 1272220..e61a89a 100644 --- a/lua/leetcode/runner/init.lua +++ b/lua/leetcode/runner/init.lua @@ -53,7 +53,10 @@ function Runner:handle(submit) end if item then - utils.exec_hooks("submit", question, body.typed_code, item.status_msg, item._.success) + -- print(vim.inspect(item)) + -- utils.exec_hooks("submit", question, body.typed_code, item.status_msg, item._.success) + utils.exec_hooks("submit", question, body.typed_code, item) + if item._.success then judge:success(item.status_msg) else