[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dict-tree 0ef5b58 078/154: Revert "Replaced advice with
From: |
Stefan Monnier |
Subject: |
[elpa] externals/dict-tree 0ef5b58 078/154: Revert "Replaced advice with cedet-edebug.el for pretty-printing" |
Date: |
Mon, 14 Dec 2020 12:21:48 -0500 (EST) |
branch: externals/dict-tree
commit 0ef5b5892bbdf3c63af5a1aa2500d119e731480f
Author: Toby S. Cubitt <toby-predictive@dr-qubit.org>
Commit: Toby S. Cubitt <toby-predictive@dr-qubit.org>
Revert "Replaced advice with cedet-edebug.el for pretty-printing"
This reverts commit 5e3702f1a02de5594bcd5cd363e399e3020b6302.
---
dict-tree.el | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 71 insertions(+), 9 deletions(-)
diff --git a/dict-tree.el b/dict-tree.el
index 6d5ad4d..2278866 100644
--- a/dict-tree.el
+++ b/dict-tree.el
@@ -3345,27 +3345,89 @@ extension, suitable for passing to `load-library'."
;; ----------------------------------------------------------------
;; Pretty-print dictionaries during edebug
-;; We use `cedet-edebug-add-print-override' from cedet-edebug.el to make
-;; edebug print "#<dict-tree NAME>" instead of the full print form for
-;; dictionaries. (This is cleaner than using aliases or advice.)
+;; We advise the `edebug-prin1' and `edebug-prin1-to-string' functions
+;; (actually, aliases) so that they pring "#<dict-tree NAME>" instead of
+;; the full print form for dictionaries.
;;
;; This is because, if left to its own devices, edebug hangs for ages
;; whilst printing large dictionaries, and you either have to wait for a
;; *very* long time for it to finish, or kill Emacs entirely. (Even C-g
-;; C-g fails!) Since the print form of a dictionary is practically
-;; incomprehensible anyway, we don't lose much by doing this.
+;; C-g fails!)
+;;
+;; Since the print form of a dictionary is practically incomprehensible
+;; anyway, we don't lose much by doing this. If you *really* want to
+;; print dictionaries in full whilst edebugging, despite this warning,
+;; disable the advice.
+;;
+;; FIXME: Should use `cedet-edebug-prin1-extensions' instead of advice
+;; when `cedet-edebug' is loaded, though I believe this still
+;; works in that case.
-(require 'cedet-edebug)
-(defun dictree-pretty-print (dict)
- (concat "#<dict-tree \"" (dictree--name dict) "\">"))
+(eval-when-compile
+ (require 'edebug)
+ (require 'advice))
-(cedet-edebug-add-print-override 'dictree-p 'dictree-pretty-print)
+
+(defun dictree--edebug-pretty-print (object)
+ (cond
+ ((dictree-p object)
+ (concat "#<dict-tree \"" (dictree-name object) "\">"))
+ ((consp object)
+ (if (consp (cdr object))
+ (let ((pretty "("))
+ (while object
+ (setq pretty
+ (concat pretty
+ (dictree--edebug-pretty-print
+ (if (atom object)
+ (prog1
+ (dictree--edebug-pretty-print object)
+ (setq object nil))
+ (pop object)))
+ (when object " "))))
+ (concat pretty ")"))
+ (concat "(" (dictree--edebug-pretty-print (car object))
+ " . " (dictree--edebug-pretty-print (cdr object)) ")")))
+ ((vectorp object)
+ (let ((pretty "[") (len (length object)))
+ (dotimes (i (1- len))
+ (setq pretty
+ (concat pretty
+ (dictree--edebug-pretty-print (aref object i))
+ " ")))
+ (concat pretty
+ (dictree--edebug-pretty-print (aref object (1- len)))
+ "]")))
+ (t (prin1-to-string object))))
+
+
+(ad-define-subr-args 'edebug-prin1 '(object &optional printcharfun))
+
+(defadvice edebug-prin1
+ (around dictree activate compile preactivate)
+ (let ((pretty (dictree--edebug-pretty-print object)))
+ (if pretty
+ (progn
+ (prin1 pretty printcharfun)
+ (setq ad-return-value pretty))
+ ad-do-it)))
+
+
+(ad-define-subr-args 'edebug-prin1-to-string '(object &optional noescape))
+
+(defadvice edebug-prin1-to-string
+ (around dictree activate compile preactivate)
+ (let ((pretty (dictree--edebug-pretty-print object)))
+ (if pretty
+ (setq ad-return-value pretty)
+ ad-do-it)))
(provide 'dict-tree)
+
;;; Local Variables:
;;; fill-column: 72
;;; End:
- [elpa] externals/dict-tree eccfe92 047/154: Bug fix in dictree--do-query, (continued)
- [elpa] externals/dict-tree eccfe92 047/154: Bug fix in dictree--do-query, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree f6e9ba1 054/154: Added optional RESULTFUN argument to trie query functions,, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree a07802a 057/154: Bug-fix to dictree-load, which was screwing around with dictree-file data, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree f4aa81c 059/154: Disable caching for unnamed meta-dicts, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree b6175f6 058/154: Bug-fix to meta-dicts: don't add them to meta-dict-lists of constituent lists if caching is disabled,, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree d31ddac 065/154: Bug-fixes to meta-dictionary handling, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree c553822 066/154: Small bug-fix in dictree--do-query, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 15ca12e 069/154: Re-filled to 72 chars/line, for mailing to gnu-emacs-sources list, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree dca8bcd 070/154: Advised edebug-prin1 and edebug-prin1-to-string to prevent edebug hanging, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 5f549f0 073/154: Bug-fixes to dictree--write-meta-dict-code, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 0ef5b58 078/154: Revert "Replaced advice with cedet-edebug.el for pretty-printing",
Stefan Monnier <=
- [elpa] externals/dict-tree df22e8e 074/154: Bug-fixes to edebug advice, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 3794988 079/154: Simplified advice-based edebug pretty-printing of tries and dictionaries., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 238fd6b 082/154: Fixed bug in dictree--merge that caused one too many completions to be cached., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree a256974 086/154: Minor typo-fixes in docstrings., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree d6ea2b5 088/154: Fixed interactive argument handling in predictive-fast-learn-from-buffer., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 39ace6f 094/154: Added autoload cookies., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree a1bff31 096/154: Trivial whitespace tidying., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree e752b53 101/154: Accept symbols for dictionary arguments., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 8aa6047 106/154: Suppress bogus unused lexical variable byte-compiler warnings., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 4b3cc3c 122/154: Do lexbind test at compile-time instead of load-time., Stefan Monnier, 2020/12/14