I have decided to archive LeetBuddy.nvim. I believe that kawre/leetcode.nvim provides more features.
Note: This repository is now archived, and no further development or maintenance will be done.
LeetBuddy.nvim enables seamless integration with Leetcode, empowering you to solve coding problems effortlessly within Neovim.
Leetbuddy.nvim.Demo.mp4
- Neovim (v0.9.0 or higher)
plenary.nvim
telescope.nvim
Use your favorite plugin manager to install LeetBuddy.nvim. Here's an example using Lazy
:
return {
"Dhanus3133/LeetBuddy.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim",
},
config = function()
require("leetbuddy").setup({})
end,
keys = {
{ "<leader>lq", "<cmd>LBQuestions<cr>", desc = "List Questions" },
{ "<leader>ll", "<cmd>LBQuestion<cr>", desc = "View Question" },
{ "<leader>lr", "<cmd>LBReset<cr>", desc = "Reset Code" },
{ "<leader>lt", "<cmd>LBTest<cr>", desc = "Run Code" },
{ "<leader>ls", "<cmd>LBSubmit<cr>", desc = "Submit Code" },
},
}
LeetBuddy.nvim provides the following commands:
LBQuestions
: Lists all Leetcode problems with submission status and difficulty level. Additionally, there are custom filters available to further refine the displayed problems:<C-r>
: Reset all filters and display all problems.<C-e>
: Display only easy difficulty problems.<C-d>
: Display only medium difficulty problems.<C-h>
: Display only hard difficulty problems.<C-a>
: Display only problems with a status of "Accepted" (AC).<C-y>
: Display only problems with a status of "Not Started" (NOT_STARTED).<C-t>
: Display only problems with a status of "Tried" (TRIED).<C-l>
: Display problems next page.<C-h>
: Display problems prev page.
LBQuestion
: Displays the question in a popup window.LBReset
: Resets the code of the current question to the default template.LBTest
: Runs the test cases for the current question. Multiple test cases can be added.LBSubmit
: Submits the code for the current question.LBChangeLanguage
: Dynamically switch the language for the current problem.
LeetBuddy.nvim allows you to customize certain aspects of its behavior. You can modify the following configuration options in your Neovim configuration file to suit your preferences:
require('leetbuddy').setup({
domain = "com" -- `cn` for chinese leetcode
language = "py",
limit = 30, -- Number of problems displayed in telescope
keys = {
select = "<CR>",
reset = "<C-r>",
easy = "<C-e>",
medium = "<C-m>",
hard = "<C-h>",
accepted = "<C-a>",
not_started = "<C-y>",
tried = "<C-t>",
page_next = "<C-l>",
page_prev = "<C-h>",
}
})
Available language options for the language
configuration are:
Short Name | Language |
---|---|
cpp |
C++ |
java |
Java |
py |
Python 3 |
c |
C |
cs |
C# |
js |
JavaScript |
rb |
Ruby |
swift |
Swift |
go |
Go |
scala |
Scala |
kt |
Kotlin |
rs |
Rust |
php |
PHP |
ts |
TypeScript |
rkt |
Racket |
erl |
Erlang |
ex |
Elixir |
dart |
Dart |
To use LeetBuddy.nvim, you'll need to obtain the CSRF token and session from your Leetcode account. Please make sure to log in to your account before proceeding. Please note that due to the authentication system implemented by Leetcode, manual login credentials entry is not supported.
Login.mp4
Contributions are welcome! If you have any bug reports, feature requests, or suggestions, please open an issue or submit a pull request. For major changes, please discuss them in the issue tracker before making any modifications.
This plugin is available under the MIT License. Feel free to use and modify it according to your needs.