changeset 76645:fe0cd0081a51

Ulf Jasper <ulf.jasper at web.de>: (icalendar-version): Increase to 0.15. (icalendar--get-unfolded-buffer): Define actual arguments rather than just using &rest. Check replace-in-string is fbound. (icalendar-import-buffer): Doc fix. (icalendar--convert-ical-to-diary): Set diary-file. Check diary-file before inserting final newline. (icalendar--add-diary-entry): Return diary-file.
author Glenn Morris <rgm@gnu.org>
date Wed, 21 Mar 2007 07:12:48 +0000
parents f33340774471
children a1d7781a9bb0
files lisp/calendar/icalendar.el
diffstat 1 files changed, 29 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/calendar/icalendar.el	Wed Mar 21 06:38:01 2007 +0000
+++ b/lisp/calendar/icalendar.el	Wed Mar 21 07:12:48 2007 +0000
@@ -101,7 +101,7 @@
 
 ;;; Code:
 
-(defconst icalendar-version "0.14"
+(defconst icalendar-version "0.15"
   "Version number of icalendar.el.")
 
 ;; ======================================================================
@@ -226,16 +226,17 @@
         (replace-match "" nil nil)))
     unfolded-buffer))
 
-(defsubst icalendar--rris (&rest args)
+(defsubst icalendar--rris (regexp rep string &optional fixedcase literal)
   "Replace regular expression in string.
-Pass ARGS to `replace-regexp-in-string' (Emacs) or to
-`replace-in-string' (XEmacs)."
-  (if (fboundp 'replace-regexp-in-string)
-      ;; Emacs:
-      (apply 'replace-regexp-in-string args)
-  ;; XEmacs:
-    (save-match-data ;; apparently XEmacs needs save-match-data
-      (apply 'replace-in-string args))))
+Pass arguments REGEXP REP STRING FIXEDCASE LITERAL to
+`replace-regexp-in-string' (Emacs) or to `replace-in-string' (XEmacs)."
+  (cond ((fboundp 'replace-regexp-in-string)
+         ;; Emacs:
+         (replace-regexp-in-string regexp rep string fixedcase literal))
+        ((fboundp 'replace-in-string)
+         ;; XEmacs:
+         (save-match-data ;; apparently XEmacs needs save-match-data
+           (replace-in-string string regexp rep literal)))))
 
 (defun icalendar--read-element (invalue inparams)
   "Recursively read the next iCalendar element in the current buffer.
@@ -1472,8 +1473,8 @@
 DIARY-FILE.
 
 It will ask for each appointment whether to add it to the diary
-when DO-NOT-ASK is non-nil.  When called interactively,
-DO-NOT-ASK is set to t, so that you are asked fore each event.
+unless DO-NOT-ASK is non-nil.  When called interactively,
+DO-NOT-ASK is nil, so that you are asked for each event.
 
 NON-MARKING determines whether diary events are created as
 non-marking.
@@ -1669,8 +1670,11 @@
                         (concat diary-string " "
                                 (icalendar--format-ical-event e)))
                   (if do-not-ask (setq summary nil))
-                  (icalendar--add-diary-entry diary-string diary-file
-                                              non-marking summary))
+                  ;; add entry to diary and store actual name of diary
+                  ;; file (in case it was nil)
+                  (setq diary-file
+                        (icalendar--add-diary-entry diary-string diary-file
+                                                    non-marking summary)))
               ;; event was not ok
               (setq found-error t)
               (setq error-string
@@ -1684,13 +1688,15 @@
          (setq error-string (format "%s\n%s\nCannot handle this event: %s"
                                     error-val error-string e))
          (message "%s" error-string))))
+
     ;; insert final newline
-    (let ((b (find-buffer-visiting diary-file)))
-      (when b
-        (save-current-buffer
-          (set-buffer b)
-          (goto-char (point-max))
-          (insert "\n"))))
+    (if diary-file
+        (let ((b (find-buffer-visiting diary-file)))
+          (when b
+            (save-current-buffer
+              (set-buffer b)
+              (goto-char (point-max))
+              (insert "\n")))))
     (if found-error
         (save-current-buffer
           (set-buffer (get-buffer-create "*icalendar-errors*"))
@@ -1943,7 +1949,9 @@
         (setq diary-file
               (read-file-name "Add appointment to this diary file: ")))
       ;; Note: make-diary-entry will add a trailing blank char.... :(
-      (make-diary-entry string non-marking diary-file))))
+      (make-diary-entry string non-marking diary-file)))
+  ;; return diary-file in case it has been changed interactively
+  diary-file)
 
 (provide 'icalendar)