branch: elpa/org-contrib
commit 1eed6b71572708a8400b6c871630b48284379400
Author: Ihor Radchenko <yanta...@posteo.net>
Commit: Ihor Radchenko <yanta...@posteo.net>

    * lisp/org-mac-iCal.el: Fix compiler warnings
    
    (org-mac-iCal): Let-bind local variables.  Drop obsolete functions.
    (omi-concat-leopard-ics): Let-bind local variables.
    (omi-import-ics): Let-bind local variables.  Do not use `goto-line'
    non-interactively.
---
 lisp/org-mac-iCal.el | 240 ++++++++++++++++++++++++++-------------------------
 1 file changed, 124 insertions(+), 116 deletions(-)

diff --git a/lisp/org-mac-iCal.el b/lisp/org-mac-iCal.el
index e3f3d877d6..936a60e27b 100644
--- a/lisp/org-mac-iCal.el
+++ b/lisp/org-mac-iCal.el
@@ -66,145 +66,153 @@ today's date"
   "Selects checked calendars in iCal.app and imports them into
 the the Emacs diary"
   (interactive)
+  (let ( currentBuffer openBuffers caldav-folders
+        caldav-calendars local-calendars all-calendars
+         import-calendars usedCalendarsBuffers
+         usedCalendarsFiles)
+    ;; kill diary buffers then empty diary files to avoid duplicates
+    (setq currentBuffer (buffer-name))
+    (setq openBuffers (mapcar (function buffer-name) (buffer-list)))
+    (omi-kill-diary-buffer openBuffers)
+    (with-temp-buffer
+      (insert-file-contents diary-file)
+      (delete-region (point-min) (point-max))
+      (write-region (point-min) (point-max) diary-file))
 
-  ;; kill diary buffers then empty diary files to avoid duplicates
-  (setq currentBuffer (buffer-name))
-  (setq openBuffers (mapcar (function buffer-name) (buffer-list)))
-  (omi-kill-diary-buffer openBuffers)
-  (with-temp-buffer
-    (insert-file-contents diary-file)
-    (delete-region (point-min) (point-max))
-    (write-region (point-min) (point-max) diary-file))
-
-  ;; determine available calendars
-  (setq caldav-folders (directory-files "~/Library/Calendars" 1 ".*caldav$"))
-  (setq caldav-calendars nil)
-  (mapc
+    ;; determine available calendars
+    (setq caldav-folders (directory-files "~/Library/Calendars" 1 ".*caldav$"))
+    (setq caldav-calendars nil)
+    (mapc
      (lambda (x)
        (setq caldav-calendars (nconc caldav-calendars (directory-files x 1 
".*calendar$"))))
      caldav-folders)
 
-  (setq local-calendars nil)
-  (setq local-calendars (directory-files "~/Library/Calendars" 1 
".*calendar$"))
+    (setq local-calendars nil)
+    (setq local-calendars (directory-files "~/Library/Calendars" 1 
".*calendar$"))
 
-  (setq all-calendars (append caldav-calendars local-calendars))
+    (setq all-calendars (append caldav-calendars local-calendars))
 
-  ;; parse each calendar's Info.plist to see if calendar is checked in iCal
-  (setq all-calendars (delq 'nil (mapcar
-                                   (lambda (x)
-                                     (omi-checked x))
-                                   all-calendars)))
+    ;; parse each calendar's Info.plist to see if calendar is checked in iCal
+    (setq all-calendars (delq 'nil (mapcar
+                                 (lambda (x)
+                                   (omi-checked x))
+                                 all-calendars)))
 
-  ;; for each calendar, concatenate individual events into a single ics file
-  (with-temp-buffer
-    (shell-command "sw_vers" (current-buffer))
-    (when (re-search-backward "10\\.[5678]" nil t)
-      (omi-concat-leopard-ics all-calendars)))
+    ;; for each calendar, concatenate individual events into a single ics file
+    (with-temp-buffer
+      (shell-command "sw_vers" (current-buffer))
+      (when (re-search-backward "10\\.[5678]" nil t)
+       (omi-concat-leopard-ics all-calendars)))
 
-  ;; move all caldav ics files to the same place as local ics files
-  (mapc
-   (lambda (x)
-     (mapc
-      (lambda (y)
-        (rename-file (concat x "/" y);
-                     (concat "~/Library/Calendars/" y)))
-      (directory-files x nil ".*ics$")))
-   caldav-folders)
-
-  ;; check calendar has contents and import
-  (setq import-calendars (directory-files "~/Library/Calendars" 1 ".*ics$"))
-  (mapc
-   (lambda (x)
-     (when (/= (nth 7 (file-attributes x 'string)) 0)
-       (omi-import-ics x)))
-   import-calendars)
+    ;; move all caldav ics files to the same place as local ics files
+    (mapc
+     (lambda (x)
+       (mapc
+       (lambda (y)
+          (rename-file (concat x "/" y);
+                       (concat "~/Library/Calendars/" y)))
+       (directory-files x nil ".*ics$")))
+     caldav-folders)
 
-  ;; tidy up intermediate files and buffers
-  (setq usedCalendarsBuffers (mapcar (function buffer-name) (buffer-list)))
-  (omi-kill-ics-buffer usedCalendarsBuffers)
-  (setq usedCalendarsFiles (directory-files "~/Library/Calendars" 1 ".*ics$"))
-  (omi-delete-ics-file usedCalendarsFiles)
+    ;; check calendar has contents and import
+    (setq import-calendars (directory-files "~/Library/Calendars" 1 ".*ics$"))
+    (mapc
+     (lambda (x)
+       (when (/= (nth 7 (file-attributes x 'string)) 0)
+        (omi-import-ics x)))
+     import-calendars)
 
-  (org-pop-to-buffer-same-window currentBuffer))
+    ;; tidy up intermediate files and buffers
+    (setq usedCalendarsBuffers (mapcar (function buffer-name) (buffer-list)))
+    (omi-kill-ics-buffer usedCalendarsBuffers)
+    (setq usedCalendarsFiles (directory-files "~/Library/Calendars" 1 
".*ics$"))
+    (omi-delete-ics-file usedCalendarsFiles)
+
+    (pop-to-buffer-same-window currentBuffer)))
 
 (defun omi-concat-leopard-ics (list)
   "Leopard stores each iCal.app event in a separate ics file.
 Whilst useful for Spotlight indexing, this is less helpful for
 icalendar-import-file. omi-concat-leopard-ics concatenates these
 individual event files into a single ics file"
-  (mapc
-   (lambda (x)
-     (setq omi-leopard-events (directory-files (concat x "/Events") 1 
".*ics$"))
-     (with-temp-buffer
-       (mapc
-       (lambda (y)
-         (insert-file-contents (expand-file-name y)))
-       omi-leopard-events)
-       (write-region (point-min) (point-max) (concat (expand-file-name x) 
".ics"))))
-   list))
+  (let (omi-leopard-events)
+    (mapc
+     (lambda (x)
+       (setq omi-leopard-events (directory-files (concat x "/Events") 1 
".*ics$"))
+       (with-temp-buffer
+        (mapc
+         (lambda (y)
+           (insert-file-contents (expand-file-name y)))
+         omi-leopard-events)
+        (write-region (point-min) (point-max) (concat (expand-file-name x) 
".ics"))))
+     list)))
 
 (defun omi-import-ics (string)
   "Imports an ics file into the Emacs diary. First tidies up the
 ics file so that it is suitable for import and selects a sensible
 date range so that Emacs calendar view doesn't grind to a halt"
-  (with-temp-buffer
-    (insert-file-contents string)
-    (goto-char (point-min))
-    (while
-       (re-search-forward "^BEGIN:VCALENDAR$" nil t)
-      (setq startEntry (match-beginning 0))
-      (re-search-forward "^END:VCALENDAR$" nil t)
-      (setq endEntry (match-end 0))
-      (save-restriction
-       (narrow-to-region startEntry endEntry)
-       (goto-char (point-min))
-       (re-search-forward 
"\\(^DTSTART;.*:\\)\\([0-9][0-9][0-9][0-9]\\)\\([0-9][0-9]\\)" nil t)
-       (if (or (eq (match-string 2) nil) (eq (match-string 3) nil))
-           (progn
-             (setq yearEntry 1)
-             (setq monthEntry 1))
-         (setq yearEntry (string-to-number (match-string 2)))
-         (setq monthEntry (string-to-number (match-string 3))))
-       (setq year (string-to-number (format-time-string "%Y")))
-       (setq month (string-to-number (format-time-string "%m")))
-        (setq now (list month 1 year))
-        (setq entryDate (list monthEntry 1 yearEntry))
-        ;; Check to see if this is a repeating event
-        (goto-char (point-min))
-        (setq isRepeating (re-search-forward "^RRULE:" nil t))
-       ;; Delete if outside range and not repeating
-        (when (and
-               (not isRepeating)
-               (> (abs (- (calendar-absolute-from-gregorian now)
-                          (calendar-absolute-from-gregorian entryDate)))
-                  (* (/ org-mac-iCal-range 2) 30))
-         (delete-region startEntry endEntry)))
-          (goto-char (point-max))))
-    (while
-       (re-search-forward "^END:VEVENT$" nil t)
-      (delete-blank-lines))
-    (goto-line 1)
-    (insert "BEGIN:VCALENDAR\n\n")
-    (goto-line 2)
-    (while
-       (re-search-forward "^BEGIN:VCALENDAR$" nil t)
-      (replace-match "\n"))
-    (goto-line 2)
-    (while
+  (let ( startEntry endEntry yearEntry monthEntry
+        year month now entryDate isRepeating)
+    (with-temp-buffer
+      (insert-file-contents string)
+      (goto-char (point-min))
+      (while
+         (re-search-forward "^BEGIN:VCALENDAR$" nil t)
+       (setq startEntry (match-beginning 0))
        (re-search-forward "^END:VCALENDAR$" nil t)
-      (replace-match "\n"))
-    (insert "END:VCALENDAR")
-    (goto-line 1)
-    (delete-blank-lines)
-    (while
-       (re-search-forward "^END:VEVENT$" nil t)
-      (delete-blank-lines))
-    (goto-line 1)
-    (while
-       (re-search-forward "^ORG.*" nil t)
-      (replace-match "\n"))
-    (goto-line 1)
-    (write-region (point-min) (point-max) string))
+       (setq endEntry (match-end 0))
+       (save-restriction
+         (narrow-to-region startEntry endEntry)
+         (goto-char (point-min))
+         (re-search-forward 
"\\(^DTSTART;.*:\\)\\([0-9][0-9][0-9][0-9]\\)\\([0-9][0-9]\\)" nil t)
+         (if (or (eq (match-string 2) nil) (eq (match-string 3) nil))
+             (progn
+               (setq yearEntry 1)
+               (setq monthEntry 1))
+           (setq yearEntry (string-to-number (match-string 2)))
+           (setq monthEntry (string-to-number (match-string 3))))
+         (setq year (string-to-number (format-time-string "%Y")))
+         (setq month (string-to-number (format-time-string "%m")))
+          (setq now (list month 1 year))
+          (setq entryDate (list monthEntry 1 yearEntry))
+          ;; Check to see if this is a repeating event
+          (goto-char (point-min))
+          (setq isRepeating (re-search-forward "^RRULE:" nil t))
+         ;; Delete if outside range and not repeating
+          (when (and
+                (not isRepeating)
+                (> (abs (- (calendar-absolute-from-gregorian now)
+                            (calendar-absolute-from-gregorian entryDate)))
+                    (* (/ org-mac-iCal-range 2) 30)))
+            (delete-region startEntry endEntry))
+          (goto-char (point-max))))
+      (while
+         (re-search-forward "^END:VEVENT$" nil t)
+       (delete-blank-lines))
+      (goto-char (point-min))
+      (insert "BEGIN:VCALENDAR\n\n")
+      (goto-char (point-min))
+      (forward-line 1)
+      (while
+         (re-search-forward "^BEGIN:VCALENDAR$" nil t)
+       (replace-match "\n"))
+      (goto-char (point-min))
+      (forward-line 1)
+      (while
+         (re-search-forward "^END:VCALENDAR$" nil t)
+       (replace-match "\n"))
+      (insert "END:VCALENDAR")
+      (goto-char (point-min))
+      (delete-blank-lines)
+      (while
+         (re-search-forward "^END:VEVENT$" nil t)
+       (delete-blank-lines))
+      (goto-char (point-min))
+      (while
+         (re-search-forward "^ORG.*" nil t)
+       (replace-match "\n"))
+      (goto-char (point-min))
+      (write-region (point-min) (point-max) string)))
 
   (icalendar-import-file string diary-file))
 

Reply via email to