@@ -75,6 +75,9 @@ The elements of :problems has attributes:
75
75
:difficulty Number {1,2,3}
76
76
:paid-only Boolean {t|nil}" )
77
77
78
+ (defvar leetcode--problem-titles nil
79
+ " Problem titles that have been open in solving layout." )
80
+
78
81
(defvar leetcode-checkmark " ✓" " Checkmark for accepted problem." )
79
82
(defconst leetcode--buffer-name " *leetcode*" )
80
83
(defconst leetcode--description-buffer-name " *leetcode-description*" )
@@ -666,7 +669,8 @@ Get current entry by using `tabulated-list-get-entry' and use
666
669
" dislikes: " (number-to-string .dislikes)))
667
670
(insert .content)
668
671
(setq shr-current-font t )
669
- (leetcode--replace-in-buffer " " " " )
672
+ (leetcode--replace-in-buffer "
673
+ " " " )
670
674
; ; NOTE: shr.el can't render "https://xxxx.png", so we use "http"
671
675
(leetcode--replace-in-buffer " https" " http" )
672
676
(shr-render-buffer (current-buffer )))
@@ -690,6 +694,22 @@ Get current entry by using `tabulated-list-get-entry' and use
690
694
(leetcode--problem-description-mode)
691
695
(switch-to-buffer (current-buffer ))))))
692
696
697
+ (defun leetcode--kill-buff-and-delete-window (buf )
698
+ " Kill buff and delete its window"
699
+ (delete-windows-on buf t )
700
+ (kill-buffer buf))
701
+
702
+ (defun leetcode-quit ()
703
+ " Close and delete leetcode related buffers and windows"
704
+ (interactive )
705
+ (leetcode--kill-buff-and-delete-window (get-buffer leetcode--buffer-name))
706
+ (leetcode--kill-buff-and-delete-window (get-buffer leetcode--description-buffer-name))
707
+ (leetcode--kill-buff-and-delete-window (get-buffer leetcode--result-buffer-name))
708
+ (leetcode--kill-buff-and-delete-window (get-buffer leetcode--testcase-buffer-name))
709
+ (mapc (lambda (x ) (leetcode--kill-buff-and-delete-window (get-buffer (leetcode--get-code-buffer-name x))))
710
+ leetcode--problem-titles)
711
+ )
712
+
693
713
(defvar leetcode-prefer-language " python3"
694
714
" LeetCode programming language.
695
715
c, cpp, csharp, golang, java, javascript, kotlin, php, python,
@@ -738,6 +758,7 @@ major mode by `leetcode-prefer-language'and `auto-mode-alist'.
738
758
TITLE is a problem title. SNIPPETS is a list of alist used to
739
759
store eachprogramming language's snippet. TESTCASE is provided
740
760
for current problem."
761
+ (add-to-list 'leetcode--problem-titles title)
741
762
(leetcode--solving-layout)
742
763
(leetcode--set-lang snippets)
743
764
(let ((code-buf (get-buffer (leetcode--get-code-buffer-name title)))
@@ -753,7 +774,8 @@ for current problem."
753
774
leetcode--lang))
754
775
snippets)))
755
776
(insert (alist-get 'code snippet))
756
- (leetcode--replace-in-buffer " " " " ))))
777
+ (leetcode--replace-in-buffer "
778
+ " " " ))))
757
779
(display-buffer code-buf
758
780
'((display-buffer-reuse-window
759
781
leetcode--display-code)
0 commit comments