[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack
From: |
Eli Zaretskii |
Subject: |
bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack |
Date: |
Sat, 09 Apr 2022 10:34:44 +0300 |
> Date: Fri, 8 Apr 2022 21:44:38 +0200
> From: Christoph Arenz <tiga.arenz@web.de>
>
> When the content of the calc stack inclusive top-of-stack symbol `.'
> gets larger in height than the calc window, the cursor is positioned at
> a weird position in the upper half of the stack window. When
> line-numbering is on, the cursor is positioned at the beginning of the
> line at the line number. Calling `calc-realign' does not change the
> cursor postion.
>
> How to reproduce:
> 1. emacs -Q
> 2. C-x * * (to start calc)
> 3. enter a number and RET
> 4. repeat No. 3 until the stacks grows and the symptom appears
>
> Expected behavior for the cursor is to be placed on the `.' symbol,
> representing the top of the stack.
>
> 5. After pressing `o' [calc-realign], the expected behavior would also
> be for the cursor to be positioned at the top of the calc stack.
>
> Debugging the function calc-align-stack-window with edebug, the symptom
> goes away when placing a breakpoint at the line
> (calc-cursor-stack-index 0) just after the set-window-start call, and
> then continuing from there.
>
> The following patch fixes the problem for me, but I do not fully
> understand the NOFORCE option of the set-window-start function.
Thanks, but I think using NOFORCE is not the best solution here,
because that causes Emacs to recenter the stack window, thus showing
fewer stack entries than possible.
I think the bug is actually off-by-one error, because the
vertical-motion call doesn't take the header-line into account. So I
suggest the following patch instead, please see if it solves the
problem:
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index 81677d7..900940d 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -1815,8 +1815,8 @@ calc-align-stack-window
(if win
(progn
(calc-cursor-stack-index 0)
- (vertical-motion (- 2 (window-height win)))
- (set-window-start win (point)))))
+ (vertical-motion (- 3 (window-height win)))
+ (set-window-start win (point) 'noforce))))
(calc-cursor-stack-index 0)
(if (looking-at " *\\.$")
(goto-char (1- (match-end 0)))))
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack, Christoph Arenz, 2022/04/08
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack,
Eli Zaretskii <=
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack, Christoph Arenz, 2022/04/09
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack, Eli Zaretskii, 2022/04/09
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack, Christoph Arenz, 2022/04/11
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack, Eli Zaretskii, 2022/04/11
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack, Eli Zaretskii, 2022/04/11
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack, Christoph Arenz, 2022/04/11
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack, Christoph Arenz, 2022/04/12
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack, Christoph Arenz, 2022/04/12
- bug#54800: 28.1; calc: Cursor positioned at weird position in calc stack, Eli Zaretskii, 2022/04/13