Currently (org-entry-get) throws an error if point is before the first heading. Is there a reason that this must be so? Org is too essential for headings to be obligatory!
An example of when it would be useful to get properties is in a buffer containing src blocks but no headings (babel takes header args from Org properties). I make heavy use of such buffers as a scratch pad. I'm not sure to what extent speed is essential in these functions, and therefore unsure whether the calls to `org-before-first-heading-p' are acceptable. Dan Allow properties to be retrieved before first heading in file. * lisp/org.el (org-entry-get): Don't look for a property drawer if we are before the first heading in the file. (org-entry-get-with-inheritance): Don't attempt to move up the tree if we are before the first heading in the file. Also, enclose less of the function in the save-excursion. diff --git a/lisp/org.el b/lisp/org.el index 0104007..a676ec4 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -13567,7 +13567,8 @@ when a \"nil\" value can supersede a non-nil value higher up the hierarchy." ;; We need a special property. Use `org-entry-properties' to ;; retrieve it, but specify the wanted property (cdr (assoc property (org-entry-properties nil 'special property))) - (let ((range (org-get-property-block))) + (let ((range (unless (org-before-first-heading-p) + (org-get-property-block)))) (if (and range (goto-char (car range)) (re-search-forward @@ -13680,6 +13681,7 @@ should be considered as undefined (this is the meaning of nil here). However, if LITERAL-NIL is set, return the string value \"nil\" instead." (move-marker org-entry-property-inherited-from nil) (let (tmp) + (unless (org-before-first-heading-p) (save-excursion (save-restriction (widen) @@ -13690,11 +13692,12 @@ However, if LITERAL-NIL is set, return the string value \"nil\" instead." (move-marker org-entry-property-inherited-from (point)) (throw 'ex tmp)) (or (org-up-heading-safe) (throw 'ex nil))))) + )) (setq tmp (or tmp (cdr (assoc property org-file-properties)) (cdr (assoc property org-global-properties)) (cdr (assoc property org-global-properties-fixed)))) - (if literal-nil tmp (org-not-nil tmp))))) + (if literal-nil tmp (org-not-nil tmp)))) (defvar org-property-changed-functions nil "Hook called when the value of a property has changed. _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode