[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master e4fdf86 5/7: excorporate-org: Support multiple calendars
From: |
Thomas Fitzsimmons |
Subject: |
[elpa] master e4fdf86 5/7: excorporate-org: Support multiple calendars |
Date: |
Fri, 14 Jun 2019 17:12:19 -0400 (EDT) |
branch: master
commit e4fdf86483b6595d088f1b06b337e2ad2f266992
Author: Thomas Fitzsimmons <address@hidden>
Commit: Thomas Fitzsimmons <address@hidden>
excorporate-org: Support multiple calendars
* packages/excorporate/excorporate-org.el
(exco-org--temporary-buffers): New variable.
(exco-org-initialize-buffer): Clear exco-org--temporary-buffers.
Change 1 to point-min call.
(exco-org--identifier-buffer): New function.
(exco-org-insert-headline): Insert into a temporary buffer instead
of main results buffer.
(exco-org-insert-meetings): Likewise.
(exco-org-finalize-buffer): Insert results from temporary buffers
then kill them and clear exco-org--temporary-buffers.
---
packages/excorporate/excorporate-org.el | 53 ++++++++++++++++++++++-----------
1 file changed, 35 insertions(+), 18 deletions(-)
diff --git a/packages/excorporate/excorporate-org.el
b/packages/excorporate/excorporate-org.el
index a17d060..649573b 100644
--- a/packages/excorporate/excorporate-org.el
+++ b/packages/excorporate/excorporate-org.el
@@ -20,7 +20,7 @@
;;; Commentary:
-;; Use the Org Mode to display daily meetings.
+;; Use Org Mode to display daily meetings.
;;; Code:
@@ -30,8 +30,12 @@
(defvar excorporate-org-buffer-name "*Excorporate*"
"The buffer into which Org Mode output is inserted.")
+(defvar exco-org--temporary-buffers '()
+ "A list of per-connection result buffers.")
+
(defun exco-org-initialize-buffer ()
"Add initial text to the destination buffer."
+ (setq exco-org--temporary-buffers '())
(with-current-buffer (get-buffer-create excorporate-org-buffer-name)
(setq buffer-read-only t)
;; Some Org mode configurations need `buffer-file-name' to be
@@ -47,7 +51,7 @@
(display-buffer (current-buffer))
(let ((inhibit-read-only t))
(delete-region (point-min) (point-max))
- (goto-char 1)
+ (goto-char (point-min))
(insert "# Updated...\n"))))
(defun exco-org-format-headline (identifier)
@@ -77,13 +81,21 @@ by `current-time'."
(dolist (invitee invitees)
(insert (format " + %s\n" invitee))))
+(defun exco-org--identifier-buffer (identifier)
+ "Return a hidden buffer with a name based on IDENTIFIER."
+ (get-buffer-create
+ (format " *exco-org-%S*" identifier)))
+
(defun exco-org-insert-headline (identifier month day year)
"Insert Org headline for IDENTIFIER on date MONTH DAY YEAR."
- (with-current-buffer (get-buffer-create excorporate-org-buffer-name)
- (let ((inhibit-read-only t))
- (insert (exco-org-format-headline identifier))
- (org-insert-time-stamp (encode-time 0 0 0 day month year)
- nil t " + Date " "\n"))))
+ (let ((temporary-buffer (exco-org--identifier-buffer identifier)))
+ (push temporary-buffer exco-org--temporary-buffers)
+ (with-current-buffer temporary-buffer
+ (let ((inhibit-read-only t))
+ (delete-region (point-min) (point-max))
+ (insert (exco-org-format-headline identifier))
+ (org-insert-time-stamp (encode-time 0 0 0 day month year)
+ nil t " + Date " "\n")))))
(defun exco-org-insert-meeting (subject start end location
main-invitees optional-invitees)
@@ -107,17 +119,19 @@ are the requested participants."
(defun exco-org-insert-meetings (identifier response)
"Insert the connection IDENTIFIER's meetings from RESPONSE."
(with-current-buffer (get-buffer-create excorporate-org-buffer-name)
- (let ((inhibit-read-only t)
- (name-regexp (concat "\\" (exco-org-format-headline identifier))))
- (goto-char 1)
+ (let ((inhibit-read-only t))
+ (goto-char (point-min))
(end-of-line)
- (insert (format "%s..." identifier))
- (goto-char (point-max))
- (re-search-backward name-regexp nil)
- (forward-line 2)
+ (insert (format "%s..." identifier))))
+ (with-current-buffer (exco-org--identifier-buffer identifier)
+ (let ((inhibit-read-only t))
(org-insert-time-stamp (current-time) t t " + Last checked " "\n")
- (exco-calendar-item-iterate response #'exco-org-insert-meeting)
- (re-search-backward name-regexp nil)
+ (exco-calendar-item-iterate
+ response (lambda (&rest arguments)
+ (with-current-buffer (exco-org--identifier-buffer identifier)
+ (org-mode)
+ (apply #'exco-org-insert-meeting arguments))))
+ (goto-char (point-min))
(if (save-excursion (org-goto-first-child))
(org-sort-entries t ?s)
(forward-line 3)
@@ -130,8 +144,11 @@ are the requested participants."
(let ((inhibit-read-only t))
(goto-char (point-min))
(end-of-line)
- (insert "done.")
- (org-sort-entries t ?a))))
+ (insert "done.\n")
+ (dolist (result-buffer (nreverse exco-org--temporary-buffers))
+ (insert-buffer-substring result-buffer)
+ (kill-buffer result-buffer))
+ (setq exco-org--temporary-buffers '()))))
;;;###autoload
(defun exco-org-show-day (month day year)
- [elpa] master updated (e2ceac5 -> 50aceef), Thomas Fitzsimmons, 2019/06/14
- [elpa] master a426add 3/7: excorporate-diary: Fix documentation string, Thomas Fitzsimmons, 2019/06/14
- [elpa] master aa5513d 1/7: excorporate-diary: Always use diary-fancy-display, Thomas Fitzsimmons, 2019/06/14
- [elpa] master e4fdf86 5/7: excorporate-org: Support multiple calendars,
Thomas Fitzsimmons <=
- [elpa] master 50aceef 7/7: Excorporate: Support multiple connections, Thomas Fitzsimmons, 2019/06/14
- [elpa] master 75874ae 4/7: excorporate-diary: Add feature idea comment, Thomas Fitzsimmons, 2019/06/14
- [elpa] master aeb5488 2/7: excorporate-diary: Escape literal percent signs, Thomas Fitzsimmons, 2019/06/14
- [elpa] master 47c951c 6/7: excorporate-diary: Suppress compilation warning, Thomas Fitzsimmons, 2019/06/14