Merge branch 'maint'

This commit is contained in:
Nicolas Goaziou 2017-06-02 09:23:03 +02:00
commit ed291a4a91
1 changed files with 30 additions and 40 deletions

View File

@ -1088,48 +1088,38 @@ may have been stored before."
(defun org-capture-place-entry ()
"Place the template as a new Org entry."
(let* ((txt (org-capture-get :template))
(reversed (org-capture-get :prepend))
(target-entry-p (org-capture-get :target-entry-p))
level beg end)
(and (org-capture-get :exact-position)
(goto-char (org-capture-get :exact-position)))
(let ((reversed? (org-capture-get :prepend))
level)
(when (org-capture-get :exact-position)
(goto-char (org-capture-get :exact-position)))
(cond
((not target-entry-p)
;; Insert as top-level entry, either at beginning or at end of
;; file.
(setq level 1)
(if reversed
(progn (goto-char (point-min))
(or (org-at-heading-p)
(outline-next-heading)))
(goto-char (point-max))
(or (bolp) (insert "\n"))))
(t
;; Insert as a child of the current entry
(and (looking-at "\\*+")
(setq level (- (match-end 0) (match-beginning 0))))
(setq level (org-get-valid-level (or level 1) 1))
(if reversed
(progn
(outline-next-heading)
(or (bolp) (insert "\n")))
(org-end-of-subtree t nil)
(or (bolp) (insert "\n")))))
;; Insert as a child of the current entry.
((org-capture-get :target-entry-p)
(setq level (org-get-valid-level
(if (org-at-heading-p) (org-outline-level) 1)
1))
(if reversed? (outline-next-heading) (org-end-of-subtree t)))
;; Insert as a top-level entry at the beginning of the file.
(reversed?
(goto-char (point-min))
(unless (org-at-heading-p) (outline-next-heading)))
;; Otherwise, insert as a top-level entry at the end of the file.
(t (goto-char (point-max))))
(unless (bolp) (insert "\n"))
(org-capture-empty-lines-before)
(setq beg (point))
(org-capture-verify-tree txt)
(org-paste-subtree level txt 'for-yank)
(org-capture-empty-lines-after)
(org-capture-position-for-last-stored beg)
(outline-next-heading)
(setq end (point))
(org-capture-mark-kill-region beg (1- end))
(org-capture-narrow beg (1- end))
(if (or (re-search-backward "%\\?" beg t)
(re-search-forward "%\\?" end t))
(replace-match ""))))
(let ((beg (point))
(template (org-capture-get :template)))
(org-capture-verify-tree template)
(org-paste-subtree level template 'for-yank)
(org-capture-empty-lines-after)
(org-capture-position-for-last-stored beg)
(unless (org-at-heading-p) (outline-next-heading))
(let ((end (point)))
(org-capture-mark-kill-region beg end)
(org-capture-narrow beg end)
(when (or (re-search-backward "%\\?" beg t)
(re-search-forward "%\\?" end t))
(replace-match ""))))))
(defun org-capture-place-item ()
"Place the template as a new plain list item."