From: Gabriel <gabriel376@hotmail.com>
To: 59438@debbugs.gnu.org
Subject: bug#59438: 29.0.50; [PATCH] Make defvar's into defcustom's in tab-line
Date: Mon, 21 Nov 2022 06:25:17 -0300 [thread overview]
Message-ID: <SJ0PR06MB860970919EE7F0B0A8E645708B0A9@SJ0PR06MB8609.namprd06.prod.outlook.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 755 bytes --]
Description:
Please find attached a patch that proposes the following minor changes
to tab-line. I can refactor the patch if we decide that some change are
not worth or if it's better to split it into smaller patches.
1) Turn the following defvar's into defcustom's:
- `tab-line-tabs-buffer-group-function'
- `tab-line-tabs-buffer-group-sort-function'
- `tab-line-tabs-buffer-groups-sort-function'
2) Add conditional around function call of
`tab-line-tabs-buffer-groups-sort-function', in
`tab-line-tabs-buffer-groups'. This guards against nil values, similar
to how `tab-line-tabs-buffer-group-sort-function is handled, making the
behavior more consistent across these two (similar) variables.
Should we announce these "new" defcustom's in NEWS?
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Make-defvar-s-into-defcustom-s-in-tab-line.patch --]
[-- Type: text/x-diff, Size: 4966 bytes --]
From da1053e7211d8bb17769fe43650a9bcdd359aeab Mon Sep 17 00:00:00 2001
From: Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
Date: Mon, 21 Nov 2022 06:17:49 -0300
Subject: [PATCH 1/1] Make defvar's into defcustom's in tab-line
* lisp/tab-line.el (tab-line-tabs-buffer-group-function)
(tab-line-tabs-buffer-group-sort-function)
(tab-line-tabs-buffer-groups-sort-function): Make into defcustom's.
(Make defvar's into defcustom's in tab-line): Handle case when
variable tab-line-tabs-buffer-groups-sort-function is nil.
---
lisp/tab-line.el | 51 ++++++++++++++++++++++++++++--------------------
1 file changed, 30 insertions(+), 21 deletions(-)
diff --git a/lisp/tab-line.el b/lisp/tab-line.el
index 99a785ee3e..9b1c101718 100644
--- a/lisp/tab-line.el
+++ b/lisp/tab-line.el
@@ -341,16 +341,26 @@ tab-line-tabs-mode-buffers
(derived-mode-p mode)))
(funcall tab-line-tabs-buffer-list-function)))))
-(defvar tab-line-tabs-buffer-group-function nil
+(defcustom tab-line-tabs-buffer-group-function nil
"Function to add a buffer to the appropriate group of tabs.
-Takes a buffer as arg and should return a group name as a string.
-If the return value is nil, the buffer should be filtered out.")
+Takes a buffer as argument and should return a group name as a
+string. If the return value is nil, the buffer should be
+ filtered out."
+ :type 'function
+ :group 'tab-line
+ :version "29.1")
-(defvar tab-line-tabs-buffer-group-sort-function nil
- "Function to sort buffers in a group.")
+(defcustom tab-line-tabs-buffer-group-sort-function nil
+ "Function to sort buffers in a group."
+ :type 'function
+ :group 'tab-line
+ :version "29.1")
-(defvar tab-line-tabs-buffer-groups-sort-function #'string<
- "Function to sort group names.")
+(defcustom tab-line-tabs-buffer-groups-sort-function #'string<
+ "Function to sort group names."
+ :type 'function
+ :group 'tab-line
+ :version "29.1")
(defvar tab-line-tabs-buffer-groups mouse-buffer-menu-mode-groups
"How to group various major modes together in the tab line.
@@ -378,13 +388,14 @@ tab-line-tabs-buffer-groups
generate the group name."
(if (window-parameter nil 'tab-line-groups)
(let* ((buffers (funcall tab-line-tabs-buffer-list-function))
- (groups
- (seq-sort tab-line-tabs-buffer-groups-sort-function
- (delq nil (mapcar #'car (seq-group-by
- (lambda (buffer)
- (tab-line-tabs-buffer-group-name
- buffer))
- buffers)))))
+ (groups (delq nil
+ (mapcar #'car
+ (seq-group-by #'tab-line-tabs-buffer-group-name
+ buffers))))
+ (sorted-groups (if (functionp tab-line-tabs-buffer-groups-sort-function)
+ (seq-sort tab-line-tabs-buffer-groups-sort-function
+ groups)
+ groups))
(selected-group (window-parameter nil 'tab-line-group))
(tabs
(mapcar (lambda (group)
@@ -395,9 +406,8 @@ tab-line-tabs-buffer-groups
(set-window-parameter nil 'tab-line-groups nil)
(set-window-parameter nil 'tab-line-group group)
(set-window-parameter nil 'tab-line-hscroll nil)))))
- groups)))
- tabs)
-
+ sorted-groups)))
+ tabs)
(let* ((window-parameter (window-parameter nil 'tab-line-group))
(group-name (tab-line-tabs-buffer-group-name (current-buffer)))
(group (prog1 (or window-parameter group-name "All")
@@ -410,10 +420,9 @@ tab-line-tabs-buffer-groups
(set-window-parameter nil 'tab-line-groups t)
(set-window-parameter nil 'tab-line-group group)
(set-window-parameter nil 'tab-line-hscroll nil)))))
- (buffers
- (seq-filter (lambda (b)
- (equal (tab-line-tabs-buffer-group-name b) group))
- (funcall tab-line-tabs-buffer-list-function)))
+ (buffers (seq-filter (lambda (b)
+ (equal (tab-line-tabs-buffer-group-name b) group))
+ (funcall tab-line-tabs-buffer-list-function)))
(sorted-buffers (if (functionp tab-line-tabs-buffer-group-sort-function)
(seq-sort tab-line-tabs-buffer-group-sort-function
buffers)
--
2.34.1
[-- Attachment #3: Type: text/plain, Size: 13 bytes --]
---
Gabriel
next reply other threads:[~2022-11-21 9:25 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-21 9:25 Gabriel [this message]
2022-11-25 1:15 ` bug#59438: 29.0.50; [PATCH] Make defvar's into defcustom's in tab-line Stefan Kangas
2023-09-07 21:07 ` Stefan Kangas
2023-09-08 10:43 ` Mauro Aranda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=SJ0PR06MB860970919EE7F0B0A8E645708B0A9@SJ0PR06MB8609.namprd06.prod.outlook.com \
--to=gabriel376@hotmail.com \
--cc=59438@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.