From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Eric Abrahamsen Newsgroups: gmane.emacs.help Subject: windows saved in variables, and `save-selected-window' Date: Sun, 14 Jun 2020 10:32:30 -0700 Message-ID: <87eeqhd041.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="77091"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:ywJO8TbE2zkdTMbLop2xHlKYDLc= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Sun Jun 14 19:33:02 2020 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jkWVC-000Jxz-K2 for geh-help-gnu-emacs@m.gmane-mx.org; Sun, 14 Jun 2020 19:33:02 +0200 Original-Received: from localhost ([::1]:53326 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jkWVB-0002CF-MD for geh-help-gnu-emacs@m.gmane-mx.org; Sun, 14 Jun 2020 13:33:01 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54064) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jkWUs-0002Bu-OD for help-gnu-emacs@gnu.org; Sun, 14 Jun 2020 13:32:42 -0400 Original-Received: from ciao.gmane.io ([159.69.161.202]:59496) by eggs.gnu.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jkWUq-00089o-T4 for help-gnu-emacs@gnu.org; Sun, 14 Jun 2020 13:32:42 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1jkWUo-000JS3-EX for help-gnu-emacs@gnu.org; Sun, 14 Jun 2020 19:32:38 +0200 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=159.69.161.202; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/14 13:09:26 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 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-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:123388 Archived-At: I'm writing a minor mode that does a little bit of window management, including opening two windows on the current buffer, and keeping track of the two windows in two variables (the variables should be buffer-local, but I'm seeing the below behavior with regular defvar). One of the goals is to have a command that conditionally updates what is displayed in the "other window". The minimum broken version of the code is below. During the set up, the two variables *usually* end up pointing to live windows (ie, #). Sometimes one of the variables ends up pointing at a "dead" window: #. Either way, after the use of `save-selected-window' below, one of the windows is always dead. Obviously I'm just doing this wrong altogether -- can anyone tell me the correct approach? TIA, Eric (defvar window-one nil) (defvar window-two nil) (define-minor-mode not-a-mode "" nil " windows" nil (if (null not-a-mode) (setq window-one nil window-two nil) (split-window-sensibly) (setq window-one (selected-window)) (other-window 1) (setq window-two (selected-window)))) (defun update-other-window () (interactive) (save-selected-window (select-window window-one) (goto-char (/ (point-max) 2)) (recenter)))