mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-03 08:30:09 +00:00
* lisp/calendar/calendar.el (calendar-exit): reinstate the 2012-03-28 patch.
Fixes: debbugs:11140
This commit is contained in:
parent
d32926ffaa
commit
48c455c701
@ -1,3 +1,8 @@
|
||||
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."
|
||||
|
Loading…
Reference in New Issue
Block a user