emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Ihor Radchenko <yantar92@posteo.net>
To: Michael Heerdegen <michael_heerdegen@web.de>
Cc: emacs-orgmode@gnu.org
Subject: Re: [BUG] org-agenda-later sometimes creates a void display [9.7.11 (release_9.7.11 @ /usr/local/share/emacs/31.0.50/lisp/org/)]
Date: Sun, 12 Jan 2025 07:55:25 +0000	[thread overview]
Message-ID: <87a5bw79g2.fsf@localhost> (raw)
In-Reply-To: <878qrgzxv1.fsf@web.de>

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

Michael Heerdegen <michael_heerdegen@web.de> writes:

> Ihor Radchenko <yantar92@posteo.net> writes:
>
>> +    (unless (< (point) wstart) ; do no scroll past the point
>> +      (set-window-start nil wstart))))
>
> Thanks.
>
> Hmmm - don't we have the same problem when (point) > (window-end)?  And
> this case is nastier, since exact window-end calculation needs a
> redisplay.  We might introduce a flicker when trying to fix it.

Right.
What about the attached patch?

> Since line lengths differ, we are currently setting window-start to a
> random line, to some degree.  (And I think window-start should better be
> set to the beginning of line).

I believe that Emacs redisplay should take care about this automatically.

> One step back: What problem does this hack solve?  Org already remembers
> the unit number of the time period point is in, and restores that: with
> point in a Wednesday, the new view will have point set to the beginning
> of the next Wednesday.  The display engine ensures that point is
> made visible.

https://orgmode.org/list/87lfh2hk4k.fsf@gmail.com/

> How about something like this?
>
>  - If point is at bob, we ensure that point is restored at bob - and
>    likewise for eob.
>
>  - When bob was visible in the prior view, we use window-start = 1
>    for the new view, too
>
>  - But when bob was not visible in the last view, we try to restore the
>    visible line number containing the window point, so that hitting f
>    will show the cursor at the same vertical position as in the last
>    view.  Or maybe better: restore the vertical position of the
>    beginning of the weekday point was in.

I hope that my idea in the patch is good enough and that we do not need
to go into redisplay complications.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v2-0001-org-agenda-later-Avoid-scrolling-the-window-past-.patch --]
[-- Type: text/x-patch, Size: 1295 bytes --]

From 3a4eb4837aecd924a355645473d8d335dfec6caa Mon Sep 17 00:00:00 2001
Message-ID: <3a4eb4837aecd924a355645473d8d335dfec6caa.1736668180.git.yantar92@posteo.net>
From: Ihor Radchenko <yantar92@posteo.net>
Date: Sat, 11 Jan 2025 15:33:31 +0100
Subject: [PATCH v2] org-agenda-later: Avoid scrolling the window past point

* lisp/org-agenda.el (org-agenda-later): When previous agenda buffer
is larger and its scroll position puts point outside the screen, do
not try to restore scroll state.  (Doing otherwise, scrolls past the
point, leading to unpredictable results - depending on
`scroll-conservatively'.

Reported-by: Michael Heerdegen <michael_heerdegen@web.de>
Link: https://orgmode.org/list/87ttadqati.fsf@web.de
---
 lisp/org-agenda.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 884b9de782..8143fd97a7 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -8789,7 +8789,7 @@ (defun org-agenda-later (arg)
 	   (list (car args) sd span)))
       (org-agenda-redo)
       (org-agenda-find-same-or-today-or-agenda cnt))
-    (set-window-start nil wstart)))
+    (set-window-start nil wstart 'noforce)))
 
 (defun org-agenda-earlier (arg)
   "Go backward in time by the current span in the agenda buffer.
-- 
2.47.1


[-- Attachment #3: Type: text/plain, Size: 223 bytes --]


-- 
Ihor Radchenko // yantar92,
Org mode maintainer,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

      reply	other threads:[~2025-01-12  7:54 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-05  0:29 [BUG] org-agenda-later sometimes creates a void display [9.7.11 (release_9.7.11 @ /usr/local/share/emacs/31.0.50/lisp/org/)] Michael Heerdegen
2025-01-05  8:52 ` Ihor Radchenko
2025-01-05 18:18   ` Michael Heerdegen
2025-01-05 18:31     ` Ihor Radchenko
2025-01-05 20:12       ` Michael Heerdegen
2025-01-11 14:39         ` Ihor Radchenko
2025-01-12  0:20           ` Michael Heerdegen
2025-01-12  7:55             ` Ihor Radchenko [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87a5bw79g2.fsf@localhost \
    --to=yantar92@posteo.net \
    --cc=emacs-orgmode@gnu.org \
    --cc=michael_heerdegen@web.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.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).