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.
This commit is contained in:
parent
c72c2b04c2
commit
18fb250d67
3 changed files with 91 additions and 10 deletions
|
@ -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.
|
||||
|
||||
@defopt 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'').
|
||||
@end defopt
|
||||
|
||||
@defopt 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.
|
||||
@end defopt
|
||||
|
||||
@defopt tabulated-list-tty-sort-indicator-asc
|
||||
Like @code{tabulated-list-gui-sort-indicator-asc}, but used for
|
||||
text-mode frames.
|
||||
@end defopt
|
||||
|
||||
@defopt 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.
|
||||
@end 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
|
||||
|
|
13
etc/NEWS
13
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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue