From cc020dbe4d9323bc778e50af485dfd902db63444 Mon Sep 17 00:00:00 2001 From: Allen Li Date: Sat, 16 Feb 2019 17:21:04 -0800 Subject: [PATCH 1/2] Fix buffer local org-agenda-overriding-columns-format bug * doc/org-manual.org (Using Column View in the Agenda): Updated reference to variable. * lisp/org-agenda.el (org-agenda-finalize): Set buffer local variable instead. * lisp/org-colview.el (org-overriding-columns-format): Renamed. (org-agenda-overriding-columns-format): Renamed. (org-local-columns-format): New buffer local variable. (org-columns-edit-value): Updated reference to variable. (org-columns-next-allowed-value): Updated reference to variable. (org-agenda-columns): Updated reference to variable. Setting org-agenda-overriding-columns-format as a buffer local value interferes with how it is used as a dynamically scoped var, so use a separate variable for buffer local setting. --- doc/org-manual.org | 10 +++++----- lisp/org-agenda.el | 9 +++++---- lisp/org-colview.el | 20 +++++++++++++++----- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/doc/org-manual.org b/doc/org-manual.org index a1cc35608..ca1513982 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -10477,11 +10477,11 @@ environment. This causes the following issues: the entries in the agenda are collected from different files, and different files may have different columns formats, this is a non-trivial problem. Org first checks if the variable - ~org-agenda-overriding-columns-format~ is currently set, and if so, - takes the format from there. Otherwise it takes the format - associated with the first item in the agenda, or, if that item does - not have a specific format (defined in a property, or in its file), - it uses ~org-columns-default-format~. + ~org-overriding-columns-format~ is currently set, and if so, takes + the format from there. Otherwise it takes the format associated + with the first item in the agenda, or, if that item does not have + a specific format (defined in a property, or in its file), it uses + ~org-columns-default-format~. 2. #+cindex: @samp{CLOCKSUM}, special property diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index c1a8a44f2..4a0604a9b 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -3766,7 +3766,8 @@ FILTER-ALIST is an alist of filters we need to apply when (setq-local org-agenda-name name))) (setq buffer-read-only nil)))) -(defvar org-agenda-overriding-columns-format) ; From org-colview.el +(defvar org-overriding-columns-format) +(defvar org-local-columns-format) (defun org-agenda-finalize () "Finishing touch for the agenda buffer, called just before displaying it." (unless org-agenda-multi @@ -3781,9 +3782,9 @@ FILTER-ALIST is an alist of filters we need to apply when (org-agenda-align-tags)) (unless org-agenda-with-colors (remove-text-properties (point-min) (point-max) '(face nil))) - (when (bound-and-true-p org-agenda-overriding-columns-format) - (setq-local org-agenda-overriding-columns-format - org-agenda-overriding-columns-format)) + (when (bound-and-true-p org-overriding-columns-format) + (setq-local org-local-columns-format + org-overriding-columns-format)) (when org-agenda-view-columns-initially (org-agenda-columns)) (when org-agenda-fontify-priorities diff --git a/lisp/org-colview.el b/lisp/org-colview.el index 746426bc7..a7a441649 100644 --- a/lisp/org-colview.el +++ b/lisp/org-colview.el @@ -565,9 +565,18 @@ for the duration of the command.") (org-columns-next-allowed-value) (org-columns-edit-value "TAGS"))) -(defvar org-agenda-overriding-columns-format nil +(define-obsolete-variable-alias 'org-agenda-overriding-columns-format + 'org-overriding-columns-format "Org 9.2.2") + +(defvar org-overriding-columns-format nil "When set, overrides any other format definition for the agenda. -Don't set this, this is meant for dynamic scoping.") +Don't set this, this is meant for dynamic scoping. Set +`org-local-columns-format' instead.") + +(defvar-local org-local-columns-format nil + "When set, overrides any other format definition for the agenda. +This can be set as a buffer local value to avoid interfering with +dynamic scoping for `org-overriding-columns-format'.") (defun org-columns-edit-value (&optional key) "Edit the value of the property at point in column view. @@ -628,7 +637,7 @@ Where possible, use the standard interface for changing this line." (org-columns--call action) ;; The following let preserves the current format, and makes ;; sure that in only a single file things need to be updated. - (let* ((org-agenda-overriding-columns-format org-columns-current-fmt) + (let* ((org-overriding-columns-format org-columns-current-fmt) (buffer (marker-buffer pom)) (org-agenda-contributing-files (list (with-current-buffer buffer @@ -722,7 +731,7 @@ an integer, select that value." (org-columns--call action) ;; The following let preserves the current format, and makes ;; sure that in only a single file things need to be updated. - (let* ((org-agenda-overriding-columns-format org-columns-current-fmt) + (let* ((org-overriding-columns-format org-columns-current-fmt) (buffer (marker-buffer pom)) (org-agenda-contributing-files (list (with-current-buffer buffer @@ -1563,7 +1572,8 @@ PARAMS is a property list of parameters: (let* ((org-columns--time (float-time)) (fmt (cond - ((bound-and-true-p org-agenda-overriding-columns-format)) + ((bound-and-true-p org-overriding-columns-format)) + ((bound-and-true-p org-local-columns-format)) ((let ((m (org-get-at-bol 'org-hd-marker))) (and m (or (org-entry-get m "COLUMNS" t) From d437c1b5de4ec955a726e74018d1865aa7d44a5f Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Mon, 25 Feb 2019 13:46:41 +0100 Subject: [PATCH 2/2] Move obsolete function alias into "org-compat.el" --- lisp/org-colview.el | 3 --- lisp/org-compat.el | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/org-colview.el b/lisp/org-colview.el index a7a441649..5001def0e 100644 --- a/lisp/org-colview.el +++ b/lisp/org-colview.el @@ -565,9 +565,6 @@ for the duration of the command.") (org-columns-next-allowed-value) (org-columns-edit-value "TAGS"))) -(define-obsolete-variable-alias 'org-agenda-overriding-columns-format - 'org-overriding-columns-format "Org 9.2.2") - (defvar org-overriding-columns-format nil "When set, overrides any other format definition for the agenda. Don't set this, this is meant for dynamic scoping. Set diff --git a/lisp/org-compat.el b/lisp/org-compat.el index e3fbed79c..ff2f0d3e9 100644 --- a/lisp/org-compat.el +++ b/lisp/org-compat.el @@ -434,6 +434,9 @@ use of this function is for the stuck project list." (define-obsolete-variable-alias 'org-texinfo-def-table-markup 'org-texinfo-table-default-markup "Org 9.1") +(define-obsolete-variable-alias 'org-agenda-overriding-columns-format + 'org-overriding-columns-format "Org 9.2.2") + ;; The function was made obsolete by commit 65399674d5 of 2013-02-22. ;; This make-obsolete call was added 2016-09-01. (make-obsolete 'org-capture-import-remember-templates