summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Wahl <marcowahlsoft@gmail.com>2017-10-07 15:44:25 +0200
committerMarco Wahl <marcowahlsoft@gmail.com>2017-10-07 15:44:25 +0200
commit5a16dec5a4cf25179f501bc4a0aabfb4c7f5653c (patch)
tree029e2ec26140e00e92bc2172a23d2801a5701639
parent44e3745c786cd2994c0ce930a28c6863dfd5af7b (diff)
downloadorg-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.el19
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 ()