feat(config): add submit_id platform override for language selection
Problem: The submission language ID is hardcoded per platform in `language_ids.py` (e.g. CF `"89"` = GNU G++17 7.3.0). Users have no way to select a different version like G++20 or C++23. Solution: Add `submit_id?: string` to `CpPlatformOverrides` and `CpLanguage`. When set, `submit.lua` passes the resolved `submit_id` directly to the scraper instead of the generic language key. The existing `get_language_id() or args[4]` fallback in `base.py` handles pre-resolved IDs without any Python changes.
This commit is contained in:
parent
8465e70772
commit
e7ebe738a4
2 changed files with 13 additions and 1 deletions
|
|
@ -8,6 +8,7 @@
|
|||
---@field extension string
|
||||
---@field commands CpLangCommands
|
||||
---@field template? string
|
||||
---@field submit_id? string
|
||||
|
||||
---@class CpTemplatesConfig
|
||||
---@field cursor_marker? string
|
||||
|
|
@ -16,6 +17,7 @@
|
|||
---@field extension? string
|
||||
---@field commands? CpLangCommands
|
||||
---@field template? string
|
||||
---@field submit_id? string
|
||||
|
||||
---@class CpPlatform
|
||||
---@field enabled_languages string[]
|
||||
|
|
@ -293,6 +295,9 @@ local function merge_lang(base, ov)
|
|||
if ov.template then
|
||||
out.template = ov.template
|
||||
end
|
||||
if ov.submit_id then
|
||||
out.submit_id = ov.submit_id
|
||||
end
|
||||
return out
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
local M = {}
|
||||
|
||||
local cache = require('cp.cache')
|
||||
local config = require('cp.config')
|
||||
local logger = require('cp.log')
|
||||
local state = require('cp.state')
|
||||
|
||||
|
|
@ -56,6 +57,12 @@ function M.submit(opts)
|
|||
end
|
||||
source_file = vim.fn.fnamemodify(source_file, ':p')
|
||||
|
||||
local lang_result = config.get_language_for_platform(platform, language)
|
||||
local submit_language = language
|
||||
if lang_result.valid and lang_result.effective and lang_result.effective.submit_id then
|
||||
submit_language = lang_result.effective.submit_id
|
||||
end
|
||||
|
||||
prompt_credentials(platform, function(creds)
|
||||
vim.cmd.update()
|
||||
vim.notify('[cp.nvim] Submitting...', vim.log.levels.INFO)
|
||||
|
|
@ -64,7 +71,7 @@ function M.submit(opts)
|
|||
platform,
|
||||
contest_id,
|
||||
problem_id,
|
||||
language,
|
||||
submit_language,
|
||||
source_file,
|
||||
creds,
|
||||
function(ev)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue