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:
Barrett Ruth 2026-03-06 17:28:04 -05:00
parent 8465e70772
commit e7ebe738a4
2 changed files with 13 additions and 1 deletions

View file

@ -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)