unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#37848: 27.0.50; hl-line and line-numbers out of sync
@ 2019-10-21  8:27 Andrey Orst
  2019-10-21 10:16 ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: Andrey Orst @ 2019-10-21  8:27 UTC (permalink / raw)
  To: 37848


[-- Attachment #1.1: Type: text/plain, Size: 4663 bytes --]

Hello, I've encountered this bug, when scrolling with mouse in inactive
window makes hl-line and current line number go out of sync. Can be
reproduced with this minimal config:

emacs -q --eval "(progn
                   (hl-line-mode t)
                   (set-face-attribute 'line-number-current-line nil
:foreground \"#FF0000\")
                   (display-line-numbers-mode t)
                   (split-window-right)
                   (switch-to-buffer \"*Messages*\"))"

This will open two windows, one with *scratch* and other with *Messages*
buffer. Try pasting some long text into the *scratch* buffer, and
scrolling with mouse wheel. The current line number and hl-line
highlighting should be in sync.

Then focus window with *Messages* buffer, and try scrolling in *scratch*
buffer again with mouse wheel. You'll notice that after scrolling the view
beyond the point, current line number remains correct, while hl-line
highlighter
doesn't move:

[image: image.png]

It looks like, while Emacs always keeps the point in the view, hl-line
acts like editors that alow point to leave the view, but only when
buffer is not in focus.


In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.12,
cairo version 1.17.3)
 of 2019-10-21 built on s06
Repository revision: 435eb82e7b7e8926a3675bac74713e7c6081f7db
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12005000
System Description: Arch Linux

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-sound=alsa --with-modules --without-gconf --without-gsettings
 --enable-link-time-optimization --with-x-toolkit=gtk3 --without-xaw3d
 --without-m17n-flt --with-cairo --without-compress-install
 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -flto=jobserver
 -fuse-linker-plugin -fuse-ld=gold' CPPFLAGS=-D_FORTIFY_SOURCE=2
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GLIB NOTIFY INOTIFY ACL
GNUTLS LIBXML2 FREETYPE HARFBUZZ LIBOTF ZLIB TOOLKIT_SCROLL_BARS GTK3
X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON PDUMPER LCMS2 GMP

Important settings:
  value of $LC_MONETARY: en_US.UTF-8
  value of $LC_NUMERIC: en_US.UTF-8
  value of $LC_TIME: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Messages

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
format-spec rfc822 mml easymenu mml-sec password-cache epa derived epg
epg-config gnus-util rmail rmail-loaddefs text-property-search time-date
subr-x seq byte-opt gv bytecomp byte-compile cconv mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
display-line-numbers hl-line tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode elisp-mode lisp-mode prog-mode register page
tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core term/tty-colors frame
cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian
slovak czech european ethiopic indian cyrillic chinese composite
charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev
obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face
macroexp files text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote threads
dbusbind inotify lcms2 dynamic-setting font-render-setting cairo
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 47006 4760)
 (symbols 48 6042 1)
 (strings 32 15494 1649)
 (string-bytes 1 504455)
 (vectors 16 10013)
 (vector-slots 8 129547 9758)
 (floats 8 24 35)
 (intervals 56 214 0)
 (buffers 1000 11))

[-- Attachment #1.2: Type: text/html, Size: 5251 bytes --]

[-- Attachment #2: image.png --]
[-- Type: image/png, Size: 108562 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#37848: 27.0.50; hl-line and line-numbers out of sync
  2019-10-21  8:27 bug#37848: 27.0.50; hl-line and line-numbers out of sync Andrey Orst
@ 2019-10-21 10:16 ` Eli Zaretskii
  2019-10-21 10:24   ` Andrey Orst
  0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2019-10-21 10:16 UTC (permalink / raw)
  To: Andrey Orst; +Cc: 37848

> From: Andrey Orst <andreyorst@gmail.com>
> Date: Mon, 21 Oct 2019 11:27:58 +0300
> 
> emacs -q --eval "(progn
>                    (hl-line-mode t)
>                    (set-face-attribute 'line-number-current-line nil :foreground \"#FF0000\")
>                    (display-line-numbers-mode t)
>                    (split-window-right)
>                    (switch-to-buffer \"*Messages*\"))"
> 
> This will open two windows, one with *scratch* and other with *Messages*
> buffer. Try pasting some long text into the *scratch* buffer, and
> scrolling with mouse wheel. The current line number and hl-line
> highlighting should be in sync.
> 
> Then focus window with *Messages* buffer, and try scrolling in *scratch*
> buffer again with mouse wheel. You'll notice that after scrolling the view 
> beyond the point, current line number remains correct, while hl-line highlighter
> doesn't move:
> 
> image.png
> 
> It looks like, while Emacs always keeps the point in the view, hl-line
> acts like editors that alow point to leave the view, but only when
> buffer is not in focus.

The problem is with hl-line mode: it doesn't move its overlay when
point moves due to redisplay keeping it in the viewport.

The line-number display has nothing to do with this, it works
correctly in this case.

Thanks.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#37848: 27.0.50; hl-line and line-numbers out of sync
  2019-10-21 10:16 ` Eli Zaretskii
@ 2019-10-21 10:24   ` Andrey Orst
  2019-10-21 10:49     ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: Andrey Orst @ 2019-10-21 10:24 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 37848

[-- Attachment #1: Type: text/plain, Size: 243 bytes --]

> The line-number display has nothing to do with this, it works
> correctly in this case.

It may work correctly, but I the issue is with the fact that line
number and hl-line are out of sync. Can I prevent this?

--
Best regards,
Andrey Orst

[-- Attachment #2: Type: text/html, Size: 320 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#37848: 27.0.50; hl-line and line-numbers out of sync
  2019-10-21 10:24   ` Andrey Orst
@ 2019-10-21 10:49     ` Eli Zaretskii
       [not found]       ` <CAAKhXoYYd-z8PZdxTB+Z3ATMwgY3kh=Y-05zOUa2vkeVMC78fg@mail.gmail.com>
  0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2019-10-21 10:49 UTC (permalink / raw)
  To: Andrey Orst; +Cc: 37848

> From: Andrey Orst <andreyorst@gmail.com>
> Date: Mon, 21 Oct 2019 13:24:11 +0300
> Cc: 37848@debbugs.gnu.org
> 
> > The line-number display has nothing to do with this, it works
> > correctly in this case.
> 
> It may work correctly, but I the issue is with the fact that line
> number and hl-line are out of sync.

More accurately, hl-line's overlay is out of sync with the window-point.

> Can I prevent this?

It's a bug in hl-line that needs to be fixed.

The display engine runs pre-redisplay-function for the window in this
case, so perhaps hl-line could install its hook there and fix its
overlay when it is called.

Patches are welcome.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#37848: Fwd: bug#37848: 27.0.50; hl-line and line-numbers out of sync
       [not found]       ` <CAAKhXoYYd-z8PZdxTB+Z3ATMwgY3kh=Y-05zOUa2vkeVMC78fg@mail.gmail.com>
@ 2019-10-21 11:43         ` Andrey Orst
  2019-10-21 12:58         ` Eli Zaretskii
  1 sibling, 0 replies; 6+ messages in thread
From: Andrey Orst @ 2019-10-21 11:43 UTC (permalink / raw)
  To: 37848

[-- Attachment #1: Type: text/plain, Size: 702 bytes --]

> It's a bug in hl-line that needs to be fixed.
>
> The display engine runs pre-redisplay-function for the window in this
> case, so perhaps hl-line could install its hook there and fix its
> overlay when it is called.
>
> Patches are welcome.

Unfortunately adding these hooks doesn't fix issue:

(add-hook 'pre-redisplay-function #'hl-line-highlight nil t)
(add-hook 'pre-redisplay-function #'hl-line-maybe-unhighlight nil t)
(add-hook 'pre-redisplay-function #'global-hl-line-highlight)
(add-hook 'pre-redisplay-function #'global-hl-line-maybe-unhighlight)

These two functions are used in `hl-line.el'.
I've tried pre-redisplay-functions hook as well with no effect.

-- 
Best regards,
Andrey Orst

[-- Attachment #2: Type: text/html, Size: 1127 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#37848: 27.0.50; hl-line and line-numbers out of sync
       [not found]       ` <CAAKhXoYYd-z8PZdxTB+Z3ATMwgY3kh=Y-05zOUa2vkeVMC78fg@mail.gmail.com>
  2019-10-21 11:43         ` bug#37848: Fwd: " Andrey Orst
@ 2019-10-21 12:58         ` Eli Zaretskii
  1 sibling, 0 replies; 6+ messages in thread
From: Eli Zaretskii @ 2019-10-21 12:58 UTC (permalink / raw)
  To: Andrey Orst; +Cc: 37848

[Please keep the bug address on the CC list.]

> From: Andrey Orst <andreyorst@gmail.com>
> Date: Mon, 21 Oct 2019 14:38:10 +0300
> 
> > It's a bug in hl-line that needs to be fixed.
> >
> > The display engine runs pre-redisplay-function for the window in this
> > case, so perhaps hl-line could install its hook there and fix its
> > overlay when it is called.
> >
> > Patches are welcome.
> 
> Unfortunately adding these hooks doesn't fix issue:
> 
> (add-hook 'pre-redisplay-function #'hl-line-highlight nil t)
> (add-hook 'pre-redisplay-function #'hl-line-maybe-unhighlight nil t)
> (add-hook 'pre-redisplay-function #'global-hl-line-highlight)
> (add-hook 'pre-redisplay-function #'global-hl-line-maybe-unhighlight)

This is not as simple as this;  pre-redisplay-function is called with
an argument, a list of windows that are to be redisplayed (in this
case I expect to see only one window in the list).  The function
should move the overlay in that window using that window's point
position.  By contrast, the functions you tried don't accept any
arguments, and hl-line-highlight assumes that it is called in the
selected window.

Thanks.





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-10-21 12:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-21  8:27 bug#37848: 27.0.50; hl-line and line-numbers out of sync Andrey Orst
2019-10-21 10:16 ` Eli Zaretskii
2019-10-21 10:24   ` Andrey Orst
2019-10-21 10:49     ` Eli Zaretskii
     [not found]       ` <CAAKhXoYYd-z8PZdxTB+Z3ATMwgY3kh=Y-05zOUa2vkeVMC78fg@mail.gmail.com>
2019-10-21 11:43         ` bug#37848: Fwd: " Andrey Orst
2019-10-21 12:58         ` 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).