diff --git a/lisp/gnus/gnus-win.el b/lisp/gnus/gnus-win.el index b39c9faab6..bcf90f1d55 100644 --- a/lisp/gnus/gnus-win.el +++ b/lisp/gnus/gnus-win.el @@ -367,11 +367,14 @@ gnus-configure-frame (setq result (or (gnus-configure-frame (car comp-subs) window) result)) - (select-window new-win) - (setq window new-win) + (if (not (window-live-p new-win)) + ;; pop-to-buffer might have deleted the original window + (setq window (selected-window)) + (select-window new-win) + (setq window new-win)) (setq comp-subs (cdr comp-subs)))) ;; Return the proper window, if any. - (when result + (when (window-live-p result) (select-window result))))))) (defvar gnus-frame-split-p nil) diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index e43aa92c99..d563d52d58 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -813,6 +813,7 @@ Top * Symbolic Prefixes:: How to supply some Gnus functions with options. * Formatting Variables:: You can specify what buffers should look like. * Window Layout:: Configuring the Gnus buffer windows. +* Tabbed Interface:: Configuring the Gnus tabs. * Faces and Fonts:: How to change how faces look. * Mode Lines:: Displaying information in the mode lines. * Highlighting and Menus:: Making buffers look all nice and cozy. @@ -22189,6 +22190,7 @@ Various * Symbolic Prefixes:: How to supply some Gnus functions with options. * Formatting Variables:: You can specify what buffers should look like. * Window Layout:: Configuring the Gnus buffer windows. +* Tabbed Interface:: Configuring the Gnus tabs. * Faces and Fonts:: How to change how faces look. * Mode Lines:: Displaying information in the mode lines. * Highlighting and Menus:: Making buffers look all nice and cozy. @@ -22985,6 +22987,36 @@ Window Layout @end itemize +@node Tabbed Interface +@section Tabbed Interface +@cindex tabbed interface +@cindex tabs + +Gnus supports display of different buffers in dedicated tabs +that you can select using the tab bar. + +To open the group buffer in a new tab named @samp{Gnus}, use: + +@lisp +(push '("\\`\\*Group\\*\\'" . + (display-buffer-in-tab + (name . "Gnus"))) + display-buffer-alist) +@end lisp + +To read every summary in a separate explicitly named tab, use: + +@lisp +(push '("\\`\\*Summary .*\\*\\'" . + (display-buffer-in-tab + (name . (lambda (buffer _alist) + (setq buffer (buffer-name buffer)) + (when (string-match "\\`\\*Summary \\(.*\\)\\*\\'" buffer) + (format "Group %s" (match-string 1 buffer))))))) + display-buffer-alist) +@end lisp + + @node Faces and Fonts @section Faces and Fonts @cindex faces