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