GNU bug report logs - #64536
30.0.50; Make cl-print put buttons on ellipses

Previous Next

Package: emacs;

Reported by: Stefan Monnier <monnier <at> iro.umontreal.ca>

Date: Sun, 9 Jul 2023 04:44:01 UTC

Severity: normal

Found in version 30.0.50

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


Message #16 received at 64536 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Ihor Radchenko <yantar92 <at> posteo.net>
Cc: Gemini Lasswell <gazally <at> runbox.com>, 64536 <at> debbugs.gnu.org
Subject: Re: bug#64536: 30.0.50; Make cl-print put buttons on ellipses
Date: Sat, 12 Aug 2023 01:23:03 -0400
>> -;; Define button type used for ...'s.
>> -;; Set skip property so you don't have to TAB through 100 of them to
>> -;; get to the next function name.
>> -(define-button-type 'backtrace-ellipsis
>> -  'skip t 'action #'backtrace-expand-ellipsis
>> -  'help-echo "mouse-2, RET: expand this ellipsis")
>
> Isn't this a breaking change?
> I just got inspector.el broken because it uses 'backtrace-ellipsis
> button type.

Apparently it's a breaking change, indeed.

Hmm... we could re-add it, but with the new `cl-print.el` your code
should simply not use `backtrace-ellipsis` at all because `cl-print.el`
did it for you already.

IOW, I think a patch like the one below my sig is the better option.

> At least, I'd expect to see the removal documented in NEWS.

How 'bout:

     The code that allowed "..." to be expanded in the "*Backtrace*" buffer
     should now work anywhere the data is generated by 'cl-print'.
     
    +*** The 'backtrace-ellipsis' button is replaced by 'cl-print-ellipsis'.
    +
     *** hash-tables' contents can be expanded via the ellipsis.
     
    +*** Modes can control the expansion via 'cl-print-expand-ellipsis-function'.
    +
     ** Modeline elements can now be right-aligned.
     Anything following the symbol 'mode-line-format-right-align' in
     'mode-line-format' will be right-aligned.  Exactly where it is


-- Stefan


diff --git a/inspector.el b/inspector.el
index fa9b1cc778..e00209f2be 100644
--- a/inspector.el
+++ b/inspector.el
@@ -1,6 +1,6 @@
 ;;; inspector.el --- Tool for inspection of Emacs Lisp objects  -*- lexical-binding: t -*-
 
-;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
+;; Copyright (C) 2021-2023 Free Software Foundation, Inc.
 
 ;; Author: Mariano Montone <marianomontone <at> gmail.com>
 ;; URL: https://github.com/mmontone/emacs-inspector
@@ -243,13 +243,14 @@ LIMIT controls the truncation."
     (put-text-property (point-min) (point) 'inspector-form (gensym))
     ;; Make buttons from all the "..."s.  Since there might be many of
     ;; them, use text property buttons.
-    (goto-char (point-min))
-    (while (< (point) (point-max))
-      (let ((end (next-single-property-change (point) 'cl-print-ellipsis
-                                              nil (point-max))))
-        (when (get-text-property (point) 'cl-print-ellipsis)
-          (make-text-button (point) end :type 'backtrace-ellipsis))
-        (goto-char end)))
+    (unless (boundp 'cl-print-expand-ellipsis-function) ;Emacs-30
+      (goto-char (point-min))
+      (while (< (point) (point-max))
+        (let ((end (next-single-property-change (point) 'cl-print-ellipsis
+                                                nil (point-max))))
+          (when (get-text-property (point) 'cl-print-ellipsis)
+            (make-text-button (point) end :type 'backtrace-ellipsis))
+          (goto-char end))))
     (buffer-string)))
 
 (cl-defgeneric inspector--face-for-object (object)






This bug report was last modified 1 year and 334 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.