unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#18897: 25.0.50; Use object-print for representing EIEIO objects during edebug
@ 2014-10-29 23:30 Eric Abrahamsen
  2014-10-30  2:29 ` bug#18897: [PATCH] using advice-add Eric Abrahamsen
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Eric Abrahamsen @ 2014-10-29 23:30 UTC (permalink / raw)
  To: 18897


In the "Interfacing with edebug" section of eieio.el, provisions are
made for using `object-print' to pretty-print EIEIO objects in edebug
sessions. For particularly large objects, this could save much grief as
Emacs tries to print enormous data structures.

What would make this work is the `defalias' on the last line of the
`add-hook' expression that starts on line 868 of the file (as of late
October 2014). This line is currently commented out. Uncommenting it
causes printing in edebug to use `object-print', as expected.

Stefan mentioned that `defalias' is the wrong approach, and should be
replaced with an `advice-add'. Patches might be forthcoming.



In GNU Emacs 25.0.50.10 (i686-pc-linux-gnu, GTK+ Version 3.14.3)
 of 2014-10-25 on pellet
Windowing system distributor `The X.Org Foundation', version 11.0.11601000
Configured using:
 `configure --with-gif=no'

Configured features:
XPM JPEG TIFF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS NOTIFY
ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB

Important settings:
  value of $LC_CTYPE: zh_CN.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=fcitx
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  paredit-mode: t
  magit-auto-revert-mode: t
  diff-auto-refine-mode: t
  recentf-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  url-handler-mode: t
  helm-mode: t
  global-auto-complete-mode: t
  auto-complete-mode: t
  helm-adaptive-mode: t
  helm-match-plugin-mode: t
  helm-occur-match-plugin-mode: t
  projectile-global-mode: t
  projectile-mode: t
  shell-dirtrack-mode: t
  display-time-mode: t
  show-paren-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t

Recent input:
C-x 5 2 <switch-frame> C-x 5 2 <switch-frame> <switch-frame> 
g C-c g l g <return> d SPC n q SPC <tab> <tab> <tab> 
<return> g q <return> SPC SPC SPC q n n n p <return> 
C-g q SPC SPC n n n <return> <return> <return> <return> 
<return> <return> <return> <return> <return> <return> 
<return> <return> <return> <return> <return> <return> 
<return> <return> <return> <return> <return> <return> 
<return> SPC n n SPC <down> <down> SPC SPC d <up> SPC 
d SPC R C-g F <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <up> C-c C-z C-j T h a n <backspace> 
t ' s SPC i n t e r e s t i n g M-b C-e , SPC t h a 
n k M-b M-b a n SPC f <backspace> M-f SPC l i b r a 
r y C-e SPC <backspace> s ! SPC T r y i n g SPC t o 
SPC e v a l <M-backspace> <M-backspace> <M-backspace> 
U s i n g SPC t h e SPC d e <backspace> <backspace> 
e v a l SPC e <backspace> e x p r e s s i o n SPC o 
n SPC <switch-frame> M-x e m <backspace> <backspace> 
r e g p o r t <backspace> <backspace> <backspace> <backspace> 
<backspace> p o r t <return>

Recent messages:
Retrieving newsgroup: gmane.emacs.devel...
Fetching headers for gmane.emacs.devel...done
Suppressing duplicates...done
Sorting threads...done
Generating summary...done
Processing kill file /home/eric/News/gmane.emacs.devel.KILL...done
Source file `/home/eric/.emacs.d/gnus/lisp/gnus-fun.el' newer than byte-compiled file
gnus-html-wash-tags: fetching link URL mailto:monnier@iro.umontreal.ca
No more articles [2 times]
Quit

Load-path shadows:
~/.emacs.d/bbdb-vcard/vcard hides ~/.emacs.d/gnus/contrib/vcard
~/.emacs.d/dictionary-el/lpath hides ~/.emacs.d/gnus/lisp/lpath
~/.emacs.d/gnus/contrib/compface hides ~/.emacs.d/gnus/lisp/compface
~/.emacs.d/bbdb-vcard/vcard hides /home/eric/.emacs.d/elpa/vcard-0.1/vcard
~/.emacs.d/dictionary-el/lpath hides /home/eric/.emacs.d/elpa/wget-1.94/lpath
~/.emacs.d/gnus/lisp/format-spec hides /usr/local/share/emacs/25.0.50/lisp/format-spec
~/.emacs.d/gnus/lisp/password-cache hides /usr/local/share/emacs/25.0.50/lisp/password-cache
~/.emacs.d/gnus/lisp/hex-util hides /usr/local/share/emacs/25.0.50/lisp/hex-util
~/.emacs.d/gnus/lisp/md4 hides /usr/local/share/emacs/25.0.50/lisp/md4
~/.emacs.d/gnus/lisp/color hides /usr/local/share/emacs/25.0.50/lisp/color
~/.emacs.d/gnus/lisp/dns-mode hides /usr/local/share/emacs/25.0.50/lisp/textmodes/dns-mode
~/.emacs.d/org-mode/lisp/org-habit hides /usr/local/share/emacs/25.0.50/lisp/org/org-habit
~/.emacs.d/org-mode/lisp/org-inlinetask hides /usr/local/share/emacs/25.0.50/lisp/org/org-inlinetask
~/.emacs.d/org-mode/lisp/ob-ditaa hides /usr/local/share/emacs/25.0.50/lisp/org/ob-ditaa
~/.emacs.d/org-mode/lisp/ob-lisp hides /usr/local/share/emacs/25.0.50/lisp/org/ob-lisp
~/.emacs.d/org-mode/lisp/ob-ref hides /usr/local/share/emacs/25.0.50/lisp/org/ob-ref
~/.emacs.d/org-mode/lisp/ox hides /usr/local/share/emacs/25.0.50/lisp/org/ox
~/.emacs.d/org-mode/lisp/org-macs hides /usr/local/share/emacs/25.0.50/lisp/org/org-macs
~/.emacs.d/org-mode/lisp/ob-R hides /usr/local/share/emacs/25.0.50/lisp/org/ob-R
~/.emacs.d/org-mode/lisp/org-indent hides /usr/local/share/emacs/25.0.50/lisp/org/org-indent
~/.emacs.d/org-mode/lisp/ob-lob hides /usr/local/share/emacs/25.0.50/lisp/org/ob-lob
~/.emacs.d/org-mode/lisp/org-compat hides /usr/local/share/emacs/25.0.50/lisp/org/org-compat
~/.emacs.d/org-mode/lisp/org-mobile hides /usr/local/share/emacs/25.0.50/lisp/org/org-mobile
~/.emacs.d/org-mode/lisp/org-mhe hides /usr/local/share/emacs/25.0.50/lisp/org/org-mhe
~/.emacs.d/org-mode/lisp/ob hides /usr/local/share/emacs/25.0.50/lisp/org/ob
~/.emacs.d/org-mode/lisp/ox-texinfo hides /usr/local/share/emacs/25.0.50/lisp/org/ox-texinfo
~/.emacs.d/org-mode/lisp/org-timer hides /usr/local/share/emacs/25.0.50/lisp/org/org-timer
~/.emacs.d/org-mode/lisp/org-src hides /usr/local/share/emacs/25.0.50/lisp/org/org-src
~/.emacs.d/org-mode/lisp/org-mouse hides /usr/local/share/emacs/25.0.50/lisp/org/org-mouse
~/.emacs.d/org-mode/lisp/ob-scheme hides /usr/local/share/emacs/25.0.50/lisp/org/ob-scheme
~/.emacs.d/org-mode/lisp/ob-asymptote hides /usr/local/share/emacs/25.0.50/lisp/org/ob-asymptote
~/.emacs.d/org-mode/lisp/org-info hides /usr/local/share/emacs/25.0.50/lisp/org/org-info
~/.emacs.d/org-mode/lisp/ox-publish hides /usr/local/share/emacs/25.0.50/lisp/org/ox-publish
~/.emacs.d/org-mode/lisp/ob-ocaml hides /usr/local/share/emacs/25.0.50/lisp/org/ob-ocaml
~/.emacs.d/org-mode/lisp/ob-tangle hides /usr/local/share/emacs/25.0.50/lisp/org/ob-tangle
~/.emacs.d/org-mode/lisp/ob-org hides /usr/local/share/emacs/25.0.50/lisp/org/ob-org
~/.emacs.d/org-mode/lisp/ob-perl hides /usr/local/share/emacs/25.0.50/lisp/org/ob-perl
~/.emacs.d/org-mode/lisp/org-agenda hides /usr/local/share/emacs/25.0.50/lisp/org/org-agenda
~/.emacs.d/org-mode/lisp/ox-beamer hides /usr/local/share/emacs/25.0.50/lisp/org/ox-beamer
~/.emacs.d/org-mode/lisp/org-faces hides /usr/local/share/emacs/25.0.50/lisp/org/org-faces
~/.emacs.d/org-mode/lisp/ox-latex hides /usr/local/share/emacs/25.0.50/lisp/org/ox-latex
~/.emacs.d/org-mode/lisp/ob-sqlite hides /usr/local/share/emacs/25.0.50/lisp/org/ob-sqlite
~/.emacs.d/org-mode/lisp/ob-plantuml hides /usr/local/share/emacs/25.0.50/lisp/org/ob-plantuml
~/.emacs.d/org-mode/lisp/ox-man hides /usr/local/share/emacs/25.0.50/lisp/org/ox-man
~/.emacs.d/org-mode/lisp/ob-gnuplot hides /usr/local/share/emacs/25.0.50/lisp/org/ob-gnuplot
~/.emacs.d/org-mode/lisp/ob-octave hides /usr/local/share/emacs/25.0.50/lisp/org/ob-octave
~/.emacs.d/org-mode/lisp/ob-screen hides /usr/local/share/emacs/25.0.50/lisp/org/ob-screen
~/.emacs.d/org-mode/lisp/org-table hides /usr/local/share/emacs/25.0.50/lisp/org/org-table
~/.emacs.d/org-mode/lisp/org-gnus hides /usr/local/share/emacs/25.0.50/lisp/org/org-gnus
~/.emacs.d/org-mode/lisp/ox-org hides /usr/local/share/emacs/25.0.50/lisp/org/ox-org
~/.emacs.d/org-mode/lisp/ob-matlab hides /usr/local/share/emacs/25.0.50/lisp/org/ob-matlab
~/.emacs.d/org-mode/lisp/org-irc hides /usr/local/share/emacs/25.0.50/lisp/org/org-irc
~/.emacs.d/org-mode/lisp/ob-ruby hides /usr/local/share/emacs/25.0.50/lisp/org/ob-ruby
~/.emacs.d/org-mode/lisp/ob-java hides /usr/local/share/emacs/25.0.50/lisp/org/ob-java
~/.emacs.d/org-mode/lisp/ob-scala hides /usr/local/share/emacs/25.0.50/lisp/org/ob-scala
~/.emacs.d/org-mode/lisp/ob-picolisp hides /usr/local/share/emacs/25.0.50/lisp/org/ob-picolisp
~/.emacs.d/org-mode/lisp/org-feed hides /usr/local/share/emacs/25.0.50/lisp/org/org-feed
~/.emacs.d/org-mode/lisp/ob-C hides /usr/local/share/emacs/25.0.50/lisp/org/ob-C
~/.emacs.d/org-mode/lisp/ob-calc hides /usr/local/share/emacs/25.0.50/lisp/org/ob-calc
~/.emacs.d/org-mode/lisp/ob-lilypond hides /usr/local/share/emacs/25.0.50/lisp/org/ob-lilypond
~/.emacs.d/org-mode/lisp/org-plot hides /usr/local/share/emacs/25.0.50/lisp/org/org-plot
~/.emacs.d/org-mode/lisp/ob-makefile hides /usr/local/share/emacs/25.0.50/lisp/org/ob-makefile
~/.emacs.d/org-mode/lisp/ob-maxima hides /usr/local/share/emacs/25.0.50/lisp/org/ob-maxima
~/.emacs.d/org-mode/lisp/org-eshell hides /usr/local/share/emacs/25.0.50/lisp/org/org-eshell
~/.emacs.d/org-mode/lisp/org-macro hides /usr/local/share/emacs/25.0.50/lisp/org/org-macro
~/.emacs.d/org-mode/lisp/org-clock hides /usr/local/share/emacs/25.0.50/lisp/org/org-clock
~/.emacs.d/org-mode/lisp/ox-md hides /usr/local/share/emacs/25.0.50/lisp/org/ox-md
~/.emacs.d/org-mode/lisp/org-archive hides /usr/local/share/emacs/25.0.50/lisp/org/org-archive
~/.emacs.d/org-mode/lisp/org-datetree hides /usr/local/share/emacs/25.0.50/lisp/org/org-datetree
~/.emacs.d/org-mode/lisp/org-list hides /usr/local/share/emacs/25.0.50/lisp/org/org-list
~/.emacs.d/org-mode/lisp/org-w3m hides /usr/local/share/emacs/25.0.50/lisp/org/org-w3m
~/.emacs.d/org-mode/lisp/ob-fortran hides /usr/local/share/emacs/25.0.50/lisp/org/ob-fortran
~/.emacs.d/org-mode/lisp/ob-dot hides /usr/local/share/emacs/25.0.50/lisp/org/ob-dot
~/.emacs.d/org-mode/lisp/org-crypt hides /usr/local/share/emacs/25.0.50/lisp/org/org-crypt
~/.emacs.d/org-mode/lisp/org-rmail hides /usr/local/share/emacs/25.0.50/lisp/org/org-rmail
~/.emacs.d/org-mode/lisp/org-protocol hides /usr/local/share/emacs/25.0.50/lisp/org/org-protocol
~/.emacs.d/org-mode/lisp/ox-icalendar hides /usr/local/share/emacs/25.0.50/lisp/org/ox-icalendar
~/.emacs.d/org-mode/lisp/org-bibtex hides /usr/local/share/emacs/25.0.50/lisp/org/org-bibtex
~/.emacs.d/org-mode/lisp/org-pcomplete hides /usr/local/share/emacs/25.0.50/lisp/org/org-pcomplete
~/.emacs.d/org-mode/lisp/ob-eval hides /usr/local/share/emacs/25.0.50/lisp/org/ob-eval
~/.emacs.d/org-mode/lisp/org-element hides /usr/local/share/emacs/25.0.50/lisp/org/org-element
~/.emacs.d/org-mode/lisp/ob-css hides /usr/local/share/emacs/25.0.50/lisp/org/ob-css
~/.emacs.d/org-mode/lisp/org-capture hides /usr/local/share/emacs/25.0.50/lisp/org/org-capture
~/.emacs.d/org-mode/lisp/ox-odt hides /usr/local/share/emacs/25.0.50/lisp/org/ox-odt
~/.emacs.d/org-mode/lisp/ob-js hides /usr/local/share/emacs/25.0.50/lisp/org/ob-js
~/.emacs.d/org-mode/lisp/ob-io hides /usr/local/share/emacs/25.0.50/lisp/org/ob-io
~/.emacs.d/org-mode/lisp/ob-awk hides /usr/local/share/emacs/25.0.50/lisp/org/ob-awk
~/.emacs.d/org-mode/lisp/org-ctags hides /usr/local/share/emacs/25.0.50/lisp/org/org-ctags
~/.emacs.d/org-mode/lisp/org-colview hides /usr/local/share/emacs/25.0.50/lisp/org/org-colview
~/.emacs.d/org-mode/lisp/org-install hides /usr/local/share/emacs/25.0.50/lisp/org/org-install
~/.emacs.d/org-mode/lisp/ob-ledger hides /usr/local/share/emacs/25.0.50/lisp/org/ob-ledger
~/.emacs.d/org-mode/lisp/org-attach hides /usr/local/share/emacs/25.0.50/lisp/org/org-attach
~/.emacs.d/org-mode/lisp/ob-table hides /usr/local/share/emacs/25.0.50/lisp/org/ob-table
~/.emacs.d/org-mode/lisp/ob-sql hides /usr/local/share/emacs/25.0.50/lisp/org/ob-sql
~/.emacs.d/org-mode/lisp/ob-exp hides /usr/local/share/emacs/25.0.50/lisp/org/ob-exp
~/.emacs.d/org-mode/lisp/ob-python hides /usr/local/share/emacs/25.0.50/lisp/org/ob-python
~/.emacs.d/org-mode/lisp/ob-sass hides /usr/local/share/emacs/25.0.50/lisp/org/ob-sass
~/.emacs.d/org-mode/lisp/ox-html hides /usr/local/share/emacs/25.0.50/lisp/org/ox-html
~/.emacs.d/org-mode/lisp/org-entities hides /usr/local/share/emacs/25.0.50/lisp/org/org-entities
~/.emacs.d/org-mode/lisp/ob-clojure hides /usr/local/share/emacs/25.0.50/lisp/org/ob-clojure
~/.emacs.d/org-mode/lisp/ob-shen hides /usr/local/share/emacs/25.0.50/lisp/org/ob-shen
~/.emacs.d/org-mode/lisp/org-docview hides /usr/local/share/emacs/25.0.50/lisp/org/org-docview
~/.emacs.d/org-mode/lisp/ob-keys hides /usr/local/share/emacs/25.0.50/lisp/org/ob-keys
~/.emacs.d/org-mode/lisp/org-id hides /usr/local/share/emacs/25.0.50/lisp/org/org-id
~/.emacs.d/org-mode/lisp/org hides /usr/local/share/emacs/25.0.50/lisp/org/org
~/.emacs.d/org-mode/lisp/org-bbdb hides /usr/local/share/emacs/25.0.50/lisp/org/org-bbdb
~/.emacs.d/org-mode/lisp/ob-comint hides /usr/local/share/emacs/25.0.50/lisp/org/ob-comint
~/.emacs.d/org-mode/lisp/ob-latex hides /usr/local/share/emacs/25.0.50/lisp/org/ob-latex
~/.emacs.d/org-mode/lisp/org-footnote hides /usr/local/share/emacs/25.0.50/lisp/org/org-footnote
~/.emacs.d/org-mode/lisp/ob-mscgen hides /usr/local/share/emacs/25.0.50/lisp/org/ob-mscgen
~/.emacs.d/org-mode/lisp/ox-ascii hides /usr/local/share/emacs/25.0.50/lisp/org/ox-ascii
~/.emacs.d/org-mode/lisp/ob-emacs-lisp hides /usr/local/share/emacs/25.0.50/lisp/org/ob-emacs-lisp
~/.emacs.d/org-mode/lisp/ob-core hides /usr/local/share/emacs/25.0.50/lisp/org/ob-core
~/.emacs.d/org-mode/lisp/ob-haskell hides /usr/local/share/emacs/25.0.50/lisp/org/ob-haskell
~/.emacs.d/org-mode/lisp/org-version hides /usr/local/share/emacs/25.0.50/lisp/org/org-version
~/.emacs.d/org-mode/lisp/org-loaddefs hides /usr/local/share/emacs/25.0.50/lisp/org/org-loaddefs
~/.emacs.d/gnus/lisp/dns hides /usr/local/share/emacs/25.0.50/lisp/net/dns
~/.emacs.d/gnus/lisp/dig hides /usr/local/share/emacs/25.0.50/lisp/net/dig
~/.emacs.d/gnus/lisp/sasl-digest hides /usr/local/share/emacs/25.0.50/lisp/net/sasl-digest
~/.emacs.d/gnus/lisp/netrc hides /usr/local/share/emacs/25.0.50/lisp/net/netrc
~/.emacs.d/gnus/lisp/sasl hides /usr/local/share/emacs/25.0.50/lisp/net/sasl
~/.emacs.d/gnus/lisp/sasl-ntlm hides /usr/local/share/emacs/25.0.50/lisp/net/sasl-ntlm
~/.emacs.d/gnus/lisp/ntlm hides /usr/local/share/emacs/25.0.50/lisp/net/ntlm
~/.emacs.d/gnus/lisp/sasl-cram hides /usr/local/share/emacs/25.0.50/lisp/net/sasl-cram
~/.emacs.d/gnus/lisp/hmac-md5 hides /usr/local/share/emacs/25.0.50/lisp/net/hmac-md5
~/.emacs.d/gnus/lisp/tls hides /usr/local/share/emacs/25.0.50/lisp/net/tls
~/.emacs.d/gnus/lisp/hmac-def hides /usr/local/share/emacs/25.0.50/lisp/net/hmac-def
~/.emacs.d/gnus/lisp/hashcash hides /usr/local/share/emacs/25.0.50/lisp/mail/hashcash
~/.emacs.d/gnus/lisp/uudecode hides /usr/local/share/emacs/25.0.50/lisp/mail/uudecode
~/.emacs.d/gnus/lisp/binhex hides /usr/local/share/emacs/25.0.50/lisp/mail/binhex
~/.emacs.d/gnus/lisp/nndiary hides /usr/local/share/emacs/25.0.50/lisp/gnus/nndiary
~/.emacs.d/gnus/lisp/gnus-vm hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-vm
~/.emacs.d/gnus/lisp/nnspool hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnspool
~/.emacs.d/gnus/lisp/utf7 hides /usr/local/share/emacs/25.0.50/lisp/gnus/utf7
~/.emacs.d/gnus/lisp/rfc2045 hides /usr/local/share/emacs/25.0.50/lisp/gnus/rfc2045
~/.emacs.d/gnus/lisp/nnvirtual hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnvirtual
~/.emacs.d/gnus/lisp/gnus-art hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-art
~/.emacs.d/gnus/lisp/spam-stat hides /usr/local/share/emacs/25.0.50/lisp/gnus/spam-stat
~/.emacs.d/gnus/lisp/rfc1843 hides /usr/local/share/emacs/25.0.50/lisp/gnus/rfc1843
~/.emacs.d/gnus/lisp/gnus-sieve hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-sieve
~/.emacs.d/gnus/lisp/mml-sec hides /usr/local/share/emacs/25.0.50/lisp/gnus/mml-sec
~/.emacs.d/gnus/lisp/nnmh hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnmh
~/.emacs.d/gnus/lisp/gnus-salt hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-salt
~/.emacs.d/gnus/lisp/gnus-gravatar hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-gravatar
~/.emacs.d/gnus/lisp/nnoo hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnoo
~/.emacs.d/gnus/lisp/nnweb hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnweb
~/.emacs.d/gnus/lisp/gnus-dired hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-dired
~/.emacs.d/gnus/lisp/gravatar hides /usr/local/share/emacs/25.0.50/lisp/gnus/gravatar
~/.emacs.d/gnus/lisp/canlock hides /usr/local/share/emacs/25.0.50/lisp/gnus/canlock
~/.emacs.d/gnus/lisp/gnus-bookmark hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-bookmark
~/.emacs.d/gnus/lisp/gnus-agent hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-agent
~/.emacs.d/gnus/lisp/rfc2047 hides /usr/local/share/emacs/25.0.50/lisp/gnus/rfc2047
~/.emacs.d/gnus/lisp/gnus hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus
~/.emacs.d/gnus/lisp/nneething hides /usr/local/share/emacs/25.0.50/lisp/gnus/nneething
~/.emacs.d/gnus/lisp/nnheader hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnheader
~/.emacs.d/gnus/lisp/ecomplete hides /usr/local/share/emacs/25.0.50/lisp/gnus/ecomplete
~/.emacs.d/gnus/lisp/sieve-manage hides /usr/local/share/emacs/25.0.50/lisp/gnus/sieve-manage
~/.emacs.d/gnus/lisp/gnus-picon hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-picon
~/.emacs.d/gnus/lisp/mml2015 hides /usr/local/share/emacs/25.0.50/lisp/gnus/mml2015
~/.emacs.d/gnus/lisp/mml-smime hides /usr/local/share/emacs/25.0.50/lisp/gnus/mml-smime
~/.emacs.d/gnus/lisp/mm-decode hides /usr/local/share/emacs/25.0.50/lisp/gnus/mm-decode
~/.emacs.d/gnus/lisp/nndoc hides /usr/local/share/emacs/25.0.50/lisp/gnus/nndoc
~/.emacs.d/gnus/lisp/auth-source hides /usr/local/share/emacs/25.0.50/lisp/gnus/auth-source
~/.emacs.d/gnus/lisp/mm-encode hides /usr/local/share/emacs/25.0.50/lisp/gnus/mm-encode
~/.emacs.d/gnus/lisp/messcompat hides /usr/local/share/emacs/25.0.50/lisp/gnus/messcompat
~/.emacs.d/gnus/lisp/nnml hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnml
~/.emacs.d/gnus/lisp/html2text hides /usr/local/share/emacs/25.0.50/lisp/gnus/html2text
~/.emacs.d/gnus/lisp/registry hides /usr/local/share/emacs/25.0.50/lisp/gnus/registry
~/.emacs.d/gnus/lisp/nnbabyl hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnbabyl
~/.emacs.d/gnus/lisp/gnus-delay hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-delay
~/.emacs.d/gnus/lisp/gnus-registry hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-registry
~/.emacs.d/gnus/lisp/nndraft hides /usr/local/share/emacs/25.0.50/lisp/gnus/nndraft
~/.emacs.d/gnus/lisp/nnagent hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnagent
~/.emacs.d/gnus/lisp/mml hides /usr/local/share/emacs/25.0.50/lisp/gnus/mml
~/.emacs.d/gnus/lisp/gnus-range hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-range
~/.emacs.d/gnus/lisp/smiley hides /usr/local/share/emacs/25.0.50/lisp/gnus/smiley
~/.emacs.d/gnus/lisp/mail-parse hides /usr/local/share/emacs/25.0.50/lisp/gnus/mail-parse
~/.emacs.d/gnus/lisp/ietf-drums hides /usr/local/share/emacs/25.0.50/lisp/gnus/ietf-drums
~/.emacs.d/gnus/lisp/mm-util hides /usr/local/share/emacs/25.0.50/lisp/gnus/mm-util
~/.emacs.d/gnus/lisp/mm-partial hides /usr/local/share/emacs/25.0.50/lisp/gnus/mm-partial
~/.emacs.d/gnus/lisp/nnir hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnir
~/.emacs.d/gnus/lisp/qp hides /usr/local/share/emacs/25.0.50/lisp/gnus/qp
~/.emacs.d/gnus/lisp/spam-report hides /usr/local/share/emacs/25.0.50/lisp/gnus/spam-report
~/.emacs.d/gnus/lisp/pop3 hides /usr/local/share/emacs/25.0.50/lisp/gnus/pop3
~/.emacs.d/gnus/lisp/mml1991 hides /usr/local/share/emacs/25.0.50/lisp/gnus/mml1991
~/.emacs.d/gnus/lisp/gnus-ems hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-ems
~/.emacs.d/gnus/lisp/gnus-bcklg hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-bcklg
~/.emacs.d/gnus/lisp/gnus-html hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-html
~/.emacs.d/gnus/lisp/nndir hides /usr/local/share/emacs/25.0.50/lisp/gnus/nndir
~/.emacs.d/gnus/lisp/nnmairix hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnmairix
~/.emacs.d/gnus/lisp/yenc hides /usr/local/share/emacs/25.0.50/lisp/gnus/yenc
~/.emacs.d/gnus/lisp/mm-archive hides /usr/local/share/emacs/25.0.50/lisp/gnus/mm-archive
~/.emacs.d/gnus/lisp/mm-url hides /usr/local/share/emacs/25.0.50/lisp/gnus/mm-url
~/.emacs.d/gnus/lisp/gmm-utils hides /usr/local/share/emacs/25.0.50/lisp/gnus/gmm-utils
~/.emacs.d/gnus/lisp/gnus-logic hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-logic
~/.emacs.d/gnus/lisp/gnus-draft hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-draft
~/.emacs.d/gnus/lisp/message hides /usr/local/share/emacs/25.0.50/lisp/gnus/message
~/.emacs.d/gnus/lisp/gnus-group hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-group
~/.emacs.d/gnus/lisp/nnimap hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnimap
~/.emacs.d/gnus/lisp/rfc2231 hides /usr/local/share/emacs/25.0.50/lisp/gnus/rfc2231
~/.emacs.d/gnus/lisp/mail-source hides /usr/local/share/emacs/25.0.50/lisp/gnus/mail-source
~/.emacs.d/gnus/lisp/deuglify hides /usr/local/share/emacs/25.0.50/lisp/gnus/deuglify
~/.emacs.d/gnus/lisp/gnus-notifications hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-notifications
~/.emacs.d/gnus/lisp/gnus-undo hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-undo
~/.emacs.d/gnus/lisp/gnus-cus hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-cus
~/.emacs.d/gnus/lisp/nnmaildir hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnmaildir
~/.emacs.d/gnus/lisp/gnus-diary hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-diary
~/.emacs.d/gnus/lisp/gnus-demon hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-demon
~/.emacs.d/gnus/lisp/mm-view hides /usr/local/share/emacs/25.0.50/lisp/gnus/mm-view
~/.emacs.d/gnus/lisp/gnus-msg hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-msg
~/.emacs.d/gnus/lisp/mm-uu hides /usr/local/share/emacs/25.0.50/lisp/gnus/mm-uu
~/.emacs.d/gnus/lisp/sieve-mode hides /usr/local/share/emacs/25.0.50/lisp/gnus/sieve-mode
~/.emacs.d/gnus/lisp/plstore hides /usr/local/share/emacs/25.0.50/lisp/gnus/plstore
~/.emacs.d/gnus/lisp/mailcap hides /usr/local/share/emacs/25.0.50/lisp/gnus/mailcap
~/.emacs.d/gnus/lisp/spam hides /usr/local/share/emacs/25.0.50/lisp/gnus/spam
~/.emacs.d/gnus/lisp/gnus-spec hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-spec
~/.emacs.d/gnus/lisp/gnus-ml hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-ml
~/.emacs.d/gnus/lisp/gnus-cite hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-cite
~/.emacs.d/gnus/lisp/gnus-util hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-util
~/.emacs.d/gnus/lisp/nnmbox hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnmbox
~/.emacs.d/gnus/lisp/gnus-srvr hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-srvr
~/.emacs.d/gnus/lisp/gnus-async hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-async
~/.emacs.d/gnus/lisp/rfc2104 hides /usr/local/share/emacs/25.0.50/lisp/gnus/rfc2104
~/.emacs.d/gnus/lisp/nngateway hides /usr/local/share/emacs/25.0.50/lisp/gnus/nngateway
~/.emacs.d/gnus/lisp/gnus-topic hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-topic
~/.emacs.d/gnus/lisp/mm-bodies hides /usr/local/share/emacs/25.0.50/lisp/gnus/mm-bodies
~/.emacs.d/gnus/lisp/nntp hides /usr/local/share/emacs/25.0.50/lisp/gnus/nntp
~/.emacs.d/gnus/lisp/gnus-fun hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-fun
~/.emacs.d/gnus/lisp/rtree hides /usr/local/share/emacs/25.0.50/lisp/gnus/rtree
~/.emacs.d/gnus/lisp/nnmail hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnmail
~/.emacs.d/gnus/lisp/mm-extern hides /usr/local/share/emacs/25.0.50/lisp/gnus/mm-extern
~/.emacs.d/gnus/lisp/nnrss hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnrss
~/.emacs.d/gnus/lisp/gnus-cloud hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-cloud
~/.emacs.d/gnus/lisp/nnnil hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnnil
~/.emacs.d/gnus/lisp/gnus-score hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-score
~/.emacs.d/gnus/lisp/gnus-sum hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-sum
~/.emacs.d/gnus/lisp/mail-prsvr hides /usr/local/share/emacs/25.0.50/lisp/gnus/mail-prsvr
~/.emacs.d/gnus/lisp/nnfolder hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnfolder
~/.emacs.d/gnus/lisp/gssapi hides /usr/local/share/emacs/25.0.50/lisp/gnus/gssapi
~/.emacs.d/gnus/lisp/gnus-mh hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-mh
~/.emacs.d/gnus/lisp/legacy-gnus-agent hides /usr/local/share/emacs/25.0.50/lisp/gnus/legacy-gnus-agent
~/.emacs.d/gnus/lisp/sieve hides /usr/local/share/emacs/25.0.50/lisp/gnus/sieve
~/.emacs.d/gnus/lisp/gnus-int hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-int
~/.emacs.d/gnus/lisp/gnus-kill hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-kill
~/.emacs.d/gnus/lisp/gnus-eform hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-eform
~/.emacs.d/gnus/lisp/spam-wash hides /usr/local/share/emacs/25.0.50/lisp/gnus/spam-wash
~/.emacs.d/gnus/lisp/gnus-start hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-start
~/.emacs.d/gnus/lisp/gnus-dup hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-dup
~/.emacs.d/gnus/contrib/compface hides /usr/local/share/emacs/25.0.50/lisp/gnus/compface
~/.emacs.d/gnus/lisp/score-mode hides /usr/local/share/emacs/25.0.50/lisp/gnus/score-mode
~/.emacs.d/gnus/lisp/starttls hides /usr/local/share/emacs/25.0.50/lisp/gnus/starttls
~/.emacs.d/gnus/lisp/smime hides /usr/local/share/emacs/25.0.50/lisp/gnus/smime
~/.emacs.d/gnus/lisp/gnus-sync hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-sync
~/.emacs.d/gnus/lisp/gnus-mlspl hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-mlspl
~/.emacs.d/gnus/lisp/gnus-icalendar hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-icalendar
~/.emacs.d/gnus/lisp/gnus-cache hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-cache
~/.emacs.d/gnus/lisp/gnus-win hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-win
~/.emacs.d/gnus/lisp/nnregistry hides /usr/local/share/emacs/25.0.50/lisp/gnus/nnregistry
~/.emacs.d/gnus/lisp/gnus-uu hides /usr/local/share/emacs/25.0.50/lisp/gnus/gnus-uu
~/.emacs.d/gnus/lisp/flow-fill hides /usr/local/share/emacs/25.0.50/lisp/gnus/flow-fill
/home/eric/.emacs.d/elpa/emms-20141025.1717/tq hides /usr/local/share/emacs/25.0.50/lisp/emacs-lisp/tq
~/.emacs.d/gnus/lisp/time-date hides /usr/local/share/emacs/25.0.50/lisp/calendar/time-date
~/.emacs.d/gnus/lisp/parse-time hides /usr/local/share/emacs/25.0.50/lisp/calendar/parse-time

Features:
(shadow emacsbug helm-command helm-elisp helm-eval bbdb-message
flow-fill gnus-fun gnus-kill gnus-html url-cache mm-url mm-archive
smiley gnus-cite gnus-async gnus-bcklg gnus-dup gnus-ml disp-table
gnus-mlspl qp mail-extr utf-7 nndoc gnutls network-stream starttls
gnus-load gnus-topic gnus-delay gnus-draft gnus-agent gnus-srvr
gnus-score score-mode nnvirtual nntp gnus-cache gnus-msg nndraft nnmh
gnus-icalendar pcase notmuch hl-line notmuch-parser notmuch-message
notmuch-maildir-fcc notmuch-hello notmuch-show notmuch-print
notmuch-crypto notmuch-mua notmuch-address notmuch-wash coolj
notmuch-query goto-addr notmuch-tag notmuch-lib mailalias sendmail
bbdb-gnus bbdb-mua haskell-yas yasnippet paredit flyspell ispell
org-indent org-rmail org-mhe org-irc org-info org-gnus org-docview
doc-view jka-compr image-mode org-bibtex bibtex org-bbdb org-w3m
org-mime org-crypt org-attach vc-git org-id init-modes magit-gh-pulls
gh-pulls gh-repos gh-oauth gh-api logito gh-cache pcache gh-auth
gh-common gh-url url-http url-auth url-gw gh-profile json magit-key-mode
magit view epa derived diff-mode autorevert filenotify git-rebase-mode
git-commit-mode log-edit pcvs-util add-log recentf tree-widget
autoinsert wubi quail help-mode undo-tree diff bbdb-pgp bbdb-vcard vcard
bbdb-anniv bbdb-com crm gnorb-bbdb bbdb bbdb-site timezone bbdb-loaddefs
epg gnus-calendar gnus-calendar-org org-capture ical-event-reply
ical-event icalendar diary-lib diary-loaddefs url-handlers pkgbuild-mode
sh-script smie executable gnorb-registry gnus-registry registry
eieio-base gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnorb-gnus
nngnorb nnir gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap
nnmail mail-source tls utf7 netrc parse-time gnus-spec gnus-int
gnus-range message rfc822 mml mml-sec mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win nnoo gnus gnus-ems gnus-compat nnheader mail-utils
wid-edit gnorb gnorb-org gnorb-utils helm-recoll helm-mode flymake
auto-complete-config auto-complete popup emms-bookmarks emms-cue
emms-mode-line-icon emms-browser sort emms-playlist-sort
emms-last-played emms-player-xine emms-playing-time emms-lyrics
emms-streams emms-tag-editor emms-mark emms-mode-line emms-info-ogginfo
emms-info-mp3info emms-player-vlc emms-player-mplayer emms-volume
emms-volume-amixer emms-playlist-mode emms-player-mpd emms-url
emms-cache emms-info later-do tq emms-source-playlist emms-source-file
locate emms-player-simple emms-setup emms emms-compat helm-projectile
helm-files rx image-dired tramp tramp-compat tramp-loaddefs trampver
dired-x dired-aux ffap helm-tags helm-bookmark helm-adaptive helm-info
helm-net browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util url-parse auth-source
gnus-util mm-util mail-prsvr password-cache url-vars mailcap bookmark pp
helm-help helm-match-plugin helm-external helm-buffers helm-grep
helm-regexp helm-plugin helm-elscreen helm-utils dired helm-locate helm
helm-source helm-config async-bytecomp async helm-aliases projectile
ibuf-ext ibuffer pkg-info lisp-mnt epl grep compile dash s ucs-normalize
thingatpt notifications dbus xml init-my cl-macs my-autoloads init-org
ob-sql ob-gnuplot ob-org ob-ledger ob-plantuml ob-lisp ob-latex ob-shell
shell ob-python ob-R org-mobile org-agenda ox-odt rng-loc rng-uri
rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns
nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html ox-ascii
ox-publish ox org-element avl-tree org advice help-fns org-macro
org-footnote org-pcomplete pcomplete org-list org-faces org-entities
noutline outline easy-mmode org-version ob-emacs-lisp ob ob-tangle
ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint comint
ansi-color ring ob-core ob-eval org-compat org-macs org-loaddefs
format-spec find-func cal-menu calendar cal-loaddefs time paren cl gv
tex-site color-theme-solarized-autoloads color-theme-autoloads
dired-single-autoloads elnode-autoloads db-autoloads esxml-autoloads
fuzzy-autoloads finder-inf edmacro kmacro
highlight-indentation-autoloads iedit-autoloads info easymenu
kv-autoloads eieio byte-opt bytecomp byte-compile cconv eieio-core
cl-loaddefs cl-lib request-autoloads slime-autoloads
twittering-mode-autoloads typing-autoloads typing-practice-autoloads
vcard-autoloads virtualenv-autoloads wget-autoloads xml-rpc-autoloads
package epg-config server time-date china-util tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list newcomment elisp-mode
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 8 2674421 563631)
 (symbols 24 66883 97)
 (miscs 20 11145 7755)
 (strings 16 1132439 296779)
 (string-bytes 1 52760986)
 (vectors 8 127292)
 (vector-slots 4 2781968 89202)
 (floats 8 676 707)
 (intervals 28 79265 748)
 (buffers 520 71)
 (heap 1024 152039 79690))





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#18897: [PATCH] using advice-add
  2014-10-29 23:30 bug#18897: 25.0.50; Use object-print for representing EIEIO objects during edebug Eric Abrahamsen
@ 2014-10-30  2:29 ` Eric Abrahamsen
  2014-10-30  2:30 ` Eric Abrahamsen
  2014-11-01 17:28 ` bug#18897: waiting Eric Abrahamsen
  2 siblings, 0 replies; 12+ messages in thread
From: Eric Abrahamsen @ 2014-10-30  2:29 UTC (permalink / raw)
  To: 18897

[-- Attachment #1: Type: text/plain, Size: 63 bytes --]

Here's a patch that replaces the defalias with an advice-add.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Print-EIEIO-objects-correctly-when-edebugging.patch --]
[-- Type: text/x-diff, Size: 2654 bytes --]

From 6d80c0f46ca471d17415f6f1b5f8881c27f330b6 Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <eric@ericabrahamsen.net>
Date: Wed, 29 Oct 2014 19:24:07 -0700
Subject: [PATCH] Print EIEIO objects correctly when edebugging

* lisp/emacs-lisp/eieio.el (eieio-edebug-prin1-to-string): Modify
  function for use as advice.
  (edebug-setup-hook): Add `eieio-edebug-prin1-to-string' as advice on
  `edebug-prin1-to-string'.

This will prevent objects containing large data structures from
hammering Emacs during pretty-printing.  eieio.el came with controls
for printing EIEIO objects during edebugging sessions, but the
controls weren't hooked up all the way.
---
 lisp/emacs-lisp/eieio.el | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index d7c60dc..543d640 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -853,17 +853,19 @@ of `eq'."
 
 ;;; Interfacing with edebug
 ;;
-(defun eieio-edebug-prin1-to-string (object &optional noescape)
+(defun eieio-edebug-prin1-to-string (print-function object &optional noescape)
   "Display EIEIO OBJECT in fancy format.
-Overrides the edebug default.
-Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate."
+
+Used as advice around `edebug-prin1-to-string', held in the
+variable PRINT-FUNCTION.  Optional argument NOESCAPE is passed to
+`prin1-to-string' when appropriate."
   (cond ((class-p object) (eieio-class-name object))
 	((eieio-object-p object) (object-print object))
 	((and (listp object) (or (class-p (car object))
 				 (eieio-object-p (car object))))
 	 (concat "(" (mapconcat #'eieio-edebug-prin1-to-string object " ")
                  ")"))
-	(t (prin1-to-string object noescape))))
+	(t (funcall print-function object noescape))))
 
 (add-hook 'edebug-setup-hook
 	  (lambda ()
@@ -887,14 +889,8 @@ Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate."
 	    (def-edebug-spec class-constructor form)
 	    (def-edebug-spec generic-p form)
 	    (def-edebug-spec with-slots (list list def-body))
-	    ;; I suspect this isn't the best way to do this, but when
-	    ;; cust-print was used on my system all my objects
-	    ;; appeared as "#1 =" which was not useful.  This allows
-	    ;; edebug to print my objects in the nice way they were
-	    ;; meant to with `object-print' and `class-name'
-	    ;; (defalias 'edebug-prin1-to-string 'eieio-edebug-prin1-to-string)
-	    )
-	  )
+	    (advice-add #'edebug-prin1-to-string
+			:around #'eieio-edebug-prin1-to-string)))
 
 \f
 ;;; Start of automatically extracted autoloads.
-- 
2.1.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* bug#18897: [PATCH] using advice-add
  2014-10-29 23:30 bug#18897: 25.0.50; Use object-print for representing EIEIO objects during edebug Eric Abrahamsen
  2014-10-30  2:29 ` bug#18897: [PATCH] using advice-add Eric Abrahamsen
@ 2014-10-30  2:30 ` Eric Abrahamsen
  2014-10-30  4:04   ` Stefan Monnier
  2014-11-01 17:28 ` bug#18897: waiting Eric Abrahamsen
  2 siblings, 1 reply; 12+ messages in thread
From: Eric Abrahamsen @ 2014-10-30  2:30 UTC (permalink / raw)
  To: 18897

[-- Attachment #1: Type: text/plain, Size: 63 bytes --]

Here's a patch that replaces the defalias with an advice-add.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Print-EIEIO-objects-correctly-when-edebugging.patch --]
[-- Type: text/x-diff, Size: 2654 bytes --]

From 6d80c0f46ca471d17415f6f1b5f8881c27f330b6 Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <eric@ericabrahamsen.net>
Date: Wed, 29 Oct 2014 19:24:07 -0700
Subject: [PATCH] Print EIEIO objects correctly when edebugging

* lisp/emacs-lisp/eieio.el (eieio-edebug-prin1-to-string): Modify
  function for use as advice.
  (edebug-setup-hook): Add `eieio-edebug-prin1-to-string' as advice on
  `edebug-prin1-to-string'.

This will prevent objects containing large data structures from
hammering Emacs during pretty-printing.  eieio.el came with controls
for printing EIEIO objects during edebugging sessions, but the
controls weren't hooked up all the way.
---
 lisp/emacs-lisp/eieio.el | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index d7c60dc..543d640 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -853,17 +853,19 @@ of `eq'."
 
 ;;; Interfacing with edebug
 ;;
-(defun eieio-edebug-prin1-to-string (object &optional noescape)
+(defun eieio-edebug-prin1-to-string (print-function object &optional noescape)
   "Display EIEIO OBJECT in fancy format.
-Overrides the edebug default.
-Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate."
+
+Used as advice around `edebug-prin1-to-string', held in the
+variable PRINT-FUNCTION.  Optional argument NOESCAPE is passed to
+`prin1-to-string' when appropriate."
   (cond ((class-p object) (eieio-class-name object))
 	((eieio-object-p object) (object-print object))
 	((and (listp object) (or (class-p (car object))
 				 (eieio-object-p (car object))))
 	 (concat "(" (mapconcat #'eieio-edebug-prin1-to-string object " ")
                  ")"))
-	(t (prin1-to-string object noescape))))
+	(t (funcall print-function object noescape))))
 
 (add-hook 'edebug-setup-hook
 	  (lambda ()
@@ -887,14 +889,8 @@ Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate."
 	    (def-edebug-spec class-constructor form)
 	    (def-edebug-spec generic-p form)
 	    (def-edebug-spec with-slots (list list def-body))
-	    ;; I suspect this isn't the best way to do this, but when
-	    ;; cust-print was used on my system all my objects
-	    ;; appeared as "#1 =" which was not useful.  This allows
-	    ;; edebug to print my objects in the nice way they were
-	    ;; meant to with `object-print' and `class-name'
-	    ;; (defalias 'edebug-prin1-to-string 'eieio-edebug-prin1-to-string)
-	    )
-	  )
+	    (advice-add #'edebug-prin1-to-string
+			:around #'eieio-edebug-prin1-to-string)))
 
 \f
 ;;; Start of automatically extracted autoloads.
-- 
2.1.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* bug#18897: [PATCH] using advice-add
  2014-10-30  2:30 ` Eric Abrahamsen
@ 2014-10-30  4:04   ` Stefan Monnier
  0 siblings, 0 replies; 12+ messages in thread
From: Stefan Monnier @ 2014-10-30  4:04 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: 18897

> Here's a patch that replaces the defalias with an advice-add.

Looks good, please install.  See comments below.

> * lisp/emacs-lisp/eieio.el (eieio-edebug-prin1-to-string): Modify
>   function for use as advice.

Commit messages describe modifications, so "Modify" is
a redundant verb.  I'd say "Adjust for use as advice".

>   (edebug-setup-hook): Add `eieio-edebug-prin1-to-string' as advice on
>   `edebug-prin1-to-string'.

I'd just say "Advise edebug-prin1-to-string".

> +	    (advice-add #'edebug-prin1-to-string
> +			:around #'eieio-edebug-prin1-to-string)))
 
This will work, but is conceptually wrong.  It should be:

	    (advice-add 'edebug-prin1-to-string
			:around #'eieio-edebug-prin1-to-string)))

The thing that is modified by `advice-add' is the `symbol-function'
field of the `edebug-prin1-to-string' symbol, so the first argument of
advice-add should be a symbol, not a function.


        Stefan





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#18897: waiting
  2014-10-29 23:30 bug#18897: 25.0.50; Use object-print for representing EIEIO objects during edebug Eric Abrahamsen
  2014-10-30  2:29 ` bug#18897: [PATCH] using advice-add Eric Abrahamsen
  2014-10-30  2:30 ` Eric Abrahamsen
@ 2014-11-01 17:28 ` Eric Abrahamsen
  2014-11-01 17:43   ` Eli Zaretskii
  2 siblings, 1 reply; 12+ messages in thread
From: Eric Abrahamsen @ 2014-11-01 17:28 UTC (permalink / raw)
  To: 18897

I forgot we're still on bzr! I'm just going to hold this until we've
switched to git.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#18897: waiting
  2014-11-01 17:28 ` bug#18897: waiting Eric Abrahamsen
@ 2014-11-01 17:43   ` Eli Zaretskii
  2014-11-01 18:51     ` Eric Abrahamsen
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2014-11-01 17:43 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: 18897

> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> Date: Sat, 01 Nov 2014 10:28:24 -0700
> 
> I forgot we're still on bzr! I'm just going to hold this until we've
> switched to git.

You can ask others to install for you, if you don't want doing that
yourself.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#18897: waiting
  2014-11-01 17:43   ` Eli Zaretskii
@ 2014-11-01 18:51     ` Eric Abrahamsen
  2014-11-01 19:48       ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Eric Abrahamsen @ 2014-11-01 18:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 18897

[-- Attachment #1: Type: text/plain, Size: 20 bytes --]

Would you, please?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Print-EIEIO-objects-correctly-when-edebugging.patch --]
[-- Type: text/x-diff, Size: 2601 bytes --]

From 4bde49372005e648031f0fe5de672d867ca4e5ea Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <eric@ericabrahamsen.net>
Date: Thu, 30 Oct 2014 11:08:25 -0700
Subject: [PATCH] Print EIEIO objects correctly when edebugging

* lisp/emacs-lisp/eieio.el (eieio-edebug-prin1-to-string): Adjust for
  use as advice.
  (edebug-setup-hook): Advise `edebug-prin1-to-string'.

This will prevent objects containing large data structures from
hammering Emacs during pretty-printing.  eieio.el came with controls
for printing EIEIO objects during edebugging sessions, but the
controls weren't hooked up all the way.
---
 lisp/emacs-lisp/eieio.el | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index d7c60dc..df2ce0f 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -853,17 +853,19 @@ of `eq'."
 
 ;;; Interfacing with edebug
 ;;
-(defun eieio-edebug-prin1-to-string (object &optional noescape)
+(defun eieio-edebug-prin1-to-string (print-function object &optional noescape)
   "Display EIEIO OBJECT in fancy format.
-Overrides the edebug default.
-Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate."
+
+Used as advice around `edebug-prin1-to-string', held in the
+variable PRINT-FUNCTION.  Optional argument NOESCAPE is passed to
+`prin1-to-string' when appropriate."
   (cond ((class-p object) (eieio-class-name object))
 	((eieio-object-p object) (object-print object))
 	((and (listp object) (or (class-p (car object))
 				 (eieio-object-p (car object))))
 	 (concat "(" (mapconcat #'eieio-edebug-prin1-to-string object " ")
                  ")"))
-	(t (prin1-to-string object noescape))))
+	(t (funcall print-function object noescape))))
 
 (add-hook 'edebug-setup-hook
 	  (lambda ()
@@ -887,14 +889,8 @@ Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate."
 	    (def-edebug-spec class-constructor form)
 	    (def-edebug-spec generic-p form)
 	    (def-edebug-spec with-slots (list list def-body))
-	    ;; I suspect this isn't the best way to do this, but when
-	    ;; cust-print was used on my system all my objects
-	    ;; appeared as "#1 =" which was not useful.  This allows
-	    ;; edebug to print my objects in the nice way they were
-	    ;; meant to with `object-print' and `class-name'
-	    ;; (defalias 'edebug-prin1-to-string 'eieio-edebug-prin1-to-string)
-	    )
-	  )
+	    (advice-add 'edebug-prin1-to-string
+			:around #'eieio-edebug-prin1-to-string)))
 
 \f
 ;;; Start of automatically extracted autoloads.
-- 
2.1.3


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* bug#18897: waiting
  2014-11-01 18:51     ` Eric Abrahamsen
@ 2014-11-01 19:48       ` Eli Zaretskii
  2014-11-01 21:47         ` Eric Abrahamsen
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2014-11-01 19:48 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: 18897

> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> Cc: 18897@debbugs.gnu.org
> Date: Sat, 01 Nov 2014 11:51:58 -0700
> 
> Would you, please?

Trunk or the emacs-24 branch?  I couldn't tell by reading your
discussion with Stefan.






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#18897: waiting
  2014-11-01 19:48       ` Eli Zaretskii
@ 2014-11-01 21:47         ` Eric Abrahamsen
  2014-11-02  3:34           ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Eric Abrahamsen @ 2014-11-01 21:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 18897

I'm not sure, to be honest -- this is my first patch to Emacs proper and
I don't know branch policy. Whichever is less critical...?

On 11/01/14 21:48 PM, Eli Zaretskii wrote:
>> From: Eric Abrahamsen <eric@ericabrahamsen.net>
>> Cc: 18897@debbugs.gnu.org
>> Date: Sat, 01 Nov 2014 11:51:58 -0700
>> 
>> Would you, please?
>
> Trunk or the emacs-24 branch?  I couldn't tell by reading your
> discussion with Stefan.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#18897: waiting
  2014-11-01 21:47         ` Eric Abrahamsen
@ 2014-11-02  3:34           ` Eli Zaretskii
  2014-11-02  4:13             ` Eric Abrahamsen
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2014-11-02  3:34 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: 18897

> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> Cc: 18897@debbugs.gnu.org
> Date: Sat, 01 Nov 2014 14:47:55 -0700
> 
> I'm not sure, to be honest -- this is my first patch to Emacs proper and
> I don't know branch policy. Whichever is less critical...?

Is this a bug or a new feature?  If a bug, is this a regression from
some recent released version, or did Emacs always behaved like that?





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#18897: waiting
  2014-11-02  3:34           ` Eli Zaretskii
@ 2014-11-02  4:13             ` Eric Abrahamsen
  2014-11-02 15:27               ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Eric Abrahamsen @ 2014-11-02  4:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 18897


On 11/02/14 04:34 AM, Eli Zaretskii wrote:
>> From: Eric Abrahamsen <eric@ericabrahamsen.net>
>> Cc: 18897@debbugs.gnu.org
>> Date: Sat, 01 Nov 2014 14:47:55 -0700
>> 
>> I'm not sure, to be honest -- this is my first patch to Emacs proper and
>> I don't know branch policy. Whichever is less critical...?
>
> Is this a bug or a new feature?  If a bug, is this a regression from
> some recent released version, or did Emacs always behaved like that?

It's a new feature -- more precisely, it's the completion of a feature
that was previously only partially implemented.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#18897: waiting
  2014-11-02  4:13             ` Eric Abrahamsen
@ 2014-11-02 15:27               ` Eli Zaretskii
  0 siblings, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2014-11-02 15:27 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: 18897-done

> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> Cc: 18897@debbugs.gnu.org
> Date: Sat, 01 Nov 2014 21:13:38 -0700
> 
> 
> On 11/02/14 04:34 AM, Eli Zaretskii wrote:
> >> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> >> Cc: 18897@debbugs.gnu.org
> >> Date: Sat, 01 Nov 2014 14:47:55 -0700
> >> 
> >> I'm not sure, to be honest -- this is my first patch to Emacs proper and
> >> I don't know branch policy. Whichever is less critical...?
> >
> > Is this a bug or a new feature?  If a bug, is this a regression from
> > some recent released version, or did Emacs always behaved like that?
> 
> It's a new feature -- more precisely, it's the completion of a feature
> that was previously only partially implemented.

OK, committed to the trunk (r118254).

Thanks for working on this.





^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2014-11-02 15:27 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-29 23:30 bug#18897: 25.0.50; Use object-print for representing EIEIO objects during edebug Eric Abrahamsen
2014-10-30  2:29 ` bug#18897: [PATCH] using advice-add Eric Abrahamsen
2014-10-30  2:30 ` Eric Abrahamsen
2014-10-30  4:04   ` Stefan Monnier
2014-11-01 17:28 ` bug#18897: waiting Eric Abrahamsen
2014-11-01 17:43   ` Eli Zaretskii
2014-11-01 18:51     ` Eric Abrahamsen
2014-11-01 19:48       ` Eli Zaretskii
2014-11-01 21:47         ` Eric Abrahamsen
2014-11-02  3:34           ` Eli Zaretskii
2014-11-02  4:13             ` Eric Abrahamsen
2014-11-02 15:27               ` Eli Zaretskii

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).