]> code.delx.au - gnu-emacs/blobdiff - lisp/server.el
(server-visit-files): If `minibuffer-auto-raise' has been set to t, respect it.
[gnu-emacs] / lisp / server.el
index 9214391d861ff24caf5b5c647398c097432470a9..bcb79d6b9acbcb68849d9e68a09e8e903b7c4b59 100644 (file)
@@ -112,6 +112,12 @@ If set, the server accepts remote connections; otherwise it is local."
   :version "22.1")
 (put 'server-auth-dir 'risky-local-variable t)
 
+(defcustom server-raise-frame t
+  "*If non-nil, raise frame when switching to a buffer."
+  :group 'server
+  :type 'boolean
+  :version "22.1")
+
 (defcustom server-visit-hook nil
   "*Hook run when visiting a file for the Emacs server."
   :group 'server
@@ -505,7 +511,9 @@ so don't mark these buffers specially, just visit them normally."
        ;; If there is an existing buffer modified or the file is
        ;; modified, revert it.  If there is an existing buffer with
        ;; deleted file, offer to write it.
-       (let* ((filen (car file))
+       (let* ((minibuffer-auto-raise (or server-raise-frame
+                                          minibuffer-auto-raise))
+              (filen (car file))
               (obuf (get-file-buffer filen)))
          (add-to-history 'file-name-history filen)
          (if (and obuf (set-buffer obuf))
@@ -702,11 +710,9 @@ Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it."
        (let ((win (get-buffer-window next-buffer 0)))
          (if (and win (not server-window))
              ;; The buffer is already displayed: just reuse the window.
-             (let ((frame (window-frame win)))
-               (when (eq (frame-visible-p frame) 'icon)
-                 (raise-frame frame))
-               (select-window win)
-               (set-buffer next-buffer))
+              (progn
+                (select-window win)
+                (set-buffer next-buffer))
            ;; Otherwise, let's find an appropriate window.
            (cond ((and (windowp server-window)
                        (window-live-p server-window))
@@ -730,7 +736,9 @@ Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it."
                (switch-to-buffer next-buffer)
              ;; After all the above, we might still have ended up with
              ;; a minibuffer/dedicated-window (if there's no other).
-             (error (pop-to-buffer next-buffer)))))))))
+             (error (pop-to-buffer next-buffer)))))))
+    (when server-raise-frame
+      (select-frame-set-input-focus (window-frame (selected-window))))))
 
 (define-key ctl-x-map "#" 'server-edit)