Some checks are pending
quality / changes (push) Waiting to run
quality / Lua Format Check (push) Blocked by required conditions
quality / Lua Lint Check (push) Blocked by required conditions
quality / Lua Type Check (push) Blocked by required conditions
quality / Python Format Check (push) Blocked by required conditions
quality / Python Lint Check (push) Blocked by required conditions
quality / Python Type Check (push) Blocked by required conditions
quality / Markdown Format Check (push) Blocked by required conditions
tests / changes (push) Waiting to run
tests / Python Tests (push) Blocked by required conditions
2.5 KiB
2.5 KiB
cp.nvim
The definitive competitive programming environment for Neovim
Scrape problems, run tests, and debug solutions across multiple platforms with zero configuration.
https://github.com/user-attachments/assets/e81d8dfb-578f-4a79-9989-210164fc0148
Features
- Multi-platform support: AtCoder, CodeChef, Codeforces, USACO, CSES, Kattis
- Online Judge Integration: Submit problems and view contest standings
- Live Contest Support: Participate in real-time contests
- Automatic setup: Scrape test cases and metadata in seconds
- Streamlined Editing: Configure coding view, edit test cases, stress-test solutions, run interactive problems, and more
- Rich output: 256 color ANSI support for compiler errors and program output
- Language agnosticism: Configure with any language
- Security: Passwords go untampered
Installation
Install using your package manager of choice or via luarocks:
luarocks install cp.nvim
Dependencies
Quick Start
- Find a contest:
:CP pick
- View the problem:
:CP open
- Code and test
:CP run
- Navigate between problems
:CP next
:CP prev
:CP e1
- Debug and edit test cases
:CP edit
:CP panel --debug
- Submit:
:CP submit
- View contest standings:
:CP open standings
Documentation
:help cp.nvim
See my config for the setup in the video shown above.
Motivation
I could not find a neovim-centric, efficient, dependency-free, flexible, and easily customizable competitive programming workflow that "just works"--so I made it myself. I conferenced with top competitive programmers at Carnegie Mellon Univerity and the University of Virginia and covered their (and my) pain points:
- Scraping: contests are automatically loaded asynchronously
- Test Case Management: test case editor (
:CP edit) - UI: both
runandpanellayouts cover common formats - Extensibility: snippet plugins, compilation, etc. are left to the programmer