emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp ChangeLog minibuffer.el window.el


From: Stefan Monnier
Subject: [Emacs-diffs] emacs/lisp ChangeLog minibuffer.el window.el
Date: Thu, 19 Nov 2009 22:05:43 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Stefan Monnier <monnier>        09/11/19 22:05:43

Modified files:
        lisp           : ChangeLog minibuffer.el window.el 

Log message:
        * window.el (display-buffer-mark-dedicated): New var.
        (display-buffer): Obey it.
        * minibuffer.el (minibuffer-completion-help): Use it.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.16676&r2=1.16677
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/minibuffer.el?cvsroot=emacs&r1=1.98&r2=1.99
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/window.el?cvsroot=emacs&r1=1.185&r2=1.186

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.16676
retrieving revision 1.16677
diff -u -b -r1.16676 -r1.16677
--- ChangeLog   19 Nov 2009 22:03:36 -0000      1.16676
+++ ChangeLog   19 Nov 2009 22:05:40 -0000      1.16677
@@ -1,5 +1,9 @@
 2009-11-19  Stefan Monnier  <address@hidden>
 
+       * window.el (display-buffer-mark-dedicated): New var.
+       (display-buffer): Obey it.
+       * minibuffer.el (minibuffer-completion-help): Use it.
+
        * progmodes/sym-comp.el (symbol-complete): Use completion-in-region.
 
        * filecache.el (file-cache-add-file): Use push and cons.

Index: minibuffer.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/minibuffer.el,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -b -r1.98 -r1.99
--- minibuffer.el       19 Nov 2009 17:38:37 -0000      1.98
+++ minibuffer.el       19 Nov 2009 22:05:42 -0000      1.99
@@ -1004,9 +1004,14 @@
     (if (and completions
              (or (consp (cdr completions))
                  (not (equal (car completions) string))))
-        (with-output-to-temp-buffer "*Completions*"
           (let* ((last (last completions))
-                 (base-size (cdr last)))
+               (base-size (cdr last))
+               ;; If the *Completions* buffer is shown in a new
+               ;; window, mark it as softly-dedicated, so bury-buffer in
+               ;; minibuffer-hide-completions will know whether to
+               ;; delete the window or not.
+               (display-buffer-mark-dedicated 'soft))
+          (with-output-to-temp-buffer "*Completions*"
             ;; Remove the base-size tail because `sort' requires a properly
             ;; nil-terminated list.
             (when last (setcdr last nil))

Index: window.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/window.el,v
retrieving revision 1.185
retrieving revision 1.186
diff -u -b -r1.185 -r1.186
--- window.el   13 Nov 2009 22:19:56 -0000      1.185
+++ window.el   19 Nov 2009 22:05:43 -0000      1.186
@@ -1042,6 +1042,11 @@
     (set-window-buffer window buffer)
     (window--display-buffer-1 window)))
 
+(defvar display-buffer-mark-dedicated nil
+  "If non-nil, `display-buffer' marks the windows it creates as dedicated.
+The actual non-nil value of this variable will be copied to the
+`window-dedicated-p' flag.")
+
 (defun display-buffer (buffer-or-name &optional not-this-window frame)
   "Make buffer BUFFER-OR-NAME appear in some window but don't select it.
 BUFFER-OR-NAME must be a buffer or the name of an existing
@@ -1133,8 +1138,10 @@
                        buffer (if (listp pars) pars))))))
      ((or use-pop-up-frames (not frame-to-use))
       ;; We want or need a new frame.
-      (window--display-buffer-2
-       buffer (frame-selected-window (funcall pop-up-frame-function))))
+      (let ((win (frame-selected-window (funcall pop-up-frame-function))))
+        (when display-buffer-mark-dedicated
+          (set-window-dedicated-p win display-buffer-mark-dedicated))
+        (window--display-buffer-2 buffer win)))
      ((and pop-up-windows
           ;; Make a new window.
           (or (not (frame-parameter frame-to-use 'unsplittable))
@@ -1149,8 +1156,10 @@
                 (or (window--try-to-split-window
                      (get-largest-window frame-to-use t))
                     (window--try-to-split-window
-                     (get-lru-window frame-to-use t))))
-          (window--display-buffer-2 buffer window-to-use)))
+                     (get-lru-window frame-to-use t)))))
+      (when display-buffer-mark-dedicated
+        (set-window-dedicated-p window-to-use display-buffer-mark-dedicated))
+      (window--display-buffer-2 buffer window-to-use))
      ((let ((window-to-undedicate
             ;; When NOT-THIS-WINDOW is non-nil, temporarily dedicate
             ;; the selected window to its buffer, to avoid that some of




reply via email to

[Prev in Thread] Current Thread [Next in Thread]