unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Adam Porter <adam@alphapapa.net>
To: Eli Zaretskii <eliz@gnu.org>, john muhl <jm@pub.pink>
Cc: 71415@debbugs.gnu.org
Subject: bug#71415: 30.0.50; vtable-current-object off by one
Date: Sat, 15 Jun 2024 19:45:44 -0500	[thread overview]
Message-ID: <a54624ca-99a9-4fd4-8aa4-b3bea1c33753@alphapapa.net> (raw)
In-Reply-To: <86ikyavbt1.fsf@gnu.org>

Hi Eli, John,

On 6/15/24 03:40, Eli Zaretskii wrote:
>> From: john muhl <jm@pub.pink>
>> Date: Fri, 07 Jun 2024 09:15:07 -0500
>>
>> After updating an object, ‘vtable-current-object’ in the displayer
>> and formatter functions points to the object after the one that
>> was updated. Running the following:
>>
>>    (with-current-buffer (get-buffer-create "vtable-demo")
>>      (require 'vtable)
>>      (erase-buffer)
>>      (make-vtable
>>       :columns '("Index" "Number")
>>       :objects `((1 ,(random)) (2 ,(random)) (3 ,(random)))
>>       :displayer (lambda (value &rest _)
>>                    ;; vtable-current-object is off by one; e.g.
>>                    ;; update the first row and v-c-o will be the second row;
>>                    ;; update the final row and v-c-o will be nil.
>>                    (message "%s %s" value (vtable-current-object))
>>                    (propertize (number-to-string value) 'face 'vtable)))
>>      (let* ((table (vtable-current-table))
>>             (first (nth 0 (vtable-objects table)))
>>             (other (nth 1 (vtable-objects table)))
>>             (final (nth 2 (vtable-objects table))))
>>        (setf (nth 1 first) 1)
>>        (setf (nth 1 other) 2)
>>        (setf (nth 1 final) 3)
>>        (vtable-update-object table first)
>>        (vtable-update-object table other)
>>        (vtable-update-object table final)))
>>
>> I see in the messages buffer:
>>
>>    1 (2 2) [2 times]
>>    2 (3 3) [2 times]
>>    3 nil [2 times]
>>
>> when I expect to see:
>>
>>    1 (1 1) [2 times]
>>    2 (2 2) [2 times]
>>    3 (3 3) [2 times]
> 
> Adam, any comments or suggestions?

Hi Eli, John,

My first thought is that this code had some changes recently, and the 
bug report indicates that the version of Emacs used was compiled from 
revision f2309557ff366a81183859bda88b9a0012a5d9d6, but I can't find that 
in emacs.git/master.  So I'd suggest trying to reproduce it with a build 
of Emacs from master after the related changes.

Secondly, it seems likely to be a violation of intent to call 
`vtable-current-object' inside the table's displayer function.  I don't 
think that function is intended to be used within the process of 
updating a vtable.  It's intended to be used from outside vtable code to 
find what object's representation point is on in a vtable.

So if it works correctly in that case but not in this apparently 
contrived one, I doubt that this would indicate a bug.  And in that 
case, I'd suggest that we be told what the user is actually trying to 
accomplish, in case there's a real bug elsewhere that was 
"rabbit-trailed" into a misunderstanding here.  :)

Thanks,
Adam





  parent reply	other threads:[~2024-06-16  0:45 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-07 14:15 bug#71415: 30.0.50; vtable-current-object off by one john muhl
2024-06-15  8:40 ` Eli Zaretskii
2024-06-15 18:55   ` john muhl
2024-06-16  0:45   ` Adam Porter [this message]
2024-06-17 13:35     ` john muhl
2024-06-17 16:24       ` Eli Zaretskii

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a54624ca-99a9-4fd4-8aa4-b3bea1c33753@alphapapa.net \
    --to=adam@alphapapa.net \
    --cc=71415@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=jm@pub.pink \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).