--- Begin Message ---
Subject: |
23.1; linum mode fails to number lines properly when just scrolling buffer |
Date: |
Fri, 20 Nov 2009 21:30:46 -0800 |
Please write in English if possible, because the Emacs maintainers
usually do not have translators to read other languages for them.
Your bug report will be posted to the bug-gnu-emacs@gnu.org mailing list,
and to the gnu.emacs.bug news group.
Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:
In emacs, invoke report-emacs-bug :-) while global-linum-mode is on.
Observe that there is some kind of overlay that occupies 9 lines before
this point. That is, the spot where this paragraph starts is labeled
line 7. Now page down (^v) and back (esc v). Observe that now every
display line, including inside the overlay, has a line number. *BUG*
What was line 7 is now shown as line 17.
As soon as you do another command like a right arrow, the line
numbers revert to the original correct line numbering.
Linum has a hook for window-scroll-functions:
linum.el:74:
(define-minor-mode linum-mode
"Toggle display of line numbers in the left margin."
:lighter "" ; for desktop.el
(if linum-mode
(progn
(if linum-eager
(add-hook 'post-command-hook (if linum-delay
'linum-schedule
'linum-update-current) nil t)
(add-hook 'after-change-functions 'linum-after-change nil t))
(add-hook 'window-scroll-functions 'linum-after-scroll nil t)
(add-hook 'window-size-change-functions 'linum-after-size nil t)
(add-hook 'change-major-mode-hook 'linum-delete-overlays nil t)
(add-hook 'window-configuration-change-hook
'linum-after-config nil t)
(linum-update-current))
linum.el:175:
(defun linum-after-scroll (win start)
(linum-update (window-buffer win)))
If I disable this function by doing (via {esc}:):
(defun linum-after-scroll (win start)
t)
the bug goes away.
I am investigating further, but the problem appears to be that
forward-line acts differently during window-scroll-functions hook then
normally. Some sort of dynamic variable binding, perhaps?
- Mark
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#4996: problem found |
Date: |
Tue, 24 Nov 2009 17:28:27 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux) |
>> I propose changing that line to:
>>
>> (let ((old-inhibit inhibit-point-motion-hooks))
>> (setq inhibit-point-motion-hooks t)
>> (forward-line)
>> (setq inhibit-point-motion-hooks old-inhibit))
> I suggest:
> (let ((inhibit-point-motion-hooks t))
> (forward-line))
Thanks, installed,
Stefan
--- End Message ---