Commit 48c455c7 authored by Sam Steingold's avatar Sam Steingold
Browse files

* lisp/calendar/calendar.el (calendar-exit): reinstate the 2012-03-28 patch.

Fixes: debbugs:11140
parent d32926ff
2012-06-05 Sam Steingold <sds@gnu.org>
* calendar/calendar.el (calendar-exit): reinstate the 2012-03-28
patch (Bug#11140).
2012-06-05 Stefan Monnier <monnier@iro.umontreal.ca>
 
* emacs-list/cust-print.el: Move to obsolete.
......
......@@ -1793,19 +1793,6 @@ the STRINGS are just concatenated and the result truncated."
?\s (- calendar-right-margin (1- start))))))
(force-mode-line-update))))
(defun calendar-window-list ()
"List of all calendar-related windows."
(let ((calendar-buffers (calendar-buffer-list))
list)
;; Using 0 rather than t for last argument - see bug#2199.
;; This is only used with calendar-hide-window, which ignores
;; iconified frames anyway, so could use 'visible rather than 0.
(walk-windows (lambda (w)
(if (memq (window-buffer w) calendar-buffers)
(push w list)))
nil 0)
list))
(defun calendar-buffer-list ()
"List of all calendar-related buffers (as buffers, not strings)."
(let (buffs)
......@@ -1817,41 +1804,29 @@ the STRINGS are just concatenated and the result truncated."
(push b buffs)))
buffs))
(defun calendar-exit ()
(defun calendar-exit (&optional kill)
"Get out of the calendar window and hide it and related buffers."
(interactive)
(let ((diary-buffer (get-file-buffer diary-file)))
(if (or (not diary-buffer)
(not (buffer-modified-p diary-buffer))
(yes-or-no-p
"Diary modified; do you really want to exit the calendar? "))
;; Need to do this multiple times because one time can replace some
;; calendar-related buffers with other calendar-related buffers.
(mapc (lambda (x)
(mapc 'calendar-hide-window (calendar-window-list)))
(calendar-window-list)))))
(interactive "P")
(let ((diary-buffer (get-file-buffer diary-file))
(calendar-buffers (calendar-buffer-list)))
(when (or (not diary-buffer)
(not (buffer-modified-p diary-buffer))
(yes-or-no-p
"Diary modified; do you really want to exit the calendar? "))
(if (and calendar-setup (display-multi-frame-p))
;; FIXME: replace this cruft with the `quit-restore' window property
(dolist (w (window-list-1 nil nil t))
(if (and (memq (window-buffer w) calendar-buffers)
(window-dedicated-p w))
(if calendar-remove-frame-by-deleting
(delete-frame (window-frame w))
(iconify-frame (window-frame w)))
(quit-window kill w)))
(dolist (b calendar-buffers)
(quit-windows-on b kill))))))
(define-obsolete-function-alias 'exit-calendar 'calendar-exit "23.1")
(defun calendar-hide-window (window)
"Hide WINDOW if it is calendar-related."
(let ((buffer (if (window-live-p window) (window-buffer window))))
(if (memq buffer (calendar-buffer-list))
(cond
((and (display-multi-frame-p)
(eq 'icon (cdr (assoc 'visibility
(frame-parameters
(window-frame window))))))
nil)
((and (display-multi-frame-p) (window-dedicated-p window))
(if calendar-remove-frame-by-deleting
(delete-frame (window-frame window))
(iconify-frame (window-frame window))))
((not (and (select-window window) (one-window-p window)))
(delete-window window))
(t (set-buffer buffer)
(bury-buffer))))))
(defun calendar-current-date (&optional offset)
"Return the current date in a list (month day year).
Optional integer OFFSET is a number of days from the current date."
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment