Function: minibuffer--nonselected-check

minibuffer--nonselected-check is a byte-compiled function defined in minibuffer.el.gz.

Signature

(minibuffer--nonselected-check FRAME)

Documentation

Check if active minibuffer window is no longer selected.

Use overlay to highlight its contents when another window is selected. But don't highlight when the *Completions* window is selected or the buffer-local value of completion-reference-buffer in the selected window's buffer equals the buffer of the active minibuffer window.

Source Code

;; Defined in /usr/src/emacs/lisp/minibuffer.el.gz
(defun minibuffer--nonselected-check (_frame)
  "Check if active minibuffer window is no longer selected.
Use overlay to highlight its contents when another window is selected.
But don't highlight when the *Completions* window is selected or the
buffer-local value of `completion-reference-buffer' in the selected
window's buffer equals the buffer of the active minibuffer window."
  (let* ((active-minibuffer-window (active-minibuffer-window))
	 (active-minibuffer (when active-minibuffer-window
			      (window-buffer active-minibuffer-window))))
    (cond
     ((or (not active-minibuffer-window)
	  (eq active-minibuffer-window (selected-window))
	  (equal (buffer-name (window-buffer)) "*Completions*")
	  (eq (buffer-local-value
	       'completion-reference-buffer (window-buffer))
	      active-minibuffer))
      ;; When there's no active minibuffer window or either the
      ;; minibuffer or the *Completions* window is selected or the
      ;; buffer-local value of 'completion-reference-buffer' in the
      ;; selected window's buffer equals the buffer of the active
      ;; minibuffer window, remove the overlay if it exists.
      (when minibuffer--nonselected-overlay
	(delete-overlay minibuffer--nonselected-overlay)))
     ((not minibuffer--nonselected-overlay)
      ;; When there's an active minibuffer window and neither it nor the
      ;; *Completions* window is selected and there is no overlay, make
      ;; the overlay in the active minibuffer.
      (with-current-buffer active-minibuffer
        (setq minibuffer--nonselected-overlay
	      (make-overlay (point-min) (point-max)))
        (overlay-put
	 minibuffer--nonselected-overlay 'face 'minibuffer-nonselected)
        (overlay-put
	 minibuffer--nonselected-overlay 'evaporate t)))
     ((not (eq (overlay-buffer minibuffer--nonselected-overlay)
	       active-minibuffer))
      ;; When there is an overlay but it is not in the active minibuffer
      ;; move it to that buffer.
      (with-current-buffer active-minibuffer
	(move-overlay minibuffer--nonselected-overlay
		      (point-min) (point-max) active-minibuffer))))))