[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 18fb250: Customize tabulated-list sort indicators
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] master 18fb250: Customize tabulated-list sort indicators |
Date: |
Fri, 15 Mar 2019 05:10:31 -0400 (EDT) |
branch: master
commit 18fb250d6748bd31672a9d2bdd5dff99ac7f7743
Author: Philippe Vaucher <address@hidden>
Commit: Eli Zaretskii <address@hidden>
Customize tabulated-list sort indicators
This allows the user to customize the sorting indicators displayed
near the current column.
* lisp/emacs-lisp/tabulated-list.el (tabulated-list): New group.
(tabulated-list-gui-sort-indicator-asc)
(tabulated-list-gui-sort-indicator-desc)
(tabulated-list-tty-sort-indicator-asc)
(tabulated-list-tty-sort-indicator-desc): New defcustomd.
(tabulated-list-glyphless-char-display): Remove.
(tabulated-list-make-glyphless-char-display-table): New function.
* doc/lispref/modes.texi (Tabulated List Mode): Add documentation
for new options.
* etc/NEWS: Mention the new options.
---
doc/lispref/modes.texi | 23 ++++++++++++++
etc/NEWS | 13 +++++++-
lisp/emacs-lisp/tabulated-list.el | 65 +++++++++++++++++++++++++++++++++------
3 files changed, 91 insertions(+), 10 deletions(-)
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 3f6bee9..1afbc5a 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -1015,6 +1015,29 @@ list-processes}). The listing command should create or
switch to a
buffer, turn on the derived mode, specify the tabulated data, and
finally call @code{tabulated-list-print} to populate the buffer.
address@hidden tabulated-list-gui-sort-indicator-asc
+This variable specifies the character to be used on GUI frames as an
+indication that the column is sorted in the ascending order.
+
+Whenever you change the sort direction in Tabulated List buffers, this
+indicator toggles between ascending (``asc'') and descending (``desc'').
address@hidden defopt
+
address@hidden tabulated-list-gui-sort-indicator-desc
+Like @code{tabulated-list-gui-sort-indicator-asc}, but used when the
+column is sorted in the descending order.
address@hidden defopt
+
address@hidden tabulated-list-tty-sort-indicator-asc
+Like @code{tabulated-list-gui-sort-indicator-asc}, but used for
+text-mode frames.
address@hidden defopt
+
address@hidden tabulated-list-tty-sort-indicator-desc
+Like @code{tabulated-list-tty-sort-indicator-asc}, but used when the
+column is sorted in the descending order.
address@hidden defopt
+
@defvar tabulated-list-format
This buffer-local variable specifies the format of the Tabulated List
data. Its value should be a vector. Each element of the vector
diff --git a/etc/NEWS b/etc/NEWS
index 31772ab..000d211 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -923,7 +923,7 @@ been instrumented by Edebug.
the XTerm window title. This feature is experimental and is disabled
by default.
-** grep
+** Grep
+++
*** rgrep, lgrep and zrgrep now hide part of the command line
@@ -1194,6 +1194,17 @@ the 128...255 range, as expected.
This allows to create and parent immediately a minibuffer-only child
frame when making a frame.
+** Tabulated List mode
+
++++
+** New user options for tabulated list sort indicators.
+You can now customize which sorting indicator character to display
+near the current column in Tabulated Lists (see variables
+'tabulated-list-gui-sort-indicator-asc',
+'tabulated-list-gui-sort-indicator-desc',
+'tabulated-list-tty-sort-indicator-asc', and
+'tabulated-list-tty-sort-indicator-desc').
+
* New Modes and Packages in Emacs 27.1
diff --git a/lisp/emacs-lisp/tabulated-list.el
b/lisp/emacs-lisp/tabulated-list.el
index 12d0151..b23ce21 100644
--- a/lisp/emacs-lisp/tabulated-list.el
+++ b/lisp/emacs-lisp/tabulated-list.el
@@ -36,6 +36,43 @@
;;; Code:
+(defgroup tabulated-list nil
+ "Tabulated-list customization group."
+ :group 'convenience
+ :group 'display)
+
+(defcustom tabulated-list-gui-sort-indicator-asc ?▼
+ "Indicator for columns sorted in ascending order, for GUI frames.
+See `tabulated-list-tty-sort-indicator-asc' for the indicator used on
+text-mode frames."
+ :group 'tabulated-list
+ :type 'character
+ :version "27.1")
+
+(defcustom tabulated-list-gui-sort-indicator-desc ?▲
+ "Indicator for columns sorted in descending order, for GUI frames.
+See `tabulated-list-tty-sort-indicator-desc' for the indicator used on
+text-mode frames."
+ :group 'tabulated-list
+ :type 'character
+ :version "27.1")
+
+(defcustom tabulated-list-tty-sort-indicator-asc ?v
+ "Indicator for columns sorted in ascending order, for text-mode frames.
+See `tabulated-list-gui-sort-indicator-asc' for the indicator used on GUI
+frames."
+ :group 'tabulated-list
+ :type 'character
+ :version "27.1")
+
+(defcustom tabulated-list-tty-sort-indicator-desc ?^
+ "Indicator for columns sorted in ascending order, for text-mode frames.
+See `tabulated-list-gui-sort-indicator-asc' for the indicator used on GUI
+frames."
+ :group 'tabulated-list
+ :type 'character
+ :version "27.1")
+
;; The reason `tabulated-list-format' and other variables are
;; permanent-local is to make it convenient to switch to a different
;; major mode, switch back, and have the original Tabulated List data
@@ -174,14 +211,20 @@ If ADVANCE is non-nil, move forward by one line
afterwards."
map)
"Local keymap for `tabulated-list-mode' sort buttons.")
-(defvar tabulated-list-glyphless-char-display
+(defun tabulated-list-make-glyphless-char-display-table ()
+ "Make the `glyphless-char-display' table used for text-mode frames.
+This table is used for displaying the sorting indicators, see
+variables `tabulated-list-tty-sort-indicator-asc' and
+`tabulated-list-tty-sort-indicator-desc' for more information."
(let ((table (make-char-table 'glyphless-char-display nil)))
(set-char-table-parent table glyphless-char-display)
- ;; Some text terminals can't display the Unicode arrows; be safe.
- (aset table 9650 (cons nil "^"))
- (aset table 9660 (cons nil "v"))
- table)
- "The `glyphless-char-display' table in Tabulated List buffers.")
+ (aset table
+ tabulated-list-gui-sort-indicator-desc
+ (cons nil (char-to-string tabulated-list-tty-sort-indicator-desc)))
+ (aset table
+ tabulated-list-gui-sort-indicator-asc
+ (cons nil (char-to-string tabulated-list-tty-sort-indicator-asc)))
+ table))
(defvar tabulated-list--header-string nil
"Holds the header if `tabulated-list-use-header-line' is nil.
@@ -231,8 +274,11 @@ Populated by `tabulated-list-init-header'.")
(concat label
(cond
((> (+ 2 (length label)) width) "")
- ((cdr tabulated-list-sort-key) " ▲")
- (t " ▼")))
+ ((cdr tabulated-list-sort-key)
+ (format " %c"
+ tabulated-list-gui-sort-indicator-desc))
+ (t (format " %c"
+ tabulated-list-gui-sort-indicator-asc))))
'face 'bold
'tabulated-list-column-name label
button-props))
@@ -655,7 +701,8 @@ as the ewoc pretty-printer."
(setq-local truncate-lines t)
(setq-local buffer-undo-list t)
(setq-local revert-buffer-function #'tabulated-list-revert)
- (setq-local glyphless-char-display tabulated-list-glyphless-char-display)
+ (setq-local glyphless-char-display
+ (tabulated-list-make-glyphless-char-display-table))
;; Avoid messing up the entries' display just because the first
;; column of the first entry happens to begin with a R2L letter.
(setq bidi-paragraph-direction 'left-to-right)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 18fb250: Customize tabulated-list sort indicators,
Eli Zaretskii <=