From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id 301DF6DE12D8 for ; Sat, 8 Oct 2016 14:01:38 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: -0.144 X-Spam-Level: X-Spam-Status: No, score=-0.144 tagged_above=-999 required=5 tests=[AWL=-0.123, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Received: from arlo.cworth.org ([127.0.0.1]) by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qafSEhxQEj_N for ; Sat, 8 Oct 2016 14:01:37 -0700 (PDT) Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by arlo.cworth.org (Postfix) with ESMTPS id 27AB56DE12C1 for ; Sat, 8 Oct 2016 14:01:37 -0700 (PDT) Received: by mail-wm0-f66.google.com with SMTP id b201so8137254wmb.1 for ; Sat, 08 Oct 2016 14:01:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adirat-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=8TlPXY3CcSSPwmp80+EYl2Vm8VeQkukc4NomK09JQtw=; b=cwmVt8FOETV5OdUgjmfuS8NKelJTjaQuAjDsifBVJFGncwCFAFE4ztkLWj4Jf1rkyL kndvDS9z+J3adnC3fu6sJ+KZ5OmwWCpF1dn1tRpx8maioXndnLETbLcwH3Wea68fb138 UEOrTBIK70uRLc59RGRdvGFTqfVBtRTwd1ZMVCREGSvquFHWD4sisAHHzrYL33lcu9+M IMyw1IxjDu4WeBzb9PvTn04nm+BXBBNwWBl1inb2e0XUfrjxqvb/bKWtwp6OZ8zwdCLt n4yqyN3+gQH6LXOr1TSVtz/k2+7hG9V6fAaXnSWkZBl1p7utzS1kdcHSTsjRCsOX/4kO qBJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=8TlPXY3CcSSPwmp80+EYl2Vm8VeQkukc4NomK09JQtw=; b=jVhGrxlvSlyjMlZ1h0v0kcOfmXBCIlTLGszKeDE3FgpDUBLMuQ+FKFn6joYxmk+B30 qi+uz8FKnV1GQTmuuGzJSr57VSjRdnOicSeXsj3i9SN8jtzG+f+Z7oBFHJT3W2WtXqDi 6qQg4LdLXOxBHDkxps/G0Z9lZ62Dq9kHv6/6l4Qncehfqi+7aWqI5r0JNrpmq+BsLKg8 hi4nKFZ/ls3mNAuDtUnwdn7ZskR3wJl5YLhgBzC6TdUUWUBviNdagO0BPZBwdySu4l3S UmCJbMI12c4Mw5cU/4AYAwOmo/nsCSPUucNZnb19bHHNb5dIOnltGww9BSc6iIuOlIOa DsKg== X-Gm-Message-State: AA6/9Rm8lwvEJ1RC9Y8VtWyPcQFWuUJ7X+9sqKLuQDWSgaqjm58hh0qQcJKMxBBKsv8pRQ== X-Received: by 10.194.74.5 with SMTP id p5mr24603303wjv.92.1475960495552; Sat, 08 Oct 2016 14:01:35 -0700 (PDT) Received: from adiPC.lan ([188.24.54.197]) by smtp.gmail.com with ESMTPSA id bl3sm26649351wjc.26.2016.10.08.14.01.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 08 Oct 2016 14:01:35 -0700 (PDT) From: Ioan-Adrian Ratiu To: notmuch@notmuchmail.org Subject: [PATCH v4 4/6] emacs: notmuch-show: refresh all windows displaying buffer Date: Sun, 9 Oct 2016 00:01:37 +0300 Message-Id: <20161008210139.25322-5-adi@adirat.com> X-Mailer: git-send-email 2.10.0 In-Reply-To: <20161008210139.25322-1-adi@adirat.com> References: <20161008210139.25322-1-adi@adirat.com> X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Oct 2016 21:01:38 -0000 This updates all windows displaying a notmuch-show buffer when the buffer refresh function is called. Each window displaying a notmuch-show buffer has its own currently displayed message based on the (point) location. We store the state of all displayed windows when refreshing a notmuch-show buffer and re-apply the current shown message (point) for all windows. Implementation note: Each window has it's own (point) value, besides the buffer's (point) value. Sometimes these values are identical like in the case where a single window displays a buffer. When multiple windows display a buffer, (point) returns each window's specific value. What we are storing in this changeset is the window values not the buffer point values. The buffer's point is returned only if no window is displaying the buffer, a case we do not care about here. Signed-off-by: Ioan-Adrian Ratiu --- emacs/notmuch-show.el | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 1772d10..bd69751 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1317,8 +1317,13 @@ If no messages match the query return NIL." This includes: - the list of open messages, - - the current message." - (list (notmuch-show-get-message-id) (notmuch-show-get-message-ids-for-open-messages))) + - the combination of current message id with/for each visible window." + (let* ((win-list (get-buffer-window-list (current-buffer) nil t)) + (win-id-combo (mapcar (lambda (win) + (with-selected-window win + (list win (notmuch-show-get-message-id)))) + win-list))) + (list win-id-combo (notmuch-show-get-message-ids-for-open-messages)))) (defun notmuch-show-get-query () "Return the current query in this show buffer" @@ -1345,8 +1350,8 @@ This includes: This includes: - opening the messages previously opened, - closing all other messages, - - moving to the correct current message." - (let ((current (car state)) + - moving to the correct current message in every displayed window." + (let ((win-msg-alist (car state)) (open (cadr state))) ;; Open those that were open. @@ -1355,8 +1360,10 @@ This includes: (member (notmuch-show-get-message-id) open)) until (not (notmuch-show-goto-message-next))) - ;; Go to the previously open message. - (notmuch-show-goto-message current))) + (dolist (win-msg-pair win-msg-alist) + (with-selected-window (car win-msg-pair) + ;; Go to the previously open message in this window + (notmuch-show-goto-message (cadr win-msg-pair)))))) (defun notmuch-show-refresh-view (&optional reset-state ignore) "Refresh the current view. -- 2.10.0