[-- Attachment #1: Type: text/plain, Size: 1006 bytes --] I try to add an idle timer to auto refresh org agenda views. Here is what I code: #+begin_src emacs-lisp ;;; auto refresh `*Org Agenda*' buffer (defun my/org-agenda-auto-refresh () "Rebuild all agenda views buffers." (org-agenda-redo-all t)) (run-with-idle-timer (* 60 20) t #'my/org-agenda-auto-refresh) #+end_src But I got error: #+begin_example Error running timer ‘my/org-agenda-auto-refresh’: (error "‘recenter’ing a window that does not display current-buffer.") #+end_example I dive into source code of ~org-agenda-redo~ function. Found this error is caused by ~(recenter window-line)~. I'm thinking what about to separate this code out? So function ~org-agenda-redo~ can be used to non-interactive usage? [stardiviner] <Hack this world!> GPG key ID: 47C32433 IRC(freeenode): stardiviner Twitter: @numbchild Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 Blog: http://stardiviner.github.io/ [-- Attachment #2: Type: text/html, Size: 2500 bytes --]
"numbchild@gmail.com" <numbchild@gmail.com> writes:
[...]
> I dive into source code of ~org-agenda-redo~ function.
> Found this error is caused by ~(recenter window-line)~.
>
> I'm thinking what about to separate this code out? So function
> ~org-agenda-redo~ can be used to non-interactive usage?
My gut feeling says this is a good idea.
Do you have a concrete implementation yet?
Best regards,
--
Marco
[-- Attachment #1: Type: text/plain, Size: 1021 bytes --] The `recenter` is useful for keeping position. I checked docstring of `recenter`, have no clue how to implement a better solution. I also thinked about ways like `with-current-buffer` etc. But can get around the `recenter`. Does anybody have any idea? [stardiviner] <Hack this world!> GPG key ID: 47C32433 IRC(freeenode): stardiviner Twitter: @numbchild Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 Blog: http://stardiviner.github.io/ On Mon, Jul 27, 2020 at 3:46 PM Marco Wahl <marcowahlsoft@gmail.com> wrote: > "numbchild@gmail.com" <numbchild@gmail.com> writes: > > [...] > > > I dive into source code of ~org-agenda-redo~ function. > > Found this error is caused by ~(recenter window-line)~. > > > > I'm thinking what about to separate this code out? So function > > ~org-agenda-redo~ can be used to non-interactive usage? > > My gut feeling says this is a good idea. > > Do you have a concrete implementation yet? > > > Best regards, > -- > Marco > > [-- Attachment #2: Type: text/html, Size: 2125 bytes --]
"numbchild@gmail.com" <numbchild@gmail.com> writes:
> I try to add an idle timer to auto refresh org agenda views.
>
> Here is what I code:
>
> #+begin_src emacs-lisp
> ;;; auto refresh `*Org Agenda*' buffer
> (defun my/org-agenda-auto-refresh ()
> "Rebuild all agenda views buffers."
> (org-agenda-redo-all t))
>
> (run-with-idle-timer (* 60 20) t #'my/org-agenda-auto-refresh)
> #+end_src
>
>
> But I got error:
>
> #+begin_example
> Error running timer ‘my/org-agenda-auto-refresh’: (error "‘recenter’ing a
> window that does not display current-buffer.")
> #+end_example
Coming back to your original issue. Possibly it's enough to just
suppress the error.
You could change the function to
--8<---------------cut here---------------start------------->8---
(defun my/org-agenda-auto-refresh-1 ()
"Rebuild all agenda views buffers."
(ignore-errors (org-agenda-redo-all t)))
--8<---------------cut here---------------end--------------->8---
HTH,
--
Marco
[-- Attachment #1: Type: text/plain, Size: 1464 bytes --] This is very useful, thanks Marco. [stardiviner] <Hack this world!> GPG key ID: 47C32433 IRC(freeenode): stardiviner Twitter: @numbchild Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 Blog: http://stardiviner.github.io/ On Wed, Jul 29, 2020 at 4:21 AM Marco Wahl <marcowahlsoft@gmail.com> wrote: > "numbchild@gmail.com" <numbchild@gmail.com> writes: > > > I try to add an idle timer to auto refresh org agenda views. > > > > Here is what I code: > > > > #+begin_src emacs-lisp > > ;;; auto refresh `*Org Agenda*' buffer > > (defun my/org-agenda-auto-refresh () > > "Rebuild all agenda views buffers." > > (org-agenda-redo-all t)) > > > > (run-with-idle-timer (* 60 20) t #'my/org-agenda-auto-refresh) > > #+end_src > > > > > > But I got error: > > > > #+begin_example > > Error running timer ‘my/org-agenda-auto-refresh’: (error "‘recenter’ing a > > window that does not display current-buffer.") > > #+end_example > > Coming back to your original issue. Possibly it's enough to just > suppress the error. > > You could change the function to > > --8<---------------cut here---------------start------------->8--- > > (defun my/org-agenda-auto-refresh-1 () > "Rebuild all agenda views buffers." > (ignore-errors (org-agenda-redo-all t))) > > --8<---------------cut here---------------end--------------->8--- > > > HTH, > -- > Marco > [-- Attachment #2: Type: text/html, Size: 2605 bytes --]
Hi,
"numbchild@gmail.com" <numbchild@gmail.com> writes:
> I try to add an idle timer to auto refresh org agenda views.
>
> Here is what I code:
>
> #+begin_src emacs-lisp
> ;;; auto refresh `*Org Agenda*' buffer
> (defun my/org-agenda-auto-refresh ()
> "Rebuild all agenda views buffers."
> (org-agenda-redo-all t))
>
> (run-with-idle-timer (* 60 20) t #'my/org-agenda-auto-refresh)
> #+end_src
>
> But I got error:
>
> #+begin_example
> Error running timer ‘my/org-agenda-auto-refresh’: (error
> "‘recenter’ing a window that does not display current-buffer.")
> #+end_example
I pushed fd28d0ac which should avoid this error.
Thanks,
--
Bastien