Skip to content

Commit d8811dc

Browse files
cnglenkaiwk
authored andcommitted
add user-define location for source code
e.g, for python default to ~/{04id}_{title}.py
1 parent 1a507ef commit d8811dc

File tree

1 file changed

+37
-8
lines changed

1 file changed

+37
-8
lines changed

leetcode.el

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
;; Author: Wang Kai <[email protected]>
66
;; Keywords: extensions, tools
7+
;; Package-Version: 20200101.1111
78
;; URL: https://github.com/kaiwk/leetcode.el
89
;; Package-Requires: ((emacs "26") (dash "2.16.0") (graphql "0.1.1") (spinner "1.7.3") (aio "1.0"))
910
;; Version: 0.1.10
@@ -529,7 +530,8 @@ see: https://github.com/skeeto/emacs-aio/issues/3."
529530
(let* ((code-buf (current-buffer))
530531
(testcase-buf (get-buffer leetcode--testcase-buffer-name))
531532
(slug-title (with-current-buffer code-buf
532-
(file-name-base (buffer-name))))
533+
(file-name-base (car (cdr (split-string (buffer-name) "_"))))))
534+
533535
(cur-problem (seq-find (lambda (p)
534536
(equal slug-title
535537
(leetcode--slugify-title
@@ -726,7 +728,7 @@ following possible value:
726728
(let* ((code-buf (current-buffer))
727729
(code (leetcode--buffer-content code-buf))
728730
(slug-title (with-current-buffer code-buf
729-
(file-name-base (buffer-name))))
731+
(file-name-base (car (cdr (split-string (buffer-name) "_"))))))
730732
(id (plist-get (seq-find (lambda (p)
731733
(equal slug-title
732734
(leetcode--slugify-title
@@ -841,6 +843,12 @@ python3, ruby, rust, scala, swift.")
841843
"LeetCode sql implementation.
842844
mysql, mssql, oraclesql.")
843845

846+
(defcustom leetcode-source-directory "~/leetcode"
847+
"Location to save source files."
848+
:group 'leetcode-location
849+
:type 'string)
850+
851+
844852
(defvar leetcode--lang leetcode-prefer-language
845853
"LeetCode programming language or sql for current problem internally.
846854
Default is programming language.")
@@ -883,19 +891,40 @@ for current problem."
883891
(add-to-list 'leetcode--problem-titles title)
884892
(leetcode--solving-layout)
885893
(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+
890907
(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+
)
892912
(setq code-buf (current-buffer))
893913
(funcall (assoc-default suffix auto-mode-alist #'string-match-p))
894914
(let ((snippet (seq-find (lambda (s)
895915
(equal (alist-get 'langSlug s)
896916
leetcode--lang))
897917
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+
899928
(leetcode--replace-in-buffer "" ""))))
900929
(display-buffer code-buf
901930
'((display-buffer-reuse-window

0 commit comments

Comments
 (0)