diff options
author | Marco Wahl <marcowahlsoft@gmail.com> | 2017-10-07 15:44:25 +0200 |
---|---|---|
committer | Marco Wahl <marcowahlsoft@gmail.com> | 2017-10-07 15:44:25 +0200 |
commit | 5a16dec5a4cf25179f501bc4a0aabfb4c7f5653c (patch) | |
tree | 029e2ec26140e00e92bc2172a23d2801a5701639 | |
parent | 44e3745c786cd2994c0ce930a28c6863dfd5af7b (diff) | |
download | org-mode-5a16dec5a4cf25179f501bc4a0aabfb4c7f5653c.tar.gz |
org-inlinetask: Wrap region at insertion
* lisp/org-inlinetask.el (org-inlinetask-insert-task): If there is a
region at insertion time wrap it. This is similar to
`org-insert-drawer'.
-rw-r--r-- | lisp/org-inlinetask.el | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lisp/org-inlinetask.el b/lisp/org-inlinetask.el index 360b1bc..5c1054c 100644 --- a/lisp/org-inlinetask.el +++ b/lisp/org-inlinetask.el @@ -123,7 +123,8 @@ default, or nil of no state should be assigned." (defun org-inlinetask-insert-task (&optional no-state) "Insert an inline task. -If prefix arg NO-STATE is set, ignore `org-inlinetask-default-state'." +If prefix arg NO-STATE is set, ignore `org-inlinetask-default-state'. +If there is a region wrap it inside the inline task." (interactive "P") ;; Error when inside an inline task, except if point was at its very ;; beginning, in which case the new inline task will be inserted @@ -135,13 +136,19 @@ If prefix arg NO-STATE is set, ignore `org-inlinetask-default-state'." (let* ((indent (if org-odd-levels-only (1- (* 2 org-inlinetask-min-level)) org-inlinetask-min-level)) - (indent-string (concat (make-string indent ?*) " "))) + (indent-string (concat (make-string indent ?*) " ")) + (rbeg (if (org-region-active-p) (region-beginning) (point))) + (rend (if (org-region-active-p) (region-end) (point)))) + (goto-char rend) + (insert "\n" indent-string "END\n") + (goto-char rbeg) + (unless (bolp) (insert "\n")) (insert indent-string (if (or no-state (not org-inlinetask-default-state)) - "\n" - (concat org-inlinetask-default-state " \n")) - indent-string "END\n")) - (end-of-line -1)) + "" + (concat org-inlinetask-default-state " ")) + (if (= rend rbeg) "" "\n")) + (unless (= rend rbeg) (end-of-line 0)))) (define-key org-mode-map "\C-c\C-xt" 'org-inlinetask-insert-task) (defun org-inlinetask-outline-regexp () |