Skip to content
This repository has been archived by the owner on Nov 19, 2023. It is now read-only.
/ Leetbuddy.nvim Public archive

Solve Leetcode problems within Neovim πŸ”₯

License

Notifications You must be signed in to change notification settings

Dhanus3133/Leetbuddy.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

43 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘‹ Archiving and Recommendation πŸ™Œ

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

LeetBuddy.nvim enables seamless integration with Leetcode, empowering you to solve coding problems effortlessly within Neovim.

Demo

Leetbuddy.nvim.Demo.mp4

Requirements

  • Neovim (v0.9.0 or higher)
  • plenary.nvim
  • telescope.nvim

Installation

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" },
  },
}

Commands

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.

Custom Configuration

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

Login to your account

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

Contributing

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.

License

This plugin is available under the MIT License. Feel free to use and modify it according to your needs.