GNU bug report logs - #29198
Cursor fringe arrow indicator not updating.

Previous Next

Package: emacs;

Reported by: Keith David Bershatsky <esq <at> lawlist.com>

Date: Tue, 7 Nov 2017 19:59:02 UTC

Severity: normal

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#29198: closed (Cursor fringe arrow indicator not updating.)
Date: Thu, 09 Nov 2017 16:30:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 09 Nov 2017 18:29:14 +0200
with message-id <83po8rquud.fsf <at> gnu.org>
and subject line Re: bug#29198: Cursor fringe arrow indicator not updating.
has caused the debbugs.gnu.org bug report #29198,
regarding Cursor fringe arrow indicator not updating.
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
29198: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=29198
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Keith David Bershatsky <esq <at> lawlist.com>
To: Emacs Bug Reports <bug-gnu-emacs <at> gnu.org>
Subject: Cursor fringe arrow indicator not updating.
Date: Tue, 07 Nov 2017 11:57:49 -0800
The following code works fine with no user configuration in Emacs 25.3.  However, it does not work well with the current version of the master branch.  The overlay arrow indicator is not updating as the user moves up or down in the buffer with the keyboard arrow keys.

Step 1:  Open an Emacs built from the current master branch.

Step 2:  Got to the scratch buffer and evaluate the code below.

Step 3:  Maneuver up and down with the arrow keys navigating the code below.  The fringe bitmap indicator should track the vertical cursor position, but it does not work.


(defface +-left-fringe-cursor-face
  '((t (:foreground "firebrick")))
  "Face for `+-left-fringe-cursor-face'."
  :group '+-mode)

(defun set-fringe-cursor ()
"Doc-string"
  (if (not (and (eobp) (bolp)))
     (setq +-left-fringe-overlay-position (copy-marker (line-beginning-position)))
    (setq +-left-fringe-overlay-position  nil)))

(define-fringe-bitmap '+-cursor-left-fringe-bitmap [128 192 96 48 24 48 96 192 128] 9 8 'center)
(set-fringe-bitmap-face '+-cursor-left-fringe-bitmap '+-left-fringe-cursor-face)

;;; `overlay-arrow-bitmap' is a special SYMBOL defined in xdisp.c.
(defvar +-left-fringe-overlay-position nil
  "Doc-string.")
(make-variable-buffer-local '+-left-fringe-overlay-position)
(add-to-list 'overlay-arrow-variable-list '+-left-fringe-overlay-position)
(put '+-left-fringe-overlay-position 'overlay-arrow-bitmap '+-cursor-left-fringe-bitmap)

(add-hook 'post-command-hook 'set-fringe-cursor 'append 'local)


[Message part 3 (message/rfc822, inline)]
From: Eli Zaretskii <eliz <at> gnu.org>
To: Keith David Bershatsky <esq <at> lawlist.com>
Cc: 29198-done <at> debbugs.gnu.org
Subject: Re: bug#29198: Cursor fringe arrow indicator not updating.
Date: Thu, 09 Nov 2017 18:29:14 +0200
> Date:  Wed, 08 Nov 2017 20:26:16 -0800
> From:  Keith David Bershatsky <esq <at> lawlist.com>
> Cc:  29198 <at> debbugs.gnu.org
> 
> This feature was broken on February 23, 2017 with:
> 
> dee8674414fae2323fd9cbf05aa762e72fa575e5
> 
> I manually reversed the optimization that was applied with the above-mentioned patch, and built a new Emacs 26 downloaded today and am able to verify that this corrects the problem.  I.e., manually reversing *a575e5 as applied to xdisp.c makes everything work properly.

Thanks.  Meanwhile I also arrived at the conclusion that this is a
bug, because the same recipe does work on TTY frames.

Of course, reverting the above changes is not the solution, because as
you yourself noticed, it caused redisplay to be significantly
snappier.  The problem with those changes is that they opened the path
for the code to use redisplay optimizations when overlay-arrows are
displayed, which (the optimizations) are incompatible with
overlay-arrow display.  So the correct solution would be to disable
those optimizations when overlay-arrows are displayed in the buffer.
Which I just did.

Thanks.


This bug report was last modified 7 years and 191 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.