;; `hl-line-mode'.
(overlay-put o 'priority 999)
(when easy-kill-mark
- (let ((i (make-overlay (point)
- (funcall (if (eolp) #'1- #'1+) (point)))))
+ (let ((i (make-overlay (point) (point))))
(overlay-put i 'priority (1+ (overlay-get o 'priority)))
(overlay-put i 'face 'easy-kill-origin)
+ (overlay-put i 'as (propertize " " 'face 'easy-kill-origin))
(overlay-put o 'origin-indicator i)))
(setq easy-kill-candidate o)
(dolist (thing easy-kill-try-things)
(return)))
o))
+(defun easy-kill-indicate-origin ()
+ (let ((i (overlay-get easy-kill-candidate 'origin-indicator))
+ (origin (overlay-get easy-kill-candidate 'origin)))
+ (cond
+ ((not (overlayp i)) nil)
+ ((= origin (point))
+ (overlay-put i 'after-string nil))
+ ((memq (char-after origin) '(?\t ?\n))
+ (overlay-put i 'after-string (overlay-get i 'as)))
+ (t (move-overlay i origin (1+ origin))
+ (overlay-put i 'after-string nil)))))
+
(defun easy-kill-candidate ()
"Get the kill candidate as a string.
If the overlay specified by variable `easy-kill-candidate' has
(overlay-put o 'candidate beg)
(easy-kill-message-nolog "%s" beg))
(move-overlay o beg end))
- (cond (easy-kill-mark (easy-kill-mark-region))
+ (cond (easy-kill-mark (easy-kill-mark-region)
+ (easy-kill-indicate-origin))
((and interprogram-cut-function
(not (string= (easy-kill-candidate) "")))
(funcall interprogram-cut-function (easy-kill-candidate))))))