update config for cpp versions
This commit is contained in:
parent
84f25d5591
commit
286d21cd0e
4 changed files with 46 additions and 38 deletions
|
|
@ -2,15 +2,52 @@ local M = {}
|
|||
|
||||
M.defaults = {
|
||||
contests = {
|
||||
atcoder = { cpp_version = 23 },
|
||||
codeforces = { cpp_version = 23 },
|
||||
cses = { cpp_version = 20 },
|
||||
default = {
|
||||
cpp_version = 20,
|
||||
compile_flags = { "-O2", "-DLOCAL", "-Wall", "-Wextra" },
|
||||
debug_flags = { "-g3", "-fsanitize=address,undefined", "-DLOCAL" },
|
||||
timeout_ms = 2000,
|
||||
},
|
||||
atcoder = {
|
||||
cpp_version = 23,
|
||||
},
|
||||
codeforces = {
|
||||
cpp_version = 23,
|
||||
},
|
||||
cses = {},
|
||||
},
|
||||
snippets = {},
|
||||
}
|
||||
|
||||
local function extend_contest_config(base_config, contest_config)
|
||||
local result = vim.deepcopy(base_config)
|
||||
|
||||
for key, value in pairs(contest_config) do
|
||||
if key == "compile_flags" or key == "debug_flags" then
|
||||
vim.list_extend(result[key], value)
|
||||
else
|
||||
result[key] = value
|
||||
end
|
||||
end
|
||||
|
||||
local std_flag = ("-std=c++%d"):format(result.cpp_version)
|
||||
table.insert(result.compile_flags, 1, std_flag)
|
||||
table.insert(result.debug_flags, 1, std_flag)
|
||||
|
||||
return result
|
||||
end
|
||||
|
||||
function M.setup(user_config)
|
||||
return vim.tbl_deep_extend("force", M.defaults, user_config or {})
|
||||
local config = vim.tbl_deep_extend("force", M.defaults, user_config or {})
|
||||
|
||||
local default_contest = config.contests.default
|
||||
for contest_name, contest_config in pairs(config.contests) do
|
||||
if contest_name ~= "default" then
|
||||
config.contests[contest_name] = extend_contest_config(default_contest, contest_config)
|
||||
end
|
||||
end
|
||||
|
||||
return config
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
|
|||
|
|
@ -8,6 +8,11 @@ local function log(msg, level)
|
|||
vim.notify(("[cp.nvim]: %s"):format(msg), level or vim.log.levels.INFO)
|
||||
end
|
||||
|
||||
if not vim.fn.has("nvim-0.10.0") then
|
||||
log("cp.nvim requires Neovim 0.10.0+", vim.log.levels.ERROR)
|
||||
return M
|
||||
end
|
||||
|
||||
local function clearcol()
|
||||
vim.api.nvim_set_option_value("number", false, { scope = "local" })
|
||||
vim.api.nvim_set_option_value("relativenumber", false, { scope = "local" })
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
CompileFlags:
|
||||
Add:
|
||||
-O2
|
||||
-Wall
|
||||
-Wextra
|
||||
-Wpedantic
|
||||
-Wshadow
|
||||
-Wformat=2
|
||||
-Wfloat-equal
|
||||
-Wlogical-op
|
||||
-Wshift-overflow=2
|
||||
-Wnon-virtual-dtor
|
||||
-Wold-style-cast
|
||||
-Wcast-qual
|
||||
-Wuseless-cast
|
||||
-Wno-sign-promotion
|
||||
-Wcast-align
|
||||
-Wunused
|
||||
-Woverloaded-virtual
|
||||
-Wconversion
|
||||
-Wsign-conversion
|
||||
-Wmisleading-indentation
|
||||
-Wduplicated-cond
|
||||
-Wduplicated-branches
|
||||
-Wlogical-op
|
||||
-Wnull-dereference
|
||||
-Wformat=2
|
||||
-Wformat-overflow
|
||||
-Wformat-truncation
|
||||
-Wdouble-promotion
|
||||
-Wundef
|
||||
-DLOCAL
|
||||
-Wno-unknown-pragmas
|
||||
|
|
@ -19,7 +19,6 @@ setup:
|
|||
test -d build || mkdir -p build
|
||||
test -d io || mkdir -p io
|
||||
test -f compile_flags.txt && echo -std=c++$(VERSION) >>compile_flags.txt
|
||||
test -f .clangd && echo -e "\t\t-std=c++$(VERSION)" >>.clangd
|
||||
|
||||
init:
|
||||
make setup
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue