From 9d53e50848d9d8be758a21d0b5e078f82af25754 Mon Sep 17 00:00:00 2001 From: memeplex Date: Mon, 21 Oct 2019 17:04:38 -0300 Subject: [PATCH] Avoid auto-raising minibufer before new frame is created (Bug#37826) * lisp/server.el (server-execute): Advice `message' to delay output until the new frame is created. --- lisp/server.el | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lisp/server.el b/lisp/server.el index 45fa55ad6b..6fab0ef747 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -1304,7 +1304,16 @@ server-execute ;; including code that needs to wait. (with-local-quit (condition-case err - (let* ((buffers (server-visit-files files proc nowait)) + (let* (;; Delay messages to avoid auto raising frame (Bug#37826). + (messages nil) + (delay (lambda (_ fmt &rest args) + (let ((msg (and fmt (apply #'format-message fmt args)))) + (car (push msg messages))))) + (buffers (unwind-protect + (progn + (advice-add #'message :around delay) + (server-visit-files files proc nowait)) + (advice-remove #'message delay))) ;; If we were told only to open a new client, obey ;; `initial-buffer-choice' if it specifies a file ;; or a function. @@ -1325,6 +1334,10 @@ server-execute ;; Switch to initial buffer in case the frame was reused. (when initial-buffer (switch-to-buffer initial-buffer 'norecord)))))) + ;; Show all delayed messages in the new frame (if any). + (with-selected-frame (or frame (selected-frame)) + (dolist (msg (nreverse messages)) + (message msg))) (mapc #'funcall (nreverse commands)) -- 2.20.1