diff --git a/lisp/org-capture.el b/lisp/org-capture.el index add187caa..a8b9879fd 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -750,8 +750,7 @@ captured item after finalizing." ;; Store this place as the last one where we stored something ;; Do the marking in the base buffer, so that it makes sense after ;; the indirect buffer has been killed. - (when org-capture-bookmark - (org-capture-bookmark-last-stored-position)) + (org-capture-store-last-position) ;; Run the hook (run-hooks 'org-capture-before-finalize-hook)) @@ -888,12 +887,12 @@ Store them in the capture property list." (_ (error "Cannot find target ID \"%s\"" id)))) (`(file+headline ,path ,headline) (set-buffer (org-capture-target-buffer path)) - (org-capture-put-target-region-and-position) - (widen) - (goto-char (point-min)) (unless (derived-mode-p 'org-mode) (error "Target buffer \"%s\" for file+headline not in Org mode" (current-buffer))) + (org-capture-put-target-region-and-position) + (widen) + (goto-char (point-min)) (if (re-search-forward (format org-complex-heading-regexp-format (regexp-quote headline)) nil t) @@ -928,8 +927,12 @@ Store them in the capture property list." `file+weektree `file+weektree+prompt)) ,path) - (require 'org-datetree) (set-buffer (org-capture-target-buffer path)) + (unless (derived-mode-p 'org-mode) + (error "Target buffer \"%s\" for %s should be in Org mode" + (current-buffer) + type)) + (require 'org-datetree) (org-capture-put-target-region-and-position) (widen) ;; Make a date/week tree entry, with the current date (or @@ -1298,8 +1301,8 @@ Of course, if exact position has been required, just put it there." (org-table-current-dline)))) (t (error "This should not happen")))) -(defun org-capture-bookmark-last-stored-position () - "Bookmark the last-captured position." +(defun org-capture-store-last-position () + "Store the last-captured position." (let* ((where (org-capture-get :position-for-last-stored 'local)) (pos (cond ((markerp where) @@ -1312,14 +1315,11 @@ Of course, if exact position has been required, just put it there." (point-at-bol)) (point)))))) (with-current-buffer (buffer-base-buffer (current-buffer)) - (org-with-wide-buffer - (goto-char pos) - (let ((bookmark-name (plist-get org-bookmark-names-plist - :last-capture))) - (when bookmark-name - (with-demoted-errors - (bookmark-set bookmark-name)))) - (move-marker org-capture-last-stored-marker (point)))))) + (org-with-point-at pos + (when org-capture-bookmark + (let ((bookmark (plist-get org-bookmark-names-plist :last-capture))) + (when bookmark (with-demoted-errors (bookmark-set bookmark))))) + (move-marker org-capture-last-stored-marker (point)))))) (defun org-capture-narrow (beg end) "Narrow, unless configuration says not to narrow."