From 3144f6487318742c1cbd5eb707cc0b0a374035e3 Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Fri, 23 May 2014 22:17:55 -0400 Subject: Use default-directory in ansi-term buffer name By default, switch to ansi-term buffer for directory if it already exists. --- lisp/init-external.el | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'lisp') diff --git a/lisp/init-external.el b/lisp/init-external.el index c9d39ae..be8cdcd 100644 --- a/lisp/init-external.el +++ b/lisp/init-external.el @@ -20,9 +20,17 @@ other window when an asynchronous command is run." (define-prefix-command 'external-map) (global-set-key (kbd "C-c x") 'external-map) -(defun km/zsh-ansi-term () - (interactive) - (ansi-term "/bin/zsh")) +(defun km/zsh-ansi-term (&optional new-buffer) + "Open an ansi-term buffer running ZSH. +The buffer is named according to `default-directory'. If a buffer +of the same name already exists, switch to it unless NEW-BUFFER +is non-nil, switch to the buffer." + (interactive "P") + (let ((name (concat "zsh:" (abbreviate-file-name default-directory)))) + (-if-let (buffer-name (and (not new-buffer) + (get-buffer (concat "*" name "*")))) + (switch-to-buffer buffer-name) + (ansi-term "/bin/zsh" name)))) (defun km/display-compilation-other-window () (interactive) -- cgit v1.2.3