only the last value for any specific property is kept
authorEric Schulte <eric.schulte@gmx.com>
Fri, 6 Jan 2012 18:20:11 +0000 (11:20 -0700)
committerEric Schulte <eric.schulte@gmx.com>
Fri, 6 Jan 2012 18:20:48 +0000 (11:20 -0700)
* lisp/org.el (org-update-property-plist): Remove old instances of
  property when adding a new value for property.

lisp/org.el

index 3b06347..748a2e3 100644 (file)
@@ -4446,12 +4446,12 @@ means to push this value onto the list in the variable.")
 
 (defun org-update-property-plist (key val props)
   "Update PROPS with KEY and VAL."
-  (if (string= "+" (substring key (- (length key) 1)))
-      (let* ((key (substring key 0 (- (length key) 1)))
-            (previous (cdr (assoc key props))))
-       (cons (cons key (concat previous " " val))
-             (org-remove-if (lambda (p) (string= (car p) key)) props)))
-    (cons (cons key val) props)))
+  (let ((remainder (org-remove-if (lambda (p) (string= (car p) key)) props)))
+    (if (string= "+" (substring key (- (length key) 1)))
+       (let* ((key (substring key 0 (- (length key) 1)))
+              (previous (cdr (assoc key props))))
+         (cons (cons key (concat previous " " val)) remainder))
+      (cons (cons key val) remainder))))
 
 (defconst org-block-regexp
   "^[ \t]*#\\+begin_?\\([^ \n]+\\)\\(\\([^\n]+\\)\\)?\n\\([^\000]+?\\)#\\+end_?\\1[ \t]*$"