* bug#6999: 23.2; [PATCH] appt ignores included diary files
@ 2010-09-08 12:31 Leo
2010-09-08 12:45 ` Leo
0 siblings, 1 reply; 10+ messages in thread
From: Leo @ 2010-09-08 12:31 UTC (permalink / raw)
To: 6999
When the main diary file includes other diary files. File saving in the
included does no appt-check, which means if one adds appointments
directly into the included file, they will not be added by
appt-update-list.
One simple solution is to make appt-update-list do appt-check if major
mode is diary-mode. Then users can open included files in diary mode and
add appointments.
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index 3573c95..818fee4 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -660,7 +660,8 @@ hour and minute parts."
(defun appt-update-list ()
"If the current buffer is visiting the diary, update appointments.
This function is intended for use with `write-file-functions'."
- (and (string-equal buffer-file-name (expand-file-name diary-file))
+ (and (or (string-equal buffer-file-name (expand-file-name diary-file))
+ (eq major-mode 'diary-mode))
appt-timer
(let ((appt-display-diary nil))
(appt-check t)))
^ permalink raw reply related [flat|nested] 10+ messages in thread
* bug#6999: 23.2; [PATCH] appt ignores included diary files
2010-09-08 12:31 bug#6999: 23.2; [PATCH] appt ignores included diary files Leo
@ 2010-09-08 12:45 ` Leo
2010-09-08 14:38 ` Stefan Monnier
2010-09-14 0:24 ` Glenn Morris
0 siblings, 2 replies; 10+ messages in thread
From: Leo @ 2010-09-08 12:45 UTC (permalink / raw)
To: 6999
On 2010-09-08 13:31 +0100, Leo wrote:
> When the main diary file includes other diary files. File saving in the
> included does no appt-check, which means if one adds appointments
> directly into the included file, they will not be added by
> appt-update-list.
>
> One simple solution is to make appt-update-list do appt-check if major
> mode is diary-mode. Then users can open included files in diary mode and
> add appointments.
[...]
Annoyingly appt-check pops up the main diary buffer. So maybe do this
instead:
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index 3573c95..32563ab 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -660,10 +660,11 @@ hour and minute parts."
(defun appt-update-list ()
"If the current buffer is visiting the diary, update appointments.
This function is intended for use with `write-file-functions'."
- (and (string-equal buffer-file-name (expand-file-name diary-file))
+ (and (or (string-equal buffer-file-name (expand-file-name diary-file))
+ (eq major-mode 'diary-mode))
appt-timer
(let ((appt-display-diary nil))
- (appt-check t)))
+ (save-window-excursion (appt-check t))))
nil)
;; In Emacs-21.3, the manual documented the following procedure to
^ permalink raw reply related [flat|nested] 10+ messages in thread
* bug#6999: 23.2; [PATCH] appt ignores included diary files
2010-09-08 12:45 ` Leo
@ 2010-09-08 14:38 ` Stefan Monnier
2010-09-08 15:07 ` Leo
2010-09-14 0:24 ` Glenn Morris
1 sibling, 1 reply; 10+ messages in thread
From: Stefan Monnier @ 2010-09-08 14:38 UTC (permalink / raw)
To: Leo; +Cc: 6999
> Annoyingly appt-check pops up the main diary buffer. So maybe do this
> instead:
[...]
> - (appt-check t)))
> + (save-window-excursion (appt-check t))))
Not good enough: the buffer might have popped up in a new frame, in
which case save-window-excursion won't be of any help.
Basically, you can't undo a "pop up a buffer", so the code should be
written in such a way that it's only done when it's *really* necessary.
Stefan
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#6999: 23.2; [PATCH] appt ignores included diary files
2010-09-08 14:38 ` Stefan Monnier
@ 2010-09-08 15:07 ` Leo
0 siblings, 0 replies; 10+ messages in thread
From: Leo @ 2010-09-08 15:07 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 6999
On 2010-09-08 15:38 +0100, Stefan Monnier wrote:
> Not good enough: the buffer might have popped up in a new frame, in
> which case save-window-excursion won't be of any help.
>
> Basically, you can't undo a "pop up a buffer", so the code should be
> written in such a way that it's only done when it's *really* necessary.
This form (or selective (diary-show-all-entries)) in `appt-check'
displays diary buffer. I don't know how best to fix it.
Leo
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#6999: 23.2; [PATCH] appt ignores included diary files
2010-09-08 12:45 ` Leo
2010-09-08 14:38 ` Stefan Monnier
@ 2010-09-14 0:24 ` Glenn Morris
2010-09-14 6:19 ` Leo
1 sibling, 1 reply; 10+ messages in thread
From: Glenn Morris @ 2010-09-14 0:24 UTC (permalink / raw)
To: Leo; +Cc: 6999
Leo wrote:
> - (and (string-equal buffer-file-name (expand-file-name diary-file))
> + (and (or (string-equal buffer-file-name (expand-file-name diary-file))
> + (eq major-mode 'diary-mode))
There's no particular reason that the included diary files should be
being visited in diary-mode. I'll try to find a different fix (I'm
thinking maybe running diary-list-entries should store a list of any
include files that were found).
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#6999: 23.2; [PATCH] appt ignores included diary files
2010-09-14 0:24 ` Glenn Morris
@ 2010-09-14 6:19 ` Leo
2010-09-14 7:20 ` Glenn Morris
0 siblings, 1 reply; 10+ messages in thread
From: Leo @ 2010-09-14 6:19 UTC (permalink / raw)
To: Glenn Morris; +Cc: 6999
On 2010-09-14 01:24 +0100, Glenn Morris wrote:
> Leo wrote:
>
>> - (and (string-equal buffer-file-name (expand-file-name diary-file))
>> + (and (or (string-equal buffer-file-name (expand-file-name diary-file))
>> + (eq major-mode 'diary-mode))
>
> There's no particular reason that the included diary files should be
> being visited in diary-mode. I'll try to find a different fix (I'm
> thinking maybe running diary-list-entries should store a list of any
> include files that were found).
But the point of that is to decide whether to call appt-check (hence
diary-list-entries, which is expensive). Looks like somehow diary-lib
needs a function to return all included files without doing list
entries. Thanks for looking into this.
Leo
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#6999: 23.2; [PATCH] appt ignores included diary files
2010-09-14 6:19 ` Leo
@ 2010-09-14 7:20 ` Glenn Morris
2010-09-14 7:38 ` Leo
0 siblings, 1 reply; 10+ messages in thread
From: Glenn Morris @ 2010-09-14 7:20 UTC (permalink / raw)
To: Leo; +Cc: 6999
emacs-23 branch:
2010-09-14 Glenn Morris <rgm at gnu.org>
* calendar/diary-lib.el (diary-included-files): New variable.
(diary-list-entries): Maybe initialize diary-included-files.
(diary-include-other-diary-files): Append to diary-included-files.
* calendar/appt.el (appt-update-list): Also check the
members of diary-included-files.
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#6999: 23.2; [PATCH] appt ignores included diary files
2010-09-14 7:20 ` Glenn Morris
@ 2010-09-14 7:38 ` Leo
2010-09-14 8:06 ` Glenn Morris
0 siblings, 1 reply; 10+ messages in thread
From: Leo @ 2010-09-14 7:38 UTC (permalink / raw)
To: Glenn Morris; +Cc: 6999
On 2010-09-14 08:20 +0100, Glenn Morris wrote:
> emacs-23 branch:
>
> 2010-09-14 Glenn Morris <rgm at gnu.org>
>
> * calendar/diary-lib.el (diary-included-files): New variable.
> (diary-list-entries): Maybe initialize diary-included-files.
> (diary-include-other-diary-files): Append to diary-included-files.
> * calendar/appt.el (appt-update-list): Also check the
> members of diary-included-files.
>
Thanks. I like your solution.
The only remaining issue is the main diary file buffer pops up when
saving in included files.
Leo
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#6999: 23.2; [PATCH] appt ignores included diary files
2010-09-14 7:38 ` Leo
@ 2010-09-14 8:06 ` Glenn Morris
2010-09-15 2:49 ` Glenn Morris
0 siblings, 1 reply; 10+ messages in thread
From: Glenn Morris @ 2010-09-14 8:06 UTC (permalink / raw)
To: Leo; +Cc: 6999
Leo wrote:
> The only remaining issue is the main diary file buffer pops up when
> saving in included files.
I know; see the FIXME comment in appt-check.
It is only displayed if it was being visited beforehand.
It is because (diary) turns on "selective" display and we need to turn
it off again. This whole thing is a mess.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2010-09-15 2:49 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-08 12:31 bug#6999: 23.2; [PATCH] appt ignores included diary files Leo
2010-09-08 12:45 ` Leo
2010-09-08 14:38 ` Stefan Monnier
2010-09-08 15:07 ` Leo
2010-09-14 0:24 ` Glenn Morris
2010-09-14 6:19 ` Leo
2010-09-14 7:20 ` Glenn Morris
2010-09-14 7:38 ` Leo
2010-09-14 8:06 ` Glenn Morris
2010-09-15 2:49 ` Glenn Morris
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.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).