From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.help Subject: Re: closing emacsclient always focuses another emacs window Date: Mon, 10 Mar 2014 05:30:42 +0100 Message-ID: <87wqg28ykt.fsf@web.de> References: <83pplwq0s2.fsf@gnu.org> <83ob1gpw98.fsf@gnu.org> <9cc39d8d-e5ae-488b-9ba6-78dd71a2257f@googlegroups.com> <913ee34a-f81c-408f-afe4-6944a9c56430@googlegroups.com> <10020dec-82f2-41de-93d3-06d8984dcfba@googlegroups.com> <87pplv6omp.fsf@web.de> <831tyapvp6.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1394425872 14390 80.91.229.3 (10 Mar 2014 04:31:12 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 10 Mar 2014 04:31:12 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Mar 10 05:31:21 2014 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WMrs0-0008DU-LI for geh-help-gnu-emacs@m.gmane.org; Mon, 10 Mar 2014 05:31:20 +0100 Original-Received: from localhost ([::1]:46643 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WMrs0-0003Sr-8q for geh-help-gnu-emacs@m.gmane.org; Mon, 10 Mar 2014 00:31:20 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:42339) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WMrrk-0003Sm-Pq for help-gnu-emacs@gnu.org; Mon, 10 Mar 2014 00:31:10 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WMrre-0004JV-RN for help-gnu-emacs@gnu.org; Mon, 10 Mar 2014 00:31:04 -0400 Original-Received: from plane.gmane.org ([80.91.229.3]:55172) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WMrre-0004JL-Kj for help-gnu-emacs@gnu.org; Mon, 10 Mar 2014 00:30:58 -0400 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1WMrrc-0007sy-CH for help-gnu-emacs@gnu.org; Mon, 10 Mar 2014 05:30:56 +0100 Original-Received: from ip-90-187-97-239.web.vodafone.de ([90.187.97.239]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 10 Mar 2014 05:30:56 +0100 Original-Received: from michael_heerdegen by ip-90-187-97-239.web.vodafone.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 10 Mar 2014 05:30:56 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 41 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: ip-90-187-97-239.web.vodafone.de User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) Cancel-Lock: sha1:0mT7E0AzkyokB2CS/Rd5bE/Sg6Q= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:96376 Archived-At: Eli Zaretskii writes: > Not sure, because it doesn't match what we see. Could be. I think I found something which I hope could explain the confusion. When the OP hits C-x #, this is executed in `server-edit': (apply 'server-switch-buffer (server-done)) `server-done' returns a list (nil ...), so this code at the beginning of `server-switch-buffer' is executed: (if (null next-buffer) (progn (let ((rest server-clients)) (while (and rest (not next-buffer)) (let ((proc (car rest))) ;; Only look at frameless clients, or those in the selected ;; frame. (when (or (not (process-get proc 'frame)) (eq (process-get proc 'frame) (selected-frame))) (setq next-buffer (car (process-get proc 'buffers)))) (setq rest (cdr rest))))) (and next-buffer (server-switch-buffer next-buffer killed-one)) (unless (or next-buffer killed-one (window-dedicated-p)) ;; (switch-to-buffer (other-buffer)) (message "No server buffers remain to edit"))) ... It seems that (selected-frame) is intended to "mean" the frame focused when we hit C-x #. But note that evaluating the argument (server-done) has the side effect of deleting that frame. Under the right circumstances, the selected frame now can be any frame, including the other emacsclient frame. In this case, `next-buffer' will be set and the newly selected frame will be focused by the recursive call of `server-switch-buffer'. Regards, Michael.