LeetCode brings you offer, and now Emacs brings you LeetCode!
- Execute
leetcodecommand, and in problem list buffer:
| Keymap | Description |
|---|---|
| o | show current problem |
| O | show problem by prompting problem id |
| v | view the current problem |
| V | view a problem by prompting problem id |
| b | show the current problem in browser |
| B | show a problem by problem id in browser |
| c | start coding the current problem |
| C | start coding a problem by problem id |
| s | filter problems by regex |
| t | filter problems by tag |
| T | toggle tag display |
| d | filter problems by difficulty |
| r | reset filters |
| P | toggle paid problems display |
| g (z for evil-mode) | refresh without fetching from LeetCode |
| G (Z for evil-mode) | refresh all problems |
| L | change prefer language |
| RET | show current problem |
| TAB | view current problem |
-
Press
<RET>, show problem detail, move cursor to "solve it", press<RET>again, start coding! -
After finishing your code, you can edit testcase and execute
leetcode-tryor executeleetcode-submit.
In leetcode-solution-mode, you will have:
| Keymap | Description |
|---|---|
| C-c C-t | run code with testcase |
| C-c C-s | submit |
| C-c C-r | restore window layout |
You can also disable IDE-like features by adding hook to leetcode-solution-mode-hook:
(add-hook 'leetcode-solution-mode-hook
(lambda() (flycheck-mode -1)))- Vanilla Emacs:
package-installit from melpa directly - Spacemacs: leetcode-emacs-layer
LeetCode do not allow third party login, one workaround is restore LeetCode session from local Firefox or Chrome cookies. By default, this package will install a Python3 package called my_cookies, or you can install it manually: pip3 install my_cookies.
Since we are using shr.el to render HTML, you may also want to look at shrface.
- Clone this repository and install all dependencies
- Move it to your load-path
- Require it in your emacs config
You can set your preferred LeetCode programming language and SQL by setting leetcode-prefer-language and leetcode-prefer-sql:
If you prefer not to see problems' tags in the *leetcode**buffer by default. set leetcode-prefer-tag-display to nil
(setq leetcode-prefer-language "python3")
(setq leetcode-prefer-sql "mysql")All supported languages can be found in variable leetcode--lang-suffixes.
You can save solution by setting leetcode-save-solutions:
(setq leetcode-save-solutions t)
(setq leetcode-directory "~/leetcode")leetcode-show-problem-by-slug will let you put to org files with a link in this format to show the question after the leetcode buffer is load like [elisp:(leetcode-show-problem-by-slug (leetcode--slugify-title "ZigZag Conversion"))]
Call leetcode-toggle-debug, log will output in *leetcode-log* buffer.
Please submit PR to develop branch.