diff -r 81ffdea5bfb1 -r bdb5c65b3213 .emacs-my --- 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")