summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllen Li <darkfeline@felesatra.moe>2019-02-16 17:21:04 -0800
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2019-02-25 13:41:40 +0100
commitcc020dbe4d9323bc778e50af485dfd902db63444 (patch)
tree757e66ff5a89d96d779aeef317a056affc0785e2
parent9d603b1854f658202024807c17ffc1fd47a3cd74 (diff)
downloadorg-mode-cc020dbe4d9323bc778e50af485dfd902db63444.tar.gz
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.
-rw-r--r--doc/org-manual.org10
-rw-r--r--lisp/org-agenda.el9
-rw-r--r--lisp/org-colview.el20
3 files changed, 25 insertions, 14 deletions
diff --git a/doc/org-manual.org b/doc/org-manual.org
index a1cc356..ca15139 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 c1a8a44..4a0604a 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 746426b..a7a4416 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. Set
+`org-local-columns-format' instead.")
+
+(defvar-local org-local-columns-format nil
"When set, overrides any other format definition for the agenda.
-Don't set this, this is meant for dynamic scoping.")
+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)