From d9bbf546b75a56c634ef5eaacbaa2a78fa8fbc82 Mon Sep 17 00:00:00 2001 From: MitchMarq42 Date: Tue, 3 Jan 2023 18:13:11 -0900 Subject: [PATCH] eshell/emacs: fix default-directory (for real this time) --- lisp/mitch-packages.el | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lisp/mitch-packages.el b/lisp/mitch-packages.el index b3bcd9d..65b4b5d 100644 --- a/lisp/mitch-packages.el +++ b/lisp/mitch-packages.el @@ -158,7 +158,8 @@ "Edit library called NAME if it exists, otherwise edit FILE. If the current window occupies the whole frame, split it." - (let* ((old-default-dir default-directory) ; needed to preserve environment + (let* ((old-buffer (current-buffer)) + (old-default-dir default-directory) ; needed to preserve environment find-fun lib-fun ; scope these so we can bind them later (openfun (lambda (arg) "Implicit function for opening a file or library." @@ -174,8 +175,10 @@ If the current window occupies the whole frame, split it." lib-fun #'find-library-other-window) (setq find-fun #'find-file lib-fun #'find-library)) - (let ((return (funcall openfun name))) ; default-directory needs to reset - (setq default-directory old-default-dir) return))) ; but we return bufs + (let ((result (funcall openfun name))) + (with-current-buffer old-buffer + (setq default-directory old-default-dir)) + result))) (defun eshell/emacs (&rest args) "run external Emacs." (eshell-eval-using-options ; this is somewhat broken but works okay