[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
scratch/memrep ea5d63d 2/3: Add buttons for the buffers
From: |
Lars Ingebrigtsen |
Subject: |
scratch/memrep ea5d63d 2/3: Add buttons for the buffers |
Date: |
Thu, 10 Dec 2020 20:37:51 -0500 (EST) |
branch: scratch/memrep
commit ea5d63d7a7b83d3644a423e60c78c58d748b8db1
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Add buttons for the buffers
---
lisp/emacs-lisp/memory-report.el | 61 ++++++++++++++++++++++++++--------------
1 file changed, 40 insertions(+), 21 deletions(-)
diff --git a/lisp/emacs-lisp/memory-report.el b/lisp/emacs-lisp/memory-report.el
index 8960118..f2ea80f 100644
--- a/lisp/emacs-lisp/memory-report.el
+++ b/lisp/emacs-lisp/memory-report.el
@@ -31,6 +31,7 @@
(interactive)
(pop-to-buffer "*Memory-Report*")
(special-mode)
+ (button-mode 1)
(setq truncate-lines t)
(message "Gathering data...")
(let ((reports (append (memory-report--garbage-collect)
@@ -52,9 +53,7 @@
(car summary))))
(insert "\n")
(dolist (detail (nreverse details))
- (insert detail "\n"))
- ;;(add-face-text-property (point-min) (point) 'variable-pitch)
- )
+ (insert detail "\n")))
(goto-char (point-min)))
(defun memory-report-object-size (object)
@@ -224,29 +223,49 @@
buffers)
do (insert (memory-report--format size)
" "
- (buffer-name buffer)
+ (propertize
+ (buffer-name buffer)
+ 'face 'button
+ 'button t
+ 'follow-link t
+ 'category t
+ 'button-data buffer
+ 'keymap button-map
+ 'action #'memory-report--buffer-details)
"\n"))
(buffer-string)))))
+(defun memory-report--buffer-details (buffer)
+ (with-current-buffer buffer
+ (apply
+ #'message
+ "Buffer text: %s; local variables: %s; text properties: %s; overlays: %s"
+ (mapcar
+ #'string-trim (mapcar #'memory-report--format
+ (memory-report--buffer-data buffer))))))
+
(defun memory-report--buffer (buffer)
+ (seq-reduce #'+ (memory-report--buffer-data buffer) 0))
+
+(defun memory-report--buffer-data (buffer)
(with-current-buffer buffer
- (+ (save-restriction
- (widen)
- (+ (position-bytes (point-max))
- (- (position-bytes (point-min)))
- (gap-size)))
- (seq-reduce #'+ (mapcar (lambda (elem)
- (if (cdr elem)
- (memory-report--object-size
- (make-hash-table :test #'eq)
- (cdr elem))
- 0))
- (buffer-local-variables buffer))
- 0)
- (memory-report--object-size (make-hash-table :test #'eq)
- (object-intervals buffer))
- (memory-report--object-size (make-hash-table :test #'eq)
- (overlay-lists)))))
+ (list (save-restriction
+ (widen)
+ (+ (position-bytes (point-max))
+ (- (position-bytes (point-min)))
+ (gap-size)))
+ (seq-reduce #'+ (mapcar (lambda (elem)
+ (if (cdr elem)
+ (memory-report--object-size
+ (make-hash-table :test #'eq)
+ (cdr elem))
+ 0))
+ (buffer-local-variables buffer))
+ 0)
+ (memory-report--object-size (make-hash-table :test #'eq)
+ (object-intervals buffer))
+ (memory-report--object-size (make-hash-table :test #'eq)
+ (overlay-lists)))))
(defun memory-report--image-cache ()
(list (cons "Total Image Cache Size" (image-cache-size))))