我找到了更简单的方法,定义了一个建议 term-handle-exit
(defadvice term-handle-exit
(after term-kill-buffer-on-exit activate)
(kill-buffer))
Run Code Online (Sandbox Code Playgroud)
我发现我可以使用进程哨兵并使用term-exec-hook
(add-hook 'term-exec-hook (lambda ()
(let* ((buff (current-buffer))
(proc (get-buffer-process buff)))
(lexical-let ((buff buff))
(set-process-sentinel proc (lambda (process event)
(if (string= event "finished\n")
(kill-buffer buff))))))))
Run Code Online (Sandbox Code Playgroud)