From a51fef44dc43eb9212801cae211bd7d4de65a435 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sun, 12 Mar 2023 13:41:35 -0400 Subject: Update shell config --- emacs/.config/emacs-kj/init.el | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'emacs/.config/emacs-kj/init.el') diff --git a/emacs/.config/emacs-kj/init.el b/emacs/.config/emacs-kj/init.el index bbc6640..bc28b8c 100644 --- a/emacs/.config/emacs-kj/init.el +++ b/emacs/.config/emacs-kj/init.el @@ -107,6 +107,35 @@ ;; `M-x shell` settings (setq shell-prompt-pattern "^[^#$%>\n]*[#$%>❯] *") (setq explicit-shell-file-name "zsh") +(defun kj/shell-buffer-name () + (concat "*shell:" default-directory "*")) + +(defun kj/shell-here () + (interactive) + (shell (kj/shell-buffer-name))) + +(add-hook 'shell-mode-hook + (defun kj/kill-shell-buffer-on-exit () + (let* ((proc (get-buffer-process (current-buffer))) + (sentinel (process-sentinel proc))) + (set-process-sentinel + proc + `(lambda (proc signal) + (funcall ',sentinel proc signal) + (and (memq (process-status proc) '(exit signal)) + (buffer-live-p (process-buffer proc)) + (message "Shell died, killing buffer %s" + (process-buffer proc)) + (kill-buffer (process-buffer proc)))))))) + +(add-hook 'comint-output-filter-functions #'comint-osc-process-output) + +;; Update buffer name to reflect directory. +(advice-add 'cd :after + (defun kj/maybe-rename-shell (&rest args) + (and (derived-mode-p 'shell-mode) + (rename-buffer + (kj/shell-buffer-name))))) (use-package rainbow-delimiters :defer t @@ -808,4 +837,3 @@ ;; Restore gc. (setq gc-cons-threshold (* 16 1024 1024)) - -- cgit v1.2.3