Subject: bug#59721: 30.0.50; tab bar groups are not ordered properly

From: Mickey Petersen <[email-masked]>
Date: Wed, 30 Nov 2022 10:42:30 +0000

1. Enable tab-bar-mode and then alter tab-bar-format to show groups. Something like this:

  (setq tab-bar-format '(tab-bar-format-history tab-bar-format-tabs-groups tab-bar-separator tab-bar-format-add-tab))

2. Create three tabs: A, B, C. Now switch to A and use M-x tab-bar-change-tab-group and name it "foo". Now switch to C and name it "foo" also.

3. The tab bar groups are _not_ merged; with a large array of tab bars, this causes endless confusion as there are man duplicae tab groups. You would expect a tab group to coalesce like tab group members into a singular tab group --- that is after all their purpose.

This fixes it as I sort the entries before changing the frame parameter. 

(defun tab-bar-tabs-set (tabs &optional frame)
  "Set a list of TABS on the FRAME."
  (set-frame-parameter frame 'tabs (seq-sort-by (lambda (el) (alist-get 'group el nil))
                                                #'string-lessp
                                                tabs)))

In GNU Emacs 30.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version
 3.24.20, cairo version 1.16.0) of 2022-11-29 built on mickey-work
Repository revision: 7939184f8e0370e7a3397d492812c6d202c2a193
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12013000
System Description: Ubuntu 20.04.3 LTS

Configured using:
 'configure --with-native-compilation --with-json --with-mailutils
 --without-compress-install --with-imagemagick CC=gcc-10'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2
M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP
SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER X11 XDBE
XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LC_MONETARY: en_GB.UTF-8
  value of $LC_NUMERIC: en_GB.UTF-8
  value of $LC_TIME: en_GB.UTF-8
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: EL

Memory information:
((conses 16 1483854 167854)
 (symbols 48 84157 42)
 (strings 32 413180 15457)
 (string-bytes 1 12110186)
 (vectors 16 149413)
 (vector-slots 8 3697202 167267)
 (floats 8 844 449)
 (intervals 56 19443 3620)
 (buffers 992 60))