diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index 1be2a05eee..848ac224fb 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -2062,27 +2062,34 @@ diary-remind ;;; Diary insertion functions. ;;;###cal-autoload -(defun diary-make-entry (string &optional nonmarking file) +(defun diary-make-entry (string &optional nonmarking file omit-trailing-space + do-not-show) "Insert a diary entry STRING which may be NONMARKING in FILE. If omitted, NONMARKING defaults to nil and FILE defaults to -`diary-file'." - (let ((pop-up-frames (or pop-up-frames (window-dedicated-p)))) - (find-file-other-window (or file diary-file))) - (when (eq major-mode (default-value 'major-mode)) (diary-mode)) - (widen) - (diary-unhide-everything) - (goto-char (point-max)) - (when (let ((case-fold-search t)) - (search-backward "Local Variables:" - (max (- (point-max) 3000) (point-min)) - t)) - (beginning-of-line) - (insert "\n") - (forward-line -1)) - (insert - (if (bolp) "" "\n") - (if nonmarking diary-nonmarking-symbol "") - string " ")) +`diary-file'. If OMIT-TRAILING-SPACE is non-nil, then do not add +a trailing space to the entry. If DO-NOT-SHOW is non-nil, do not +show the diary buffer." + (with-current-buffer + (let ((diary-file-name (or file diary-file))) + (if do-not-show + (find-file-noselect diary-file-name) + (let ((pop-up-frames (or pop-up-frames (window-dedicated-p)))) + (find-file-other-window diary-file-name)))) + (when (eq major-mode (default-value 'major-mode)) (diary-mode)) + (widen) + (diary-unhide-everything) + (goto-char (point-max)) + (when (let ((case-fold-search t)) + (search-backward "Local Variables:" + (max (- (point-max) 3000) (point-min)) + t)) + (beginning-of-line) + (insert "\n") + (forward-line -1)) + (insert + (if (bolp) "" "\n") + (if nonmarking diary-nonmarking-symbol "") + string (if omit-trailing-space "" " ")))) ;;;###cal-autoload (defun diary-insert-entry (arg &optional event) diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el index a8fd765129..17316ddbbd 100644 --- a/lisp/calendar/icalendar.el +++ b/lisp/calendar/icalendar.el @@ -2502,20 +2502,10 @@ icalendar--add-diary-entry (when summary (setq non-marking (y-or-n-p (format "Make appointment non-marking? ")))) - (save-window-excursion - (unless diary-filename - (setq diary-filename - (read-file-name "Add appointment to this diary file: "))) - ;; Note: diary-make-entry will add a trailing blank char.... :( - (funcall (if (fboundp 'diary-make-entry) - 'diary-make-entry - 'make-diary-entry) - string non-marking diary-filename))) - ;; Würgaround to remove the trailing blank char - (with-current-buffer (find-file diary-filename) - (goto-char (point-max)) - (if (= (char-before) ? ) - (delete-char -1))) + (unless diary-filename + (setq diary-filename + (read-file-name "Add appointment to this diary file: "))) + (diary-make-entry string non-marking diary-filename t t)) ;; return diary-filename in case it has been changed interactively diary-filename)