]> git.eshelyaron.com Git - emacs.git/commitdiff
In vc actions use quit-windows-on instead of delete-windows-on.
authorMartin Rudalics <rudalics@gmx.at>
Mon, 10 Oct 2011 17:52:03 +0000 (19:52 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Mon, 10 Oct 2011 17:52:03 +0000 (19:52 +0200)
* window.el (quit-windows-on): New function.
* vc/vc.el (vc-revert, vc-rollback):
* vc/vc-dispatcher.el (vc-finish-logentry): Call quit-windows-on
instead of deleting windows.  (Bug#4557) (Bug#5310) (Bug#5556)
(Bug#6183) (Bug#7074)((Bug#7447)

lisp/ChangeLog
lisp/vc/vc-dispatcher.el
lisp/vc/vc.el
lisp/window.el

index 103d7b25518ebaa3ebf878bf5949deec8a9090f9..7b9adfd12798ced3ea3f5c54c065ea70bb568b9a 100644 (file)
@@ -3,6 +3,12 @@
        * window.el (special-display-buffer-names)
        (special-display-regexps): Remove some remnants of earlier
        changes from doc-strings.
+       (quit-windows-on): New function.
+
+       * vc/vc.el (vc-revert, vc-rollback):
+       * vc/vc-dispatcher.el (vc-finish-logentry): Call quit-windows-on
+       instead of deleting windows.  (Bug#4557) (Bug#5310) (Bug#5556)
+       (Bug#6183) (Bug#7074)((Bug#7447)
 
 2011-10-09  Martin Rudalics  <rudalics@gmx.at>
 
index 388d4c94a08e34c8cb2ccf37fdda2fa63db79a36..84c7f4a510b419cc2d95e53c4da04c357c9de5f8 100644 (file)
@@ -666,18 +666,15 @@ the buffer contents as a comment."
       (funcall log-operation
               log-fileset
               log-entry))
-    ;; Remove checkin window (after the checkin so that if that fails
-    ;; we don't zap the log buffer and the typing therein).
-    ;; -- IMO this should be replaced with quit-window
-    (cond ((and logbuf vc-delete-logbuf-window)
-          (delete-windows-on logbuf (selected-frame))
-          ;; Kill buffer and delete any other dedicated windows/frames.
-          (kill-buffer logbuf))
-         (logbuf
-           (with-selected-window (or (get-buffer-window logbuf 0)
-                                     (selected-window))
-             (with-current-buffer logbuf
-               (bury-buffer)))))
+
+    ;; Quit windows on logbuf.
+    (cond
+     ((not logbuf))
+     (vc-delete-logbuf-window
+      (quit-windows-on logbuf t (selected-frame)))
+     (t
+      (quit-windows-on logbuf nil 0)))
+
     ;; Now make sure we see the expanded headers
     (when log-fileset
       (mapc
index 6704a43e59ba06b005dea287ed55e15cb9bf6da8..62536fd94be228057f124525763f333d7637dc64 100644 (file)
@@ -2302,8 +2302,7 @@ to the working revision (except for keyword expansion)."
                                       (if (= nfiles 1) "" "s"))))))
            (error "Revert canceled")))
       (when diff-buffer
-       (delete-windows-on diff-buffer)
-       (kill-buffer diff-buffer)))
+       (quit-windows-on diff-buffer t)))
     (dolist (file files)
       (message "Reverting %s..." (vc-delistify files))
       (vc-revert-file file)
@@ -2349,8 +2348,7 @@ depending on the underlying version-control system."
     ;; Display changes
     (unless (yes-or-no-p "Discard these revisions? ")
       (error "Rollback canceled"))
-    (delete-windows-on "*vc-diff*")
-    (kill-buffer"*vc-diff*")
+    (quit-windows-on "*vc-diff*" t)
     ;; Do the actual reversions
     (message "Rolling back %s..." (vc-delistify files))
     (with-vc-properties
index 7241e148daec1e4380c58f6befea11eeb7659494..4d8b3c92b95724331c52b037fa2f0746d1656d61 100644 (file)
@@ -2984,6 +2984,27 @@ one.  If non-nil, reset `quit-restore' parameter to nil."
     (if kill
        (kill-buffer buffer)
       (bury-buffer-internal buffer))))
+
+(defun quit-windows-on (&optional buffer-or-name kill frame)
+  "Quit all windows showing BUFFER-OR-NAME.
+BUFFER-OR-NAME may be a buffer or the name of an existing buffer
+and defaults to the current buffer.  Optional argument KILL
+non-nil means to kill BUFFER-OR-NAME.  KILL nil means to bury
+BUFFER-OR-NAME.  Optional argument FRAME is handled as by
+`delete-windows-on'.
+
+This function calls `quit-window' on all candidate windows
+showing BUFFER-OR-NAME."
+  (interactive "BQuit windows on (buffer):\nP")
+  (let ((buffer (window-normalize-buffer buffer-or-name))
+       ;; Handle the "inverted" meaning of the FRAME argument wrt other
+       ;; `window-list-1' based function.
+       (all-frames (cond ((not frame) t) ((eq frame t) nil) (t frame))))
+    (dolist (window (window-list-1 nil nil all-frames))
+      (if (eq (window-buffer window) buffer)
+         (quit-window kill window)
+       ;; If a window doesn't show BUFFER, unrecord BUFFER in it.
+       (unrecord-window-buffer window buffer)))))
 \f
 ;;; Splitting windows.
 (defsubst window-split-min-size (&optional horizontal)