From dd9f8d47af8b904849a8564b4e2782afe24c9f14 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 11 Jun 2018 00:39:55 +0200 Subject: [PATCH] Fix infinite recursion in buffer switch hooks Caused by advice functions trying to manipulate non-existent buffers that were intended to be created after switching to them. --- core/core-ui.el | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/core/core-ui.el b/core/core-ui.el index 37a4fd693..ca704ecc3 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -385,16 +385,14 @@ from the default." (with-selected-window window (run-hooks 'doom-after-switch-window-hook)))))) (defun doom*switch-buffer-hooks (orig-fn buffer-or-name &rest args) - (let ((dest (get-buffer buffer-or-name))) - (if (or doom-inhibit-switch-buffer-hooks - (null dest) - (eq dest (current-buffer))) - (apply orig-fn dest args) - (let ((doom-inhibit-switch-buffer-hooks t)) - (run-hooks 'doom-before-switch-buffer-hook) - (prog1 (apply orig-fn dest args) - (with-current-buffer dest - (run-hooks 'doom-after-switch-buffer-hook))))))) + (if (or doom-inhibit-switch-buffer-hooks + (eq (get-buffer buffer-or-name) (current-buffer))) + (apply orig-fn buffer-or-name args) + (let ((doom-inhibit-switch-buffer-hooks t)) + (run-hooks 'doom-before-switch-buffer-hook) + (prog1 (apply orig-fn buffer-or-name args) + (with-current-buffer buffer-or-name + (run-hooks 'doom-after-switch-buffer-hook)))))) (defun doom|init-custom-hooks (&optional disable) (dolist (spec '((select-frame . doom*switch-frame-hooks)