Browse Source

Merge branch 'master' into next

Nicolas Goaziou 7 years ago
parent
commit
796a7c4c0e
2 changed files with 23 additions and 7 deletions
  1. 6 6
      lisp/org-capture.el
  2. 17 1
      testing/lisp/test-org-capture.el

+ 6 - 6
lisp/org-capture.el

@@ -1128,20 +1128,20 @@ may have been stored before."
       (unless (org-at-heading-p) (outline-next-heading)))
       (unless (org-at-heading-p) (outline-next-heading)))
      ;; Otherwise, insert as a top-level entry at the end of the file.
      ;; Otherwise, insert as a top-level entry at the end of the file.
      (t (goto-char (point-max))))
      (t (goto-char (point-max))))
-    (unless (bolp) (insert "\n"))
-    (org-capture-empty-lines-before)
     (let ((beg (point))
     (let ((beg (point))
 	  (template (org-capture-get :template)))
 	  (template (org-capture-get :template)))
+      (unless (bolp) (insert "\n"))
+      (org-capture-empty-lines-before)
       (org-capture-verify-tree template)
       (org-capture-verify-tree template)
       (org-paste-subtree level template 'for-yank)
       (org-paste-subtree level template 'for-yank)
       (org-capture-empty-lines-after)
       (org-capture-empty-lines-after)
       (org-capture-position-for-last-stored beg)
       (org-capture-position-for-last-stored beg)
       (unless (org-at-heading-p) (outline-next-heading))
       (unless (org-at-heading-p) (outline-next-heading))
-      (let ((end (point)))
-	(org-capture-mark-kill-region beg end)
+      (org-capture-mark-kill-region beg (point))
+      (let ((end (if (org-at-heading-p) (line-end-position 0) (point))))
 	(org-capture-narrow beg end)
 	(org-capture-narrow beg end)
-	(when (or (re-search-backward "%\\?" beg t)
-		  (re-search-forward "%\\?" end t))
+	(when (or (search-backward "%?" beg t)
+		  (search-forward "%?" end t))
 	  (replace-match ""))))))
 	  (replace-match ""))))))
 
 
 (defun org-capture-place-item ()
 (defun org-capture-place-item ()

+ 17 - 1
testing/lisp/test-org-capture.el

@@ -145,7 +145,7 @@
 	     (org-capture-refile)
 	     (org-capture-refile)
 	     (list file1 file2 (buffer-file-name)))))))))
 	     (list file1 file2 (buffer-file-name)))))))))
 
 
-(ert-deftest test-org-capture/insert-at-end-abort ()
+(ert-deftest test-org-capture/abort ()
   "Test that capture can be aborted after inserting at end of capture buffer."
   "Test that capture can be aborted after inserting at end of capture buffer."
   (should
   (should
    (equal
    (equal
@@ -160,6 +160,22 @@
 	(org-capture-kill))
 	(org-capture-kill))
       (buffer-string)))))
       (buffer-string)))))
 
 
+(ert-deftest test-org-caputre/entry ()
+  "Test `entry' type in capture template."
+  ;; Do not break next headline.
+  (should
+   (equal
+    "* A\n** H1 Capture text\n* B\n"
+    (org-test-with-temp-text-in-file "* A\n* B\n"
+      (let* ((file (buffer-file-name))
+	     (org-capture-templates
+	      `(("t" "Todo" entry (file+headline ,file "A") "** H1 %?"))))
+	(org-capture nil "t")
+	(goto-char (point-max))
+	(insert "Capture text")
+	(org-capture-finalize))
+      (buffer-string)))))
+
 (ert-deftest test-org-capture/table-line ()
 (ert-deftest test-org-capture/table-line ()
   "Test `table-line' type in capture template."
   "Test `table-line' type in capture template."
   ;; When a only file is specified, use the first table available.
   ;; When a only file is specified, use the first table available.