No description
| .github/workflows | ||
| after | ||
| doc | ||
| ftdetect | ||
| lua/cp | ||
| plugin | ||
| scrapers | ||
| spec | ||
| tests | ||
| .busted | ||
| .gitignore | ||
| .luarc.json | ||
| .luarocks | ||
| .python-version | ||
| cp.nvim-scm-1.rockspec | ||
| pyproject.toml | ||
| readme.md | ||
| selene.toml | ||
| uv.lock | ||
| vim.toml | ||
cp.nvim
neovim plugin for competitive programming.
https://github.com/user-attachments/assets/cb142535-fba0-4280-8f11-66ad1ca50ca9
Sample test data from codeforces is scraped via cloudscraper. Use at your own risk.
Features
- Support for multiple online judges (AtCoder, Codeforces, CSES)
- Multi-language support (C++, Python)
- Automatic problem scraping and test case management
- Integrated build, run, and debug commands
- Enhanced test viewer with individual test case management
- LuaSnip integration for contest-specific snippets
Requirements
Documentation
:help cp.nvim
Philosophy
This plugin is highly tuned to my workflow and may not fit for you. Personally, I believe there are two aspects of a cp workflow:
- local work (i.e. coding, running test cases)
- site work (i.e. problem reading, submitting)
Namely, I do not like the idea of submitting problems locally - the experience will never quite offer what the remote does. Therefore, cp.nvim works as follows:
- Find a problem
- Browse the remote and find it
- Read it on the remote
- Set up your local environment with
:CP ...
- test cases and expected output automatically scraped
- templates automatically configured
- Solve the problem locally
- easy to run/debug
- easy to diff actual vs. expected output
- Submit the problem (on the remote!)
Similar Projects
TODO
- fzf/telescope integration (whichever available)
- autocomplete with --lang and --debug
- finer-tuned problem limits (i.e. per-problem codeforces time, memory)
- notify discord members