better snippets, language management
This commit is contained in:
parent
67406d2af0
commit
20b058f034
4 changed files with 26 additions and 108 deletions
|
|
@ -8,14 +8,8 @@
|
||||||
local M = {}
|
local M = {}
|
||||||
local logger = require("cp.log")
|
local logger = require("cp.log")
|
||||||
|
|
||||||
local filetype_to_language = {
|
local languages = require("cp.languages")
|
||||||
cpp = "cpp",
|
local filetype_to_language = languages.filetype_to_language
|
||||||
cxx = "cpp",
|
|
||||||
cc = "cpp",
|
|
||||||
c = "cpp",
|
|
||||||
py = "python",
|
|
||||||
py3 = "python",
|
|
||||||
}
|
|
||||||
|
|
||||||
---@param source_file string
|
---@param source_file string
|
||||||
---@param contest_config table
|
---@param contest_config table
|
||||||
|
|
|
||||||
19
lua/cp/languages.lua
Normal file
19
lua/cp/languages.lua
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.CPP = "cpp"
|
||||||
|
M.PYTHON = "python"
|
||||||
|
|
||||||
|
---@type table<string, string>
|
||||||
|
M.filetype_to_language = {
|
||||||
|
cc = M.CPP,
|
||||||
|
cxx = M.CPP,
|
||||||
|
cpp = M.CPP,
|
||||||
|
c = M.CPP,
|
||||||
|
py = M.PYTHON,
|
||||||
|
py3 = M.PYTHON,
|
||||||
|
}
|
||||||
|
|
||||||
|
---@type string[]
|
||||||
|
M.all = { M.CPP, M.PYTHON }
|
||||||
|
|
||||||
|
return M
|
||||||
|
|
@ -10,109 +10,20 @@ function M.setup(config)
|
||||||
|
|
||||||
local s, i, fmt = ls.snippet, ls.insert_node, require("luasnip.extras.fmt").fmt
|
local s, i, fmt = ls.snippet, ls.insert_node, require("luasnip.extras.fmt").fmt
|
||||||
|
|
||||||
local filetype_to_language = {
|
local languages = require("cp.languages")
|
||||||
cc = "cpp",
|
local filetype_to_language = languages.filetype_to_language
|
||||||
c = "cpp",
|
|
||||||
py = "python",
|
|
||||||
py3 = "python",
|
|
||||||
}
|
|
||||||
|
|
||||||
local language_to_filetype = {}
|
local language_to_filetype = {}
|
||||||
for ext, lang in pairs(filetype_to_language) do
|
for ext, lang in pairs(filetype_to_language) do
|
||||||
language_to_filetype[lang] = ext
|
language_to_filetype[lang] = ext
|
||||||
end
|
end
|
||||||
|
|
||||||
local template_definitions = {
|
|
||||||
cpp = {
|
|
||||||
codeforces = [[#include <bits/stdc++.h>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
void solve() {
|
|
||||||
{}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
std::cin.tie(nullptr)->sync_with_stdio(false);
|
|
||||||
|
|
||||||
int tc = 1;
|
|
||||||
std::cin >> tc;
|
|
||||||
|
|
||||||
for (int t = 0; t < tc; ++t) {
|
|
||||||
solve();
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}]],
|
|
||||||
|
|
||||||
atcoder = [[#include <bits/stdc++.h>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
void solve() {
|
|
||||||
{}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
std::cin.tie(nullptr)->sync_with_stdio(false);
|
|
||||||
|
|
||||||
#ifdef LOCAL
|
|
||||||
int tc;
|
|
||||||
std::cin >> tc;
|
|
||||||
|
|
||||||
for (int t = 0; t < tc; ++t) {
|
|
||||||
solve();
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
solve();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}]],
|
|
||||||
|
|
||||||
cses = [[#include <bits/stdc++.h>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
std::cin.tie(nullptr)->sync_with_stdio(false);
|
|
||||||
|
|
||||||
{}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}]],
|
|
||||||
},
|
|
||||||
|
|
||||||
python = {
|
|
||||||
codeforces = [[def solve():
|
|
||||||
{}
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
tc = int(input())
|
|
||||||
for _ in range(tc):
|
|
||||||
solve()]],
|
|
||||||
|
|
||||||
atcoder = [[def solve():
|
|
||||||
{}
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
solve()]],
|
|
||||||
|
|
||||||
cses = [[{}]],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for language, filetype in pairs(language_to_filetype) do
|
for language, filetype in pairs(language_to_filetype) do
|
||||||
local snippets = {}
|
local snippets = {}
|
||||||
|
|
||||||
for contest, template in pairs(template_definitions[language] or {}) do
|
|
||||||
table.insert(snippets, s(contest, fmt(template, { i(1) })))
|
|
||||||
end
|
|
||||||
|
|
||||||
for _, snippet in ipairs(config.snippets or {}) do
|
for _, snippet in ipairs(config.snippets or {}) do
|
||||||
if snippet.filetype == filetype then
|
table.insert(snippets, snippet)
|
||||||
table.insert(snippets, snippet)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
ls.add_snippets(filetype, snippets)
|
ls.add_snippets(filetype, snippets)
|
||||||
|
|
|
||||||
|
|
@ -13,14 +13,8 @@ end, {
|
||||||
nargs = "*",
|
nargs = "*",
|
||||||
desc = "Competitive programming helper",
|
desc = "Competitive programming helper",
|
||||||
complete = function(ArgLead, CmdLine, _)
|
complete = function(ArgLead, CmdLine, _)
|
||||||
local filetype_to_language = {
|
local languages_module = require("cp.languages")
|
||||||
cc = "cpp",
|
local languages = languages_module.all
|
||||||
c = "cpp",
|
|
||||||
py = "python",
|
|
||||||
py3 = "python",
|
|
||||||
}
|
|
||||||
|
|
||||||
local languages = vim.tbl_keys(vim.tbl_add_reverse_lookup(filetype_to_language))
|
|
||||||
|
|
||||||
if ArgLead:match("^--lang=") then
|
if ArgLead:match("^--lang=") then
|
||||||
local lang_completions = {}
|
local lang_completions = {}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue