Function: gnus-handle-ephemeral-exit

gnus-handle-ephemeral-exit is a byte-compiled function defined in gnus-sum.el.gz.

Signature

(gnus-handle-ephemeral-exit QUIT-CONFIG)

Documentation

Handle movement when leaving an ephemeral group.

The state which existed when entering the ephemeral is reset.

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/gnus-sum.el.gz
(defun gnus-handle-ephemeral-exit (quit-config)
  "Handle movement when leaving an ephemeral group.
The state which existed when entering the ephemeral is reset."
  (if (not (buffer-live-p (car quit-config)))
      (when (gnus-buffer-live-p gnus-group-buffer)
	(gnus-configure-windows 'group 'force))
    (set-buffer (car quit-config))
    (unless (eq (cdr quit-config) 'group)
      (setq gnus-current-select-method
	    (gnus-find-method-for-group gnus-newsgroup-name)))
    (cond ((derived-mode-p 'gnus-summary-mode)
	   (gnus-set-global-variables))
	  ((derived-mode-p 'gnus-article-mode)
	   (save-current-buffer
	     ;; The `gnus-summary-buffer' variable may point
	     ;; to the old summary buffer when using a single
	     ;; article buffer.
	     (unless (gnus-buffer-live-p gnus-summary-buffer)
	       (set-buffer gnus-group-buffer))
	     (set-buffer gnus-summary-buffer)
	     (gnus-set-global-variables))))
    (if (or (eq (cdr quit-config) 'article)
	    (eq (cdr quit-config) 'pick))
	(if (and (boundp 'gnus-pick-mode) (symbol-value 'gnus-pick-mode))
	    (gnus-configure-windows 'pick 'force)
	  (gnus-configure-windows (cdr quit-config) 'force))
      (gnus-configure-windows (cdr quit-config) 'force))
    (when (derived-mode-p 'gnus-summary-mode)
      (if (memq gnus-auto-select-on-ephemeral-exit '(next-noselect
						     next-unread-noselect))
	  (when (zerop (cond ((eq gnus-auto-select-on-ephemeral-exit
				  'next-noselect)
			      (gnus-summary-next-subject 1 nil t))
			     ((eq gnus-auto-select-on-ephemeral-exit
				  'next-unread-noselect)
			      (gnus-summary-next-subject 1 t t))))
	    ;; Hide the article buffer which displays the article different
	    ;; from the one that the cursor points to in the summary buffer.
	    (gnus-configure-windows 'summary 'force))
	(cond ((eq gnus-auto-select-on-ephemeral-exit 'next)
	       (gnus-summary-next-subject 1))
	      ((eq gnus-auto-select-on-ephemeral-exit 'next-unread)
	       (gnus-summary-next-subject 1 t))))
      (gnus-summary-recenter)
      (gnus-summary-position-point))))