From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marco Wahl Subject: Re: point moves and zoom level reverts when refreshing agenda Date: Tue, 05 Jun 2018 16:18:20 +0200 Message-ID: <841sdlco5v.fsf@gmail.com> References: <84vab61lf3.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40432) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fQCnM-0004go-Fm for emacs-orgmode@gnu.org; Tue, 05 Jun 2018 10:18:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fQCnG-0002UO-8s for emacs-orgmode@gnu.org; Tue, 05 Jun 2018 10:18:44 -0400 Received: from [195.159.176.226] (port=42018 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fQCnF-0002Tr-Uy for emacs-orgmode@gnu.org; Tue, 05 Jun 2018 10:18:38 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1fQCl2-0001az-K1 for emacs-orgmode@gnu.org; Tue, 05 Jun 2018 16:16:20 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-orgmode@gnu.org --=-=-= Content-Type: text/plain >> 2] i also find that refreshing resets the zoom level created using >> text-scale-increase. i wonder if this can also be preserved. to me, >> refreshing refers to updating the contents of the agenda view, not >> things like text scale. > > This is a wanted feature AFAICT. I think the following patch is a > reliable way to achieve the preservation of text-scale for agenda-redo. The following is an alternative patch which I think is preferable. It just keeps the needed local variables for the text-scale (aka zoom) in good order in function org-agenda-mode. Further I use this patch already for some days and could not find any issue. Ciao, Marco --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-org-agenda-Keep-local-variables-defining-text-scale.patch >From 74aa62a7d777319f14896f3814cae474d947f3a7 Mon Sep 17 00:00:00 2001 From: Marco Wahl Date: Mon, 4 Jun 2018 15:17:29 +0200 Subject: [PATCH] org-agenda: Keep local-variables defining text-scale * lisp/org-agenda.el (org-agenda-mode): Save and restore local variables text-scale-mode-amount, text-scale-mode, text-scale-mode-lighter, face-remapping-alist. In effect this keeps the text-scale at agenda rebuild and redo. This commit is predicated on the newsgroup post of Samuel Wales "point moves and zoom level reverts when refreshing agenda" at Sun, 27 May 2018. --- lisp/org-agenda.el | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 24b752498..4b95b8c59 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -2184,29 +2184,37 @@ The following commands are available: \\{org-agenda-mode-map}" (interactive) - (cond (org-agenda-doing-sticky-redo - ;; Refreshing sticky agenda-buffer - ;; - ;; Preserve the value of `org-agenda-local-vars' variables, - ;; while letting `kill-all-local-variables' kill the rest - (let ((save (buffer-local-variables))) - (kill-all-local-variables) + (let ((agenda-local-vars-to-keep + '(text-scale-mode-amount + text-scale-mode + text-scale-mode-lighter + face-remapping-alist)) + (save (buffer-local-variables))) + (kill-all-local-variables) + (cond (org-agenda-doing-sticky-redo + ;; Refreshing sticky agenda-buffer + ;; + ;; Preserve the value of `org-agenda-local-vars' variables. (mapc #'make-local-variable org-agenda-local-vars) (dolist (elem save) (pcase elem (`(,var . ,val) ;ignore unbound variables (when (and val (memq var org-agenda-local-vars)) - (set var val)))))) - (setq-local org-agenda-this-buffer-is-sticky t)) - (org-agenda-sticky - ;; Creating a sticky Agenda buffer for the first time - (kill-all-local-variables) - (mapc 'make-local-variable org-agenda-local-vars) - (setq-local org-agenda-this-buffer-is-sticky t)) - (t - ;; Creating a non-sticky agenda buffer - (kill-all-local-variables) - (setq-local org-agenda-this-buffer-is-sticky nil))) + (set var val))))) + (setq-local org-agenda-this-buffer-is-sticky t)) + (org-agenda-sticky + ;; Creating a sticky Agenda buffer for the first time + (mapc 'make-local-variable org-agenda-local-vars) + (setq-local org-agenda-this-buffer-is-sticky t)) + (t + ;; Creating a non-sticky agenda buffer + (setq-local org-agenda-this-buffer-is-sticky nil))) + (mapc #'make-local-variable agenda-local-vars-to-keep) + (dolist (elem save) + (pcase elem + (`(,var . ,val) ;ignore unbound variables + (when (and val (memq var agenda-local-vars-to-keep)) + (set var val)))))) (setq org-agenda-undo-list nil org-agenda-pending-undo-list nil org-agenda-bulk-marked-entries nil) -- 2.17.1 --=-=-=--