|
4 | 4 |
|
5 | 5 | ;; Author: Wang Kai <[email protected]>
|
6 | 6 | ;; Keywords: extensions, tools
|
| 7 | +;; Package-Version: 20200101.1111 |
7 | 8 | ;; URL: https://github.com/kaiwk/leetcode.el
|
8 | 9 | ;; Package-Requires: ((emacs "26") (dash "2.16.0") (graphql "0.1.1") (spinner "1.7.3") (aio "1.0"))
|
9 | 10 | ;; Version: 0.1.10
|
@@ -529,7 +530,8 @@ see: https://github.com/skeeto/emacs-aio/issues/3."
|
529 | 530 | (let* ((code-buf (current-buffer))
|
530 | 531 | (testcase-buf (get-buffer leetcode--testcase-buffer-name))
|
531 | 532 | (slug-title (with-current-buffer code-buf
|
532 |
| - (file-name-base (buffer-name)))) |
| 533 | + (file-name-base (car (cdr (split-string (buffer-name) "_")))))) |
| 534 | + |
533 | 535 | (cur-problem (seq-find (lambda (p)
|
534 | 536 | (equal slug-title
|
535 | 537 | (leetcode--slugify-title
|
@@ -726,7 +728,7 @@ following possible value:
|
726 | 728 | (let* ((code-buf (current-buffer))
|
727 | 729 | (code (leetcode--buffer-content code-buf))
|
728 | 730 | (slug-title (with-current-buffer code-buf
|
729 |
| - (file-name-base (buffer-name)))) |
| 731 | + (file-name-base (car (cdr (split-string (buffer-name) "_")))))) |
730 | 732 | (id (plist-get (seq-find (lambda (p)
|
731 | 733 | (equal slug-title
|
732 | 734 | (leetcode--slugify-title
|
@@ -841,6 +843,12 @@ python3, ruby, rust, scala, swift.")
|
841 | 843 | "LeetCode sql implementation.
|
842 | 844 | mysql, mssql, oraclesql.")
|
843 | 845 |
|
| 846 | +(defcustom leetcode-source-directory "~/leetcode" |
| 847 | + "Location to save source files." |
| 848 | + :group 'leetcode-location |
| 849 | + :type 'string) |
| 850 | + |
| 851 | + |
844 | 852 | (defvar leetcode--lang leetcode-prefer-language
|
845 | 853 | "LeetCode programming language or sql for current problem internally.
|
846 | 854 | Default is programming language.")
|
@@ -883,19 +891,40 @@ for current problem."
|
883 | 891 | (add-to-list 'leetcode--problem-titles title)
|
884 | 892 | (leetcode--solving-layout)
|
885 | 893 | (leetcode--set-lang snippets)
|
886 |
| - (let ((code-buf (get-buffer (leetcode--get-code-buffer-name title))) |
887 |
| - (suffix (assoc-default |
888 |
| - leetcode--lang |
889 |
| - leetcode--lang-suffixes))) |
| 894 | + (let* ((code-buf (get-buffer (leetcode--get-code-buffer-name title))) |
| 895 | + (suffix (assoc-default |
| 896 | + leetcode--lang |
| 897 | + leetcode--lang-suffixes)) |
| 898 | + (slug-title (leetcode--slugify-title title)) |
| 899 | + (cur-problem (seq-find (lambda (p) |
| 900 | + (equal slug-title |
| 901 | + (leetcode--slugify-title |
| 902 | + (plist-get p :title)))) |
| 903 | + (plist-get leetcode--all-problems :problems))) |
| 904 | + (cur-id (plist-get cur-problem :id)) |
| 905 | + ) |
| 906 | + |
890 | 907 | (unless code-buf
|
891 |
| - (with-current-buffer (get-buffer-create (leetcode--get-code-buffer-name title)) |
| 908 | + (with-current-buffer |
| 909 | + (find-file-noselect |
| 910 | + (format "%s/%04d_%s" leetcode-source-directory cur-id (leetcode--get-code-buffer-name title)) |
| 911 | + ) |
892 | 912 | (setq code-buf (current-buffer))
|
893 | 913 | (funcall (assoc-default suffix auto-mode-alist #'string-match-p))
|
894 | 914 | (let ((snippet (seq-find (lambda (s)
|
895 | 915 | (equal (alist-get 'langSlug s)
|
896 | 916 | leetcode--lang))
|
897 | 917 | snippets)))
|
898 |
| - (insert (alist-get 'code snippet)) |
| 918 | + |
| 919 | + (setq code-inserted |
| 920 | + (save-excursion |
| 921 | + (goto-char (point-min)) |
| 922 | + (search-forward (string-trim (alist-get 'code snippet) ) nil t)) |
| 923 | + ) |
| 924 | + (unless code-inserted |
| 925 | + (insert (alist-get 'code snippet)) |
| 926 | + ) |
| 927 | + |
899 | 928 | (leetcode--replace-in-buffer "" ""))))
|
900 | 929 | (display-buffer code-buf
|
901 | 930 | '((display-buffer-reuse-window
|
|
0 commit comments