Fix `org-log-beginning' on empty entries

* lisp/org.el (org-log-beginning): Check for the need to insert
  a drawer in all cases.

Suggested-by: Eric Abrahamsen <eric@ericabrahamsen.net>
<http://permalink.gmane.org/gmane.emacs.orgmode/93538>
This commit is contained in:
Nicolas Goaziou 2014-12-20 21:59:51 +01:00
parent 685e4b733a
commit 442216871a
1 changed files with 29 additions and 29 deletions

View File

@ -13630,35 +13630,35 @@ narrowing."
(when (looking-at org-property-drawer-re)
(goto-char (match-end 0))
(forward-line))
(if (org-at-heading-p) (point)
(let ((end (save-excursion (outline-next-heading) (point)))
(drawer (org-log-into-drawer)))
(cond
(drawer
(let ((regexp (concat "^[ \t]*:" (regexp-quote drawer) ":[ \t]*$"))
(case-fold-search t))
(catch 'exit
;; Try to find existing drawer.
(while (re-search-forward regexp end t)
(let ((element (org-element-at-point)))
(when (eq (org-element-type element) 'drawer)
(let ((cend (org-element-property :contents-end element)))
(when (and (not org-log-states-order-reversed) cend)
(goto-char cend)))
(throw 'exit nil))))
;; No drawer found. Create one, if permitted.
(when create
(unless (bolp) (insert "\n"))
(let ((beg (point)))
(insert ":" drawer ":\n:END:\n")
(org-indent-region beg (point)))
(end-of-line -1)))))
(org-log-state-notes-insert-after-drawers
(while (and (looking-at org-drawer-regexp)
(progn (goto-char (match-end 0))
(re-search-forward org-property-end-re end t)))
(forward-line)))))
(if (bolp) (point) (line-beginning-position 2)))))
(let ((end (if (org-at-heading-p) (point)
(save-excursion (outline-next-heading) (point))))
(drawer (org-log-into-drawer)))
(cond
(drawer
(let ((regexp (concat "^[ \t]*:" (regexp-quote drawer) ":[ \t]*$"))
(case-fold-search t))
(catch 'exit
;; Try to find existing drawer.
(while (re-search-forward regexp end t)
(let ((element (org-element-at-point)))
(when (eq (org-element-type element) 'drawer)
(let ((cend (org-element-property :contents-end element)))
(when (and (not org-log-states-order-reversed) cend)
(goto-char cend)))
(throw 'exit nil))))
;; No drawer found. Create one, if permitted.
(when create
(unless (bolp) (insert "\n"))
(let ((beg (point)))
(insert ":" drawer ":\n:END:\n")
(org-indent-region beg (point)))
(end-of-line -1)))))
(org-log-state-notes-insert-after-drawers
(while (and (looking-at org-drawer-regexp)
(progn (goto-char (match-end 0))
(re-search-forward org-property-end-re end t)))
(forward-line)))))
(if (bolp) (point) (line-beginning-position 2))))
(defun org-add-log-setup (&optional purpose state prev-state findpos how extra)
"Set up the post command hook to take a note.