From: Dave Love Date: Mon, 12 Jun 2000 20:36:40 +0000 (+0000) Subject: (insert-image): Save a little consing. X-Git-Tag: emacs-pretest-21.0.90~3357 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0dc91c572f0e5dc98f0543d27d0cd71f9b2ac429;p=emacs.git (insert-image): Save a little consing. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c3ad921c2b4..a9a821112cc 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2000-06-12 Dave Love + + * image.el (insert-image): Save a little consing. + 2000-06-12 Kenichi Handa * language/tibet-util.el: Convert all tibetan-1-column characters diff --git a/lisp/image.el b/lisp/image.el index 9b04784ec00..339e176c223 100644 --- a/lisp/image.el +++ b/lisp/image.el @@ -151,15 +151,22 @@ means display it in the right marginal area." (error "Not an image: %s" image)) (unless (or (null area) (memq area '(left-margin right-margin))) (error "Invalid area %s" area)) - (when area - (setq image (list (list 'margin area) image))) + (if area + (setq image (list (list 'margin area) image)) + ;; Cons up a new spec equal but not eq to `image' so that + ;; inserting it twice in a row (adjacently) displays two copies of + ;; the image. Don't try to avoid this by looking at the display + ;; properties on either side so that we DTRT more often with + ;; cut-and-paste. (Yanking killed image text next to another copy + ;; of it loses anyway.) + (setq image (cons 'image (cdr image)))) (let ((start (point))) (insert string) - ;; Copy `image' so that inserting it twice in a row (adjacently) - ;; displays two copies of the image. (add-text-properties start (point) - (list 'display (copy-sequence image) - 'intangible (list t) ; something unique + (list 'display image + ;; `image' has the right properties to + ;; mark an intangible field. + 'intangible image 'rear-nonsticky (list 'display)))))