--- a/.emacs-my Sun Jan 04 01:58:14 2015 +0200
+++ b/.emacs-my Wed Jan 07 00:01:23 2015 +0200
@@ -1486,13 +1486,15 @@
(defun my-org-kill-by-tag (tag)
"Put all entries that matches TAG from current org-file to `kill-ring'."
(interactive (list (completing-read "Enter tag: " (org-get-buffer-tags))))
- (kill-new "")
- (org-scan-tags
- (lambda ()
- (let ( (last-command 'kill-region) )
- (org-cut-subtree)))
- '(member tag tags-list)
- nil) )
+ (let ( rs (last-command 'kill-region) )
+ (setq rs (org-scan-tags
+ (lambda ()
+ (org-mark-subtree)
+ (list (point) (mark)))
+ '(member tag tags-list) nil))
+ (kill-new "")
+ (dolist (r (reverse rs)) ; Kill from the end so upcoming regions still valid.
+ (apply #'kill-region r))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "TODO, XXX, FIXME highlight")