bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#69454: Not possible to insert an empty vtable


From: Adam Porter
Subject: bug#69454: Not possible to insert an empty vtable
Date: Mon, 11 Mar 2024 14:57:20 -0500
User-agent: Mozilla Thunderbird

Hi Eli,

> P.S. Adam, I took the liberty of adding you to this discussion, since
> you seem lately to be interested in vtable.

Thanks for adding me. Indeed, I've found vtable to be very useful in my new listen.el package.

On 3/9/24 02:54, Eli Zaretskii wrote:
Date: Wed, 28 Feb 2024 15:29:11 +0100
From: Eric Marsden <eric.marsden@risk-engineering.org>

Hello,

The following generates an error. It seems to me that it would be
preferable to insert the header line and show zero rows for the vtable.

     (require 'vtable)
     (make-vtable :columns '("tweedle" "dum") :objects (list))

Debugger entered--Lisp error: (wrong-number-of-arguments #<subr max> 0)
    max()
    apply(max nil)
    seq-max(nil)

I'm not sure we want to support zero-size vtables.  A better error
message would be nice, though.  What do others think?

I tend to agree with Eric that it would be helpful if vtable could handle having an empty objects collection value to insert, because it saves the application from having to wrap the rather large `make-vtable' form in a `when' block, like here:

https://github.com/alphapapa/listen.el/blob/e9ea67350cf3b6cd870561c5e52d4b5255b04d34/listen-queue.el#L135

Also, it's possible that, after inserting a vtable, the collection of objects may be modified so that the collection is empty--then if the the vtable is reverted, it should be able to handle the case of the collection being empty.

AFAICT there's not much the application could do to avoid errors in that case, other than working outside of vtable's revert API and calling the function that tested the collection and conditionally inserted the vtable in the first place--in which case the vtable revert API would seem useless.

So IMO, when inserting or reverting a vtable, vtable ought to check whether the collection is empty; and if so, handle it gracefully, meaning that an "empty vtable" (whatever that would mean; maybe just one line of text saying that it's an empty collection) would still be inserted, and that if the collection became non-nil, it could be reverted and displayed properly.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]