Subject: Re: bug#14567: Scrolling of large images

From: David Engster <[email-masked]>
Date: Tue, 11 Jun 2013 22:14:47 +0200

Eli Zaretskii writes:
>> I can't really reproduce the line-move error either in this mode. It
>> does show up occasionally but I haven't figured out how to
>> explicitly trigger it thus far.
>
> I'll try reproducing it here.

I also tried the patch on current trunk. I use the following snippet to
generate a buffer containing large and small images as well as text:

(with-current-buffer (get-buffer-create "test")
  (erase-buffer)
  (let ((imagelarge (create-image "~/someimage.jpg" 'imagemagick nil :height 2000 :width 1000))
	(imagesmall (create-image "~/someimage.jpg" 'imagemagick nil :height 200 :width 100)))
    (dotimes (i 20)
      (insert "\n*** " (number-to-string i)" ***\nThis is a line of text.\nAnd here's a large image:\n")
      (insert-image imagelarge)
      (insert "\nAnd a small image:\n")
      (insert-image imagesmall))
    (goto-char (point-min))))

Obviously, replace "~/someimage.jpg" with something else. Also, Emacs
must be compiled with imagemagick support.

Scrolling using your patch looks already pretty good, but I also get the
'wrong-type-argument' error while scrolling down. I use a maximized
'emacs -Q' on a display with 1366x768 resolution, and here's the backtrace:

Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
  line-move-partial(1 nil nil)
  line-move(1 nil nil 1)
  #[0 "\302\300@\303\211\301$\207" [(1) 1 line-move nil] 5 "\n\n(fn)"]()
  funcall(#[0 "\302\300@\303\211\301$\207" [(1) 1 line-move nil] 5 "\n\n(fn)"])
  next-line(1 1)
  call-interactively(next-line nil nil)
  command-execute(next-line)

This happens during scrolling when point should switch from the first
small image to the following text line containing "*** 1 ***". The
second large image is already visible at the bottom. I can do
screenshots or even a screencast if necessary.

-David