branch: elpa/aidermacs
commit 9db897d312cbc7cdd6b1233d162e8439c55067fc
Author: Mingde (Matthew) Zeng <matthew...@posteo.net>
Commit: Mingde (Matthew) Zeng <matthew...@posteo.net>

    Add aidermacs--cleanup-temp-files-on-interrupt
---
 aidermacs-backend-comint.el | 8 ++++++++
 aidermacs-backend-vterm.el  | 8 ++++++++
 2 files changed, 16 insertions(+)

diff --git a/aidermacs-backend-comint.el b/aidermacs-backend-comint.el
index d4991f9321..e548a3a32c 100644
--- a/aidermacs-backend-comint.el
+++ b/aidermacs-backend-comint.el
@@ -295,6 +295,7 @@ BUFFER-NAME is the name for the aidermacs buffer."
         (add-hook 'kill-buffer-hook #'aidermacs--comint-cleanup-hook nil t)
         (add-hook 'comint-output-filter-functions #'aidermacs-fontify-blocks 
100 t)
         (add-hook 'comint-output-filter-functions 
#'aidermacs--comint-output-filter)
+        (advice-add 'comint-interrupt-subjob :around 
#'aidermacs--cleanup-temp-files-on-interrupt-comint)
         (let ((local-map (make-sparse-keymap)))
           (set-keymap-parent local-map comint-mode-map)
           (define-key local-map (kbd aidermacs-comint-multiline-newline-key) 
#'comint-accumulate)
@@ -335,6 +336,13 @@ The output is collected and passed to the current 
callback."
       (aidermacs--store-output (with-current-buffer output-buffer
                                  (buffer-string))))))
 
+(defun aidermacs--cleanup-temp-files-on-interrupt-comint (orig-fun &rest args)
+  "Run `aidermacs--cleanup-all-temp-files' after interrupting a comint subjob.
+ORIG-FUN is the original function being advised.  ARGS are its arguments."
+  (apply orig-fun args)
+  (when (aidermacs--is-aidermacs-buffer-p)
+    (aidermacs--cleanup-all-temp-files)))
+
 (provide 'aidermacs-backend-comint)
 
 ;;; aidermacs-backend-comint.el ends here
diff --git a/aidermacs-backend-vterm.el b/aidermacs-backend-vterm.el
index b5747c5d88..38f4345fe7 100644
--- a/aidermacs-backend-vterm.el
+++ b/aidermacs-backend-vterm.el
@@ -172,6 +172,7 @@ BUFFER-NAME is the name for the vterm buffer."
                     aidermacs--vterm-last-check-point nil)
         (advice-add 'vterm-send-return :around 
#'aidermacs--vterm-output-advice)
         (advice-add 'vterm-send-return :before 
#'aidermacs--vterm-capture-keyboard-input)
+        (advice-add 'vterm--self-insert :after 
#'aidermacs--cleanup-temp-files-on-interrupt-vterm)
         ;; Set up multi-line key binding
         (let ((map (make-sparse-keymap)))
           (set-keymap-parent map (current-local-map))
@@ -225,6 +226,13 @@ ORIG-FUN is the original function being advised. ARGS are 
its arguments."
   (setq-local aidermacs--vterm-last-check-point nil)
   (advice-remove 'vterm-send-return #'aidermacs--vterm-capture-keyboard-input))
 
+(defun aidermacs--cleanup-temp-files-on-interrupt-vterm (&rest args)
+  "Run `aidermacs--cleanup-all-temp-files' after interrupting a vterm subjob.
+ARGS are the arguments."
+  (when (and (aidermacs--is-aidermacs-buffer-p)
+             (equal (this-command-keys) "\C-c\C-c"))
+    (aidermacs--cleanup-all-temp-files)))
+
 (provide 'aidermacs-backend-vterm)
 
 ;;; aidermacs-backend-vterm.el ends here

Reply via email to