# HG changeset patch # User Glenn Morris # Date 1174461168 0 # Node ID fe0cd0081a5124f0af784ee0e39839aa41ad897b # Parent f3334077447175e4c7838a26353c3b4811db7ab5 Ulf Jasper : (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. diff -r f33340774471 -r fe0cd0081a51 lisp/calendar/icalendar.el --- 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)