* bug#12403: 24.2; scroll-margin breaks emacs24 @ 2012-09-10 14:50 Yuri D'Elia 2012-09-10 16:39 ` Eli Zaretskii 0 siblings, 1 reply; 3+ messages in thread From: Yuri D'Elia @ 2012-09-10 14:50 UTC (permalink / raw) To: 12403 emacs24 as shipped by debian breaks "scroll-margin". http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=681991 It seems that setting scroll-margin on *any* value breaks the redisplay while scrolling. Try with the following (under a graphical session): emacs -q open the tutorial, scroll with the arrow keys until you reach the bottom. Everything looks ok. kill emacs. Start again, this time: C-x set-variable scroll-margin 5 open the tutorial, scroll down with the arrow keys until you reach the bottom. Text on the page looks *badly* garbled (this is not just character left-overs from the previous screenfull, a lot of lines look repeated at some point in the same line). In GNU Emacs 24.2.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.10) of 2012-09-09 on trouble, modified by Debian Windowing system distributor `The X.Org Foundation', version 11.0.11203902 Configured using: `configure '--build' 'x86_64-linux-gnu' '--build' 'x86_64-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.2/site-lisp:/usr/share/emacs/site-lisp' '--with-crt-dir=/usr/lib/x86_64-linux-gnu' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-D_FORTIFY_SOURCE=2'' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: C value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: en_US.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Fundamental Minor modes in effect: tooltip-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent messages: Loading /etc/emacs/site-start.d/50php-elisp.el (source)...done Loading /etc/emacs/site-start.d/50psvn.el (source)...done Loading /etc/emacs/site-start.d/50pymacs.el (source)...done Loading /etc/emacs/site-start.d/50python-docutils.el (source)...done Loading /etc/emacs/site-start.d/50python-mode.el (source)...done Loading /etc/emacs/site-start.d/50w3m-el.el (source)...done Loading /etc/emacs/site-start.d/50yaml-mode.el (source)...done Loading /etc/emacs/site-start.d/51debian-el.el (source)...done For information about GNU Emacs and the GNU system, type C-h C-a. Making completion list... Load-path shadows: /usr/share/emacs/24.2/site-lisp/cmake-data/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode /usr/share/emacs24/site-lisp/dictionaries-common/ispell hides /usr/share/emacs/24.2/lisp/textmodes/ispell /usr/share/emacs24/site-lisp/dictionaries-common/flyspell hides /usr/share/emacs/24.2/lisp/textmodes/flyspell /usr/share/emacs/site-lisp/rst hides /usr/share/emacs/24.2/lisp/textmodes/rst Features: (shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail regexp-opt rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils help-mode easymenu view debian-el debian-el-loaddefs w3m-load mmm-auto mmm-vars mmm-compat cl emacs-goodies-el emacs-goodies-custom emacs-goodies-loaddefs easy-mmode time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs) ^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#12403: 24.2; scroll-margin breaks emacs24 2012-09-10 14:50 bug#12403: 24.2; scroll-margin breaks emacs24 Yuri D'Elia @ 2012-09-10 16:39 ` Eli Zaretskii 2012-09-12 17:15 ` Eli Zaretskii 0 siblings, 1 reply; 3+ messages in thread From: Eli Zaretskii @ 2012-09-10 16:39 UTC (permalink / raw) To: Yuri D'Elia; +Cc: 12403 > Date: Mon, 10 Sep 2012 16:50:22 +0200 > From: Yuri D'Elia <wavexx@thregr.org> > > emacs24 as shipped by debian breaks "scroll-margin". > > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=681991 > > It seems that setting scroll-margin on *any* value breaks the redisplay > while scrolling. > > Try with the following (under a graphical session): > > emacs -q > > open the tutorial, scroll with the arrow keys until you reach the bottom. > Everything looks ok. > > kill emacs. Start again, this time: > > C-x set-variable scroll-margin 5 > > open the tutorial, scroll down with the arrow keys until you reach the > bottom. Text on the page looks *badly* garbled (this is not just > character left-overs from the previous screenfull, a lot of lines look > repeated at some point in the same line). Confirmed :-(. However, this bug was present even in the first pretest of Emacs 24, 24.0.90. I will take a look. ^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#12403: 24.2; scroll-margin breaks emacs24 2012-09-10 16:39 ` Eli Zaretskii @ 2012-09-12 17:15 ` Eli Zaretskii 0 siblings, 0 replies; 3+ messages in thread From: Eli Zaretskii @ 2012-09-12 17:15 UTC (permalink / raw) To: wavexx; +Cc: 12403-done > Date: Mon, 10 Sep 2012 19:39:41 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 12403@debbugs.gnu.org > > > Try with the following (under a graphical session): > > > > emacs -q > > > > open the tutorial, scroll with the arrow keys until you reach the bottom. > > Everything looks ok. > > > > kill emacs. Start again, this time: > > > > C-x set-variable scroll-margin 5 > > > > open the tutorial, scroll down with the arrow keys until you reach the > > bottom. Text on the page looks *badly* garbled (this is not just > > character left-overs from the previous screenfull, a lot of lines look > > repeated at some point in the same line). > > Confirmed :-(. However, this bug was present even in the first > pretest of Emacs 24, 24.0.90. > > I will take a look. Fixed in revision 108138 on the emacs-24 branch, with the following patch: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-09-12 14:59:56 +0000 +++ src/ChangeLog 2012-09-12 17:10:02 +0000 @@ -1,3 +1,11 @@ +2012-09-12 Eli Zaretskii <eliz@gnu.org> + + * xdisp.c (try_window_reusing_current_matrix): Under bidi + reordering, locate the cursor by calling set_cursor_from_row; if + that fails, clear the desired glyph matrix before returning a + failure indication to the caller. Fixes leaving garbled display + when fast scrolling with a down-key. (Bug#12403) + 2012-09-12 Jan Djärv <jan.h.d@swipnet.se> * gtkutil.c (x_wm_set_size_hint): Use 1 col for base_width so it === modified file 'src/xdisp.c' --- src/xdisp.c 2012-05-30 18:09:17 +0000 +++ src/xdisp.c 2012-09-12 16:58:45 +0000 @@ -16593,28 +16593,33 @@ try_window_reusing_current_matrix (struc } if (row < bottom_row) { - struct glyph *glyph = row->glyphs[TEXT_AREA] + w->cursor.hpos; - struct glyph *end = row->glyphs[TEXT_AREA] + row->used[TEXT_AREA]; - - /* Can't use this optimization with bidi-reordered glyph - rows, unless cursor is already at point. */ + /* Can't simply scan the row for point with + bidi-reordered glyph rows. Let set_cursor_from_row + figure out where to put the cursor, and if it fails, + give up. */ if (!NILP (BVAR (XBUFFER (w->buffer), bidi_display_reordering))) { - if (!(w->cursor.hpos >= 0 - && w->cursor.hpos < row->used[TEXT_AREA] - && BUFFERP (glyph->object) - && glyph->charpos == PT)) - return 0; + if (!set_cursor_from_row (w, row, w->current_matrix, + 0, 0, 0, 0)) + { + clear_glyph_matrix (w->desired_matrix); + return 0; + } } else - for (; glyph < end - && (!BUFFERP (glyph->object) - || glyph->charpos < PT); - glyph++) - { - w->cursor.hpos++; - w->cursor.x += glyph->pixel_width; - } + { + struct glyph *glyph = row->glyphs[TEXT_AREA] + w->cursor.hpos; + struct glyph *end = row->glyphs[TEXT_AREA] + row->used[TEXT_AREA]; + + for (; glyph < end + && (!BUFFERP (glyph->object) + || glyph->charpos < PT); + glyph++) + { + w->cursor.hpos++; + w->cursor.x += glyph->pixel_width; + } + } } } ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-09-12 17:15 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-09-10 14:50 bug#12403: 24.2; scroll-margin breaks emacs24 Yuri D'Elia 2012-09-10 16:39 ` Eli Zaretskii 2012-09-12 17:15 ` Eli Zaretskii
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).