GNU bug report logs -
#56345
29.0.50; [PATCH] Add column hiding to tabulated-list
Previous Next
To reply to this bug, email your comments to 56345 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Fri, 01 Jul 2022 22:44:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Thuna <thuna.cing <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Fri, 01 Jul 2022 22:44:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[0001-Add-column-hiding-to-tabulated-list-mode.patch (text/x-patch, attachment)]
[0002-Fix-tabulated-list-format-sharing-list-structures.patch (text/x-patch, attachment)]
[Message part 3 (text/plain, inline)]
The attached patches introduce column hiding to tabulated-list-mode,
which works by adding the keyword `:hidden' to `tabulated-list-format'.
Patch 0001 is the actual patch itself while 0002 is a bug fix. 0001
compiled fine for me but I did not test 0002, though it should be
perfectly safe.
I went through tabulated-list.el and fixed everything I could find that
would be affected by the visibility of columns. I don't believe I
missed anything but it is possible.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Sat, 02 Jul 2022 06:07:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 56345 <at> debbugs.gnu.org (full text, mbox):
> From: Thuna <thuna.cing <at> gmail.com>
> Date: Sat, 02 Jul 2022 01:43:26 +0300
>
> >From b49d5876afa3d969ce82df0d723a8a8b766009a0 Mon Sep 17 00:00:00 2001
> From: Thuna <thuna.cing <at> gmail.com>
> Date: Fri, 1 Jul 2022 18:19:52 +0300
> Subject: [PATCH 1/2] Add column hiding to tabulated-list-mode
>
> Add the keyword `:hidden' to `tabulated-list-format' for controlling
> the visibility of a specific column.
>
> Introduce the commands `tabulated-list-hide-current-column' and
> `tabulated-list-make-column-visible' for interactively changing the
> `:hidden' property of the column. The commands are bound to "." and
> "+" respectively.
>
> Change calculations involving other columns to account for the
> `:hidden' property.
>
> Make the current column calculation into its own function named
> `tabulated-list-get-column'. Make `tabulated-list-widen-current-column'
> use that instead. Use the text property `tabulated-list-column-name'
> to find the current tabulated-list column instead of `current-column'.
Thanks. If we decide to install this, we'd need a NEWS entry for the
new feature.
I have no comments on the code, but please wait for Lars and others to
chime in.
Severity set to 'wishlist' from 'normal'
Request was from
Stefan Kangas <stefan <at> marxist.se>
to
control <at> debbugs.gnu.org
.
(Sat, 02 Jul 2022 07:44:03 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Sat, 02 Jul 2022 15:35:02 GMT)
Full text and
rfc822 format available.
Message #13 received at 56345 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
I apparently had a couple typos that I missed, the patch 0003 is to fix
that.
Also, I figured it would be convenient to have a way to specify the
column to hide by name, so I created a function named
`tabulated-list-hide-column', which `tabulated-list-hide-current-column'
now calls. I didn't test it but the code is directly ripped from the
original function so I don't think there will be any problems. That is
in the patch 0004.
[0003-Fix-typos-in-tabulated-list-make-column-visible.patch (text/x-patch, attachment)]
[0004-Allow-interactive-hiding-of-a-specific-column-in-tab.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Mon, 05 Sep 2022 19:33:01 GMT)
Full text and
rfc822 format available.
Message #16 received at 56345 <at> debbugs.gnu.org (full text, mbox):
Thuna <thuna.cing <at> gmail.com> writes:
> I apparently had a couple typos that I missed, the patch 0003 is to fix
> that.
>
> Also, I figured it would be convenient to have a way to specify the
> column to hide by name, so I created a function named
> `tabulated-list-hide-column', which `tabulated-list-hide-current-column'
> now calls. I didn't test it but the code is directly ripped from the
> original function so I don't think there will be any problems. That is
> in the patch 0004.
It's a bit difficult to read this patch series. Could you instead
submit one single patch, instead of a series of patches that fix
problems in previous versions of the patches?
Also, this change is so large that a copyright assignment to the FSF is
needed. Would you be willing to sign such paperwork?
Added tag(s) moreinfo.
Request was from
Lars Ingebrigtsen <larsi <at> gnus.org>
to
control <at> debbugs.gnu.org
.
(Mon, 05 Sep 2022 19:33:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Mon, 05 Sep 2022 19:59:01 GMT)
Full text and
rfc822 format available.
Message #21 received at 56345 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
This should be all the previous patches merged into a single one. I
don't mind signing the papers, but I have a few questions about it,
where do I send them?
[0001-Add-column-hiding-to-tabulated-list-mode.patch (text/x-patch, inline)]
From 2a5b5759de4d3acd0104cb1c9e9f75130f0c58e9 Mon Sep 17 00:00:00 2001
From: Thuna <thuna.cing <at> gmail.com>
Date: Fri, 1 Jul 2022 18:19:52 +0300
Subject: [PATCH] Add column hiding to tabulated-list-mode
Add the keyword `:hidden' to `tabulated-list-format' for controlling
the visibility of a specific column.
Introduce the commands `tabulated-list-hide-current-column' and
`tabulated-list-make-column-visible' for interactively changing the
`:hidden' property of the column. The commands are bound to "." and
"+" respectively.
Change calculations involving other columns to account for the
`:hidden' property.
Make the current column calculation into its own function named
`tabulated-list-get-column'. Make `tabulated-list-widen-current-column'
use that instead. Use the text property `tabulated-list-column-name'
to find the current tabulated-list column instead of `current-column'.
---
lisp/emacs-lisp/tabulated-list.el | 271 +++++++++++++++++-------------
1 file changed, 151 insertions(+), 120 deletions(-)
diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el
index 9868d8c4ec..a24b051d9c 100644
--- a/lisp/emacs-lisp/tabulated-list.el
+++ b/lisp/emacs-lisp/tabulated-list.el
@@ -104,7 +104,8 @@ tabulated-list-format
Currently supported properties are:
- `:right-align': If non-nil, the column should be right-aligned.
- `:pad-right': Number of additional padding spaces to the
- right of the column (defaults to 1 if omitted).")
+ right of the column (defaults to 1 if omitted).
+ - `:hidden': If non-nil, the column should not be visible.")
(put 'tabulated-list-format 'permanent-local t)
(defvar-local tabulated-list-use-header-line t
@@ -179,6 +180,11 @@ tabulated-list-get-entry
no entry at POS. POS, if omitted or nil, defaults to point."
(get-text-property (or pos (point)) 'tabulated-list-entry))
+(defun tabulated-list-get-column (&optional pos)
+ "Return the column name of the Tabulated List cell at POS.
+POS, if omitted or nil, defaults to point."
+ (get-text-property (or pos (point)) 'tabulated-list-column-name))
+
(defun tabulated-list-put-tag (tag &optional advance)
"Put TAG in the padding area of the current line.
TAG should be a string, with length <= `tabulated-list-padding'.
@@ -285,7 +291,7 @@ tabulated-list-init-header
cols)
(dotimes (n len)
(let* ((col (aref tabulated-list-format n))
- (not-last-col (< n (1- len)))
+ (not-last-col (tabulated-list--next-visible-column n))
(label (nth 0 col))
(lablen (length label))
(pname label)
@@ -293,62 +299,64 @@ tabulated-list-init-header
(props (nthcdr 3 col))
(pad-right (or (plist-get props :pad-right) 1))
(right-align (plist-get props :right-align))
+ (hidden (plist-get props :hidden))
(next-x (+ x pad-right width))
(available-space
(and not-last-col
(if right-align
width
(tabulated-list--available-space width n)))))
- (when (and (>= lablen 3)
- not-last-col
- (> lablen available-space))
- (setq label (truncate-string-to-width label available-space
- nil nil t)))
- (push
- (cond
- ;; An unsortable column
- ((not (nth 2 col))
- (propertize label 'tabulated-list-column-name pname))
- ;; The selected sort column
- ((equal (car col) (car tabulated-list-sort-key))
- (apply 'propertize
- (concat label
- (cond
- ((and (< lablen 3) not-last-col) "")
- ((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 pname
- button-props))
- ;; Unselected sortable column.
- (t (apply 'propertize label
- 'tabulated-list-column-name pname
- button-props)))
- cols)
- (when right-align
- (let ((shift (- width (string-width (car cols)))))
- (when (> shift 0)
- (setq cols
- (cons (car cols)
- (cons
- (propertize
- (make-string shift ?\s)
- 'display
- `(space :align-to
- (+ header-line-indent-width ,(+ x shift))))
- (cdr cols))))
- (setq x (+ x shift)))))
- (if (>= pad-right 0)
- (push (propertize
- " "
- 'display `(space :align-to
- (+ header-line-indent-width ,next-x))
- 'face 'fixed-pitch)
- cols))
- (setq x next-x)))
+ (unless hidden
+ (when (and (>= lablen 3)
+ not-last-col
+ (> lablen available-space))
+ (setq label (truncate-string-to-width label available-space
+ nil nil t)))
+ (push
+ (cond
+ ;; An unsortable column
+ ((not (nth 2 col))
+ (propertize label 'tabulated-list-column-name pname))
+ ;; The selected sort column
+ ((equal (car col) (car tabulated-list-sort-key))
+ (apply 'propertize
+ (concat label
+ (cond
+ ((and (< lablen 3) not-last-col) "")
+ ((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 pname
+ button-props))
+ ;; Unselected sortable column.
+ (t (apply 'propertize label
+ 'tabulated-list-column-name pname
+ button-props)))
+ cols)
+ (when right-align
+ (let ((shift (- width (string-width (car cols)))))
+ (when (> shift 0)
+ (setq cols
+ (cons (car cols)
+ (cons
+ (propertize
+ (make-string shift ?\s)
+ 'display
+ `(space :align-to
+ (+ header-line-indent-width ,(+ x shift))))
+ (cdr cols))))
+ (setq x (+ x shift)))))
+ (if (>= pad-right 0)
+ (push (propertize
+ " "
+ 'display `(space :align-to
+ (+ header-line-indent-width ,next-x))
+ 'face 'fixed-pitch)
+ cols))
+ (setq x next-x))))
(setq cols (apply 'concat (nreverse cols)))
(if tabulated-list-use-header-line
(setq header-line-format (list "" 'header-line-indent cols))
@@ -530,15 +538,29 @@ tabulated-list-print-entry
beg (point)
`(tabulated-list-id ,id tabulated-list-entry ,cols))))
+(defun tabulated-list--next-visible-column (n)
+ (let ((len (length tabulated-list-format))
+ (col-nb (1+ n))
+ found)
+ (while (and (< col-nb len)
+ (not found))
+ (if (plist-get (nthcdr 3 (aref tabulated-list-format col-nb))
+ :hidden)
+ (setq col-nb (1+ col-nb))
+ (setq found t)))
+ (when (< col-nb len)
+ col-nb)))
+
(defun tabulated-list--available-space (width n)
- (let* ((next-col-format (aref tabulated-list-format (1+ n)))
+ (let* ((next-col (tabulated-list--next-visible-column n))
+ (next-col-format (aref tabulated-list-format next-col))
(next-col-right-align (plist-get (nthcdr 3 next-col-format)
:right-align))
(next-col-width (nth 1 next-col-format)))
(if next-col-right-align
(- (+ width next-col-width)
(min next-col-width
- (tabulated-list--col-local-max-widths (1+ n))))
+ (tabulated-list--col-local-max-widths next-col)))
width)))
(defun tabulated-list-print-col (n col-desc x)
@@ -552,50 +574,52 @@ tabulated-list-print-col
(props (nthcdr 3 format))
(pad-right (or (plist-get props :pad-right) 1))
(right-align (plist-get props :right-align))
+ (hidden (plist-get props :hidden))
(label (cond ((stringp col-desc) col-desc)
((eq (car col-desc) 'image) " ")
(t (car col-desc))))
(label-width (string-width label))
(help-echo (concat (car format) ": " label))
(opoint (point))
- (not-last-col (< (1+ n) (length tabulated-list-format)))
+ (not-last-col (tabulated-list--next-visible-column n))
(available-space (and not-last-col
(if right-align
width
(tabulated-list--available-space width n)))))
- ;; Truncate labels if necessary (except last column).
- ;; Don't truncate to `width' if the next column is align-right
- ;; and has some space left, truncate to `available-space' instead.
- (when (and not-last-col
- (> label-width available-space))
- (setq label (truncate-string-to-width
- label available-space nil nil t t)
- label-width available-space))
- (setq label (bidi-string-mark-left-to-right label))
- (when (and right-align (> width label-width))
- (let ((shift (- width label-width)))
- (insert (propertize (make-string shift ?\s)
- 'display `(space :align-to ,(+ x shift))))
- (setq width (- width shift))
- (setq x (+ x shift))))
- (cond ((stringp col-desc)
- (insert (if (get-text-property 0 'help-echo label)
- label
- (propertize label 'help-echo help-echo))))
- ((eq (car col-desc) 'image)
- (insert (propertize " "
- 'display col-desc
- 'help-echo help-echo)))
- ((apply 'insert-text-button label (cdr col-desc))))
- (let ((next-x (+ x pad-right width)))
- ;; No need to append any spaces if this is the last column.
- (when not-last-col
- (when (> pad-right 0) (insert (make-string pad-right ?\s)))
- (insert (propertize
- (make-string (- width (min width label-width)) ?\s)
- 'display `(space :align-to ,next-x))))
- (put-text-property opoint (point) 'tabulated-list-column-name name)
- next-x)))
+ (if hidden x
+ ;; Truncate labels if necessary (except last column).
+ ;; Don't truncate to `width' if the next column is align-right
+ ;; and has some space left, truncate to `available-space' instead.
+ (when (and not-last-col
+ (> label-width available-space))
+ (setq label (truncate-string-to-width
+ label available-space nil nil t t)
+ label-width available-space))
+ (setq label (bidi-string-mark-left-to-right label))
+ (when (and right-align (> width label-width))
+ (let ((shift (- width label-width)))
+ (insert (propertize (make-string shift ?\s)
+ 'display `(space :align-to ,(+ x shift))))
+ (setq width (- width shift))
+ (setq x (+ x shift))))
+ (cond ((stringp col-desc)
+ (insert (if (get-text-property 0 'help-echo label)
+ label
+ (propertize label 'help-echo help-echo))))
+ ((eq (car col-desc) 'image)
+ (insert (propertize " "
+ 'display col-desc
+ 'help-echo help-echo)))
+ ((apply 'insert-text-button label (cdr col-desc))))
+ (let ((next-x (+ x pad-right width)))
+ ;; No need to append any spaces if this is the last column.
+ (when not-last-col
+ (when (> pad-right 0) (insert (make-string pad-right ?\s)))
+ (insert (propertize
+ (make-string (- width (min width label-width)) ?\s)
+ 'display `(space :align-to ,next-x))))
+ (put-text-property opoint (point) 'tabulated-list-column-name name)
+ next-x))))
(defun tabulated-list-delete-entry ()
"Delete the Tabulated List entry at point.
@@ -726,38 +750,16 @@ tabulated-list-widen-current-column
Interactively, N is the prefix numeric argument, and defaults to
1."
(interactive "p")
- (let ((start (current-column))
- (entry (tabulated-list-get-entry))
- (nb-cols (length tabulated-list-format))
- (col-nb 0)
- (total-width 0)
- (found nil)
- col-width)
- (while (and (not found)
- (< col-nb nb-cols))
- (if (>= start
- (setq total-width
- (+ total-width
- (max (setq col-width
- (cadr (aref tabulated-list-format
- col-nb)))
- (let ((desc (aref entry col-nb)))
- (string-width (if (stringp desc)
- desc
- (car desc)))))
- (or (plist-get (nthcdr 3 (aref tabulated-list-format
- col-nb))
- :pad-right)
- 1))))
- (setq col-nb (1+ col-nb))
- (setq found t)
- ;; `tabulated-list-format' may be a constant (sharing list
- ;; structures), so copy it before mutating.
- (setq tabulated-list-format (copy-tree tabulated-list-format t))
- (setf (cadr (aref tabulated-list-format col-nb))
- (max 1 (+ col-width n)))
- (tabulated-list-print t)
- (tabulated-list-init-header)))))
+ (let* ((col-nb (tabulated-list--column-number
+ (tabulated-list-get-column)))
+ (col-width (cadr (aref tabulated-list-format col-nb))))
+ ;; `tabulated-list-format' may be a constant (sharing list
+ ;; structures), so copy it before mutating.
+ (setq tabulated-list-format (copy-tree tabulated-list-format t))
+ (setf (cadr (aref tabulated-list-format col-nb))
+ (max 1 (+ col-width n)))
+ (tabulated-list-print t)
+ (tabulated-list-init-header)))
(defun tabulated-list-narrow-current-column (&optional n)
"Narrow the current tabulated list column by N chars.
@@ -766,6 +768,35 @@ tabulated-list-narrow-current-column
(interactive "p")
(tabulated-list-widen-current-column (- n)))
+(defun tabulated-list-hide-current-column ()
+ "Hide the current tabulated list column."
+ (interactive)
+ (let ((col-nb (tabulated-list--column-number
+ (tabulated-list-get-column))))
+ (setf (nthcdr 3 (aref tabulated-list-format col-nb))
+ (plist-put (nthcdr 3 (aref tabulated-list-format col-nb))
+ :hidden t)))
+ (tabulated-list-init-header)
+ (tabulated-list-print t t))
+
+(defun tabulated-list-make-column-visible (name)
+ "Make the tabulated list column NAME visible.
+Interactively, NAME is a hidden column propmted for with
+`completing-read'."
+ (interactive
+ (list
+ (completing-read "Colummn name: "
+ (append tabulated-list-format nil)
+ (lambda (col)
+ (plist-get (nthcdr 3 col) :hidden))
+ t)))
+ (let ((col-nb (tabulated-list--column-number name)))
+ (setf (nthcdr 3 (aref tabulated-list-format col-nb))
+ (plist-put (nthcdr 3 (aref tabulated-list-format col-nb))
+ :hidden nil)))
+ (tabulated-list-init-header)
+ (tabulated-list-print t t))
+
(defun tabulated-list-next-column (&optional arg)
"Go to the start of the next column after point on the current line.
If ARG is provided, move that many columns."
--
2.35.1
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Tue, 06 Sep 2022 10:08:01 GMT)
Full text and
rfc822 format available.
Message #24 received at 56345 <at> debbugs.gnu.org (full text, mbox):
Thuna <thuna.cing <at> gmail.com> writes:
> This should be all the previous patches merged into a single one.
Thanks. I've had a skim over the patch, and it seems reasonable to me.
(I haven't tried it, though.) But what's the use case for this? I
can't really remember ever wanting to hide a column in a tabulated-list
buffer.
> I don't mind signing the papers, but I have a few questions about it,
> where do I send them?
copyright-clerk <at> fsf.org is probably the right place to as questions.
But here's the form to get started, if you want to do the assignment:
Please email the following information to assign <at> gnu.org, and we
will send you the assignment form for your past and future changes.
Please use your full legal name (in ASCII characters) as the subject
line of the message.
----------------------------------------------------------------------
REQUEST: SEND FORM FOR PAST AND FUTURE CHANGES
[What is the name of the program or package you're contributing to?]
Emacs
[Did you copy any files or text written by someone else in these changes?
Even if that material is free software, we need to know about it.]
[Do you have an employer who might have a basis to claim to own
your changes? Do you attend a school which might make such a claim?]
[For the copyright registration, what country are you a citizen of?]
[What year were you born?]
[Please write your email address here.]
[Please write your postal address here.]
[Which files have you changed so far, and which new files have you written
so far?]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Tue, 06 Sep 2022 14:00:02 GMT)
Full text and
rfc822 format available.
Message #27 received at 56345 <at> debbugs.gnu.org (full text, mbox):
> Thanks. I've had a skim over the patch, and it seems reasonable to me.
> (I haven't tried it, though.) But what's the use case for this? I
> can't really remember ever wanting to hide a column in a tabulated-list
> buffer.
It's mostly a quality of life improvement. Horizontal scrolling is a
mess (or at least I can't manage it), and you don't always need to see
all of the columns, so adding a way for the user to control it seemed
reasonable. Also, when you add a filtering mechanism to your
`tabulated-list-entries' function, some columns can end up redundant,
this would make it convenient to manage situations like that. (I would
know; that's why I wrote it)
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Wed, 07 Sep 2022 03:24:02 GMT)
Full text and
rfc822 format available.
Message #30 received at 56345 <at> debbugs.gnu.org (full text, mbox):
Thuna <thuna.cing <at> gmail.com> writes:
> > Thanks. I've had a skim over the patch, and it seems reasonable to me.
> > (I haven't tried it, though.) But what's the use case for this? I
> > can't really remember ever wanting to hide a column in a tabulated-list
> > buffer.
>
> It's mostly a quality of life improvement.
The "why" is clear (to me), but not so much the "how". `proced' and
`ibuffer' for example (currently not based on tabulated-list, but they
are also table view modes) allow to define and switch between certain
views, but don't offer commands to explicitly select and delete columns.
So the general idea (ability to leave columns out of the table) is
surely useful, but which interface should be provided to get this is
another question.
Michael.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Wed, 07 Sep 2022 10:39:01 GMT)
Full text and
rfc822 format available.
Message #33 received at 56345 <at> debbugs.gnu.org (full text, mbox):
> The "why" is clear (to me), but not so much the "how". `proced' and
> `ibuffer' for example (currently not based on tabulated-list, but they
> are also table view modes) allow to define and switch between certain
> views, but don't offer commands to explicitly select and delete columns.
I don't know how `proced' and `ibuffer' specifically handles views, but
I don't think it is a good idea to put the burden on external packages
when tabulated-list is right there. Especially since this leads to a
lot of (what I imagine to be) duplicated code across packages.
> So the general idea (ability to leave columns out of the table) is
> surely useful, but which interface should be provided to get this is
> another question.
I don't exactly understand what you mean by "interface". Are you
referring to the package which should be responsible for managing
which columns are visible?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Wed, 07 Sep 2022 12:42:02 GMT)
Full text and
rfc822 format available.
Message #36 received at 56345 <at> debbugs.gnu.org (full text, mbox):
Michael Heerdegen <michael_heerdegen <at> web.de> writes:
> The "why" is clear (to me), but not so much the "how". `proced' and
> `ibuffer' for example (currently not based on tabulated-list, but they
> are also table view modes) allow to define and switch between certain
> views, but don't offer commands to explicitly select and delete columns.
>
> So the general idea (ability to leave columns out of the table) is
> surely useful, but which interface should be provided to get this is
> another question.
I don't understand what you mean here. That two modes that don't use
tabulated-list don't offer this functionality seems somewhat irrelevant?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Wed, 07 Sep 2022 12:43:01 GMT)
Full text and
rfc822 format available.
Message #39 received at 56345 <at> debbugs.gnu.org (full text, mbox):
Thuna <thuna.cing <at> gmail.com> writes:
> It's mostly a quality of life improvement. Horizontal scrolling is a
> mess (or at least I can't manage it), and you don't always need to see
> all of the columns, so adding a way for the user to control it seemed
> reasonable. Also, when you add a filtering mechanism to your
> `tabulated-list-entries' function, some columns can end up redundant,
> this would make it convenient to manage situations like that. (I would
> know; that's why I wrote it)
OK, I can understand this as being used in a setup function -- but I
doubt that many users would want to interactively want to remove a
column from the current display.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Wed, 07 Sep 2022 12:51:02 GMT)
Full text and
rfc822 format available.
Message #42 received at 56345 <at> debbugs.gnu.org (full text, mbox):
> OK, I can understand this as being used in a setup function -- but I
> doubt that many users would want to interactively want to remove a
> column from the current display.
I can't claim to know how many people would want it, but I can give an
example of when it's useful: In the specific package I wrote this patch
for, I list information about youtube videos. The columns `channel ID'
and `video ID' are vital, but usually unnecessary and take space. I
have these set in `tabulated-list-format' as hidden by default, so that
the user can choose to see them if they wish to. Using this, I have to
query for the videos only once, and then tabulated-list-mode decides
what it wants to display on its own.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Wed, 07 Sep 2022 12:54:01 GMT)
Full text and
rfc822 format available.
Message #45 received at 56345 <at> debbugs.gnu.org (full text, mbox):
Thuna <thuna.cing <at> gmail.com> writes:
> I can't claim to know how many people would want it, but I can give an
> example of when it's useful: In the specific package I wrote this patch
> for, I list information about youtube videos. The columns `channel ID'
> and `video ID' are vital, but usually unnecessary and take space. I
> have these set in `tabulated-list-format' as hidden by default, so that
> the user can choose to see them if they wish to. Using this, I have to
> query for the videos only once, and then tabulated-list-mode decides
> what it wants to display on its own.
Oh, OK, that makes sense. Then I think this sounds like a good
addition (but we have to wait for the assignment to be processed to
apply the patch).
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Wed, 07 Sep 2022 15:36:01 GMT)
Full text and
rfc822 format available.
Message #48 received at 56345 <at> debbugs.gnu.org (full text, mbox):
> I doubt that many users would want to interactively
> want to remove a column from the current display.
(Not really following this thread... and not a real
fan of `tabulated-list-mode', which is anyway too
limited/restrictive...)
Why the doubt?
Of course some users would sometimes want to
interactively remove a column from the current
display. Why wouldn't they? That seems like a
no-brainer to me. Think Dired/ls, or the bookmark
list (toggle showing file names).
Why would users want to be able to sort columns
but not also be able to move them around or
hide/remove them, including interactively?
OK, you said "many users". There's room for lots
of doubt about anything in Emacs, if the qualifier
"many" is applied. Whether being able to hide
columns interactively is a useful feature for
Emacs to add shouldn't depend on whether "many"
users would likely use it. Not if someone is
willing to add that feature. Why not?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Thu, 08 Sep 2022 05:55:02 GMT)
Full text and
rfc822 format available.
Message #51 received at 56345 <at> debbugs.gnu.org (full text, mbox):
Lars Ingebrigtsen <larsi <at> gnus.org> writes:
> I don't understand what you mean here. That two modes that don't use
> tabulated-list don't offer this functionality seems somewhat irrelevant?
They provide a different way to solve the same task (views; restricting
displayed columns) - that's why I ask if tabulated-list should implement
this functionality, additionally or alternatively, since it's very
similar.
Michael.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Thu, 08 Sep 2022 05:58:01 GMT)
Full text and
rfc822 format available.
Message #54 received at 56345 <at> debbugs.gnu.org (full text, mbox):
Thuna <thuna.cing <at> gmail.com> writes:
> I don't know how `proced' and `ibuffer' specifically handles views, but
> I don't think it is a good idea to put the burden on external packages
> when tabulated-list is right there. Especially since this leads to a
> lot of (what I imagine to be) duplicated code across packages.
Exactly. tabulated-list should implement this feature.
> I don't exactly understand what you mean by "interface". Are you
> referring to the package which should be responsible for managing
> which columns are visible?
No, I mean, how should column hiding happen? Should the user select
single columns interactively, or should we provide a way to define
restricted views? Maybe we can have both?
Michael.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Thu, 08 Sep 2022 19:20:02 GMT)
Full text and
rfc822 format available.
Message #57 received at 56345 <at> debbugs.gnu.org (full text, mbox):
* Michael Heerdegen <michael_heerdegen <at> web.de> [2022-09-08 08:59]:
> Thuna <thuna.cing <at> gmail.com> writes:
>
> > I don't know how `proced' and `ibuffer' specifically handles views, but
> > I don't think it is a good idea to put the burden on external packages
> > when tabulated-list is right there. Especially since this leads to a
> > lot of (what I imagine to be) duplicated code across packages.
>
> Exactly. tabulated-list should implement this feature.
>
> > I don't exactly understand what you mean by "interface". Are you
> > referring to the package which should be responsible for managing
> > which columns are visible?
>
> No, I mean, how should column hiding happen? Should the user select
> single columns interactively, or should we provide a way to define
> restricted views? Maybe we can have both?
It seems to me complex to hide columns as one would need to manipulated:
- tabulated-list-format
and
- tabulated-list-entries
One way to go would be:
1. Remember original format
2. Generate new format with column hidden
3. Remember original tabulated-list-entries
4. Modify tabulated-list-entries to remove the column
5. Refresh buffer
6. Revealing columns should restore original variables
Jean
Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns
In support of Richard M. Stallman
https://stallmansupport.org/
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Thu, 27 Oct 2022 23:13:02 GMT)
Full text and
rfc822 format available.
Message #60 received at 56345 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
I fixed and improved a couple things (though the assignment is still
pending). Namely, the commands are actually bound in
`tabulated-list-mode-map' and the command
`tabulated-list-make-column-visible' is renamed to
`tabulated-list-unhide-column'.
[0001-Add-column-hiding-to-tabulated-list-mode.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Fri, 25 Nov 2022 01:27:01 GMT)
Full text and
rfc822 format available.
Message #63 received at 56345 <at> debbugs.gnu.org (full text, mbox):
Lars Ingebrigtsen <larsi <at> gnus.org> writes:
> Thuna <thuna.cing <at> gmail.com> writes:
>
>> I can't claim to know how many people would want it, but I can give an
>> example of when it's useful: In the specific package I wrote this patch
>> for, I list information about youtube videos. The columns `channel ID'
>> and `video ID' are vital, but usually unnecessary and take space. I
>> have these set in `tabulated-list-format' as hidden by default, so that
>> the user can choose to see them if they wish to. Using this, I have to
>> query for the videos only once, and then tabulated-list-mode decides
>> what it wants to display on its own.
>
> Oh, OK, that makes sense. Then I think this sounds like a good
> addition (but we have to wait for the assignment to be processed to
> apply the patch).
What's the status on the copyright assignment?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Fri, 25 Nov 2022 07:59:02 GMT)
Full text and
rfc822 format available.
Message #66 received at 56345 <at> debbugs.gnu.org (full text, mbox):
> What's the status on the copyright assignment?
I believe FSF should currently be negotiating for a disclaimer.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#56345
; Package
emacs
.
(Fri, 25 Nov 2022 08:18:01 GMT)
Full text and
rfc822 format available.
Message #69 received at 56345 <at> debbugs.gnu.org (full text, mbox):
> Cc: 56345 <at> debbugs.gnu.org, Thuna <thuna.cing <at> gmail.com>
> From: Stefan Kangas <stefankangas <at> gmail.com>
> Date: Thu, 24 Nov 2022 17:26:25 -0800
>
> Lars Ingebrigtsen <larsi <at> gnus.org> writes:
>
> > Oh, OK, that makes sense. Then I think this sounds like a good
> > addition (but we have to wait for the assignment to be processed to
> > apply the patch).
>
> What's the status on the copyright assignment?
I don't see anything pertinent on file. I don't even think I've seen the
beginning of the paperwork in my email (I'm cc'ed on those messages).
Removed tag(s) moreinfo.
Request was from
Stefan Kangas <stefankangas <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Mon, 23 Oct 2023 20:14:01 GMT)
Full text and
rfc822 format available.
Added tag(s) pending.
Request was from
Stefan Kangas <stefankangas <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Mon, 23 Oct 2023 20:14:01 GMT)
Full text and
rfc822 format available.
This bug report was last modified 1 year and 238 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.