From 5db81e33629049da22e7d0ff6c28a5cae31edac9 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Thu, 19 Jul 2012 07:39:38 -0400 Subject: [PATCH] * lisp/emacs-lisp/chart.el: Use lexical-binding. (chart-emacs-storage): Don't hardcode the list of entries. * src/alloc.c (Fgarbage_collect): Tweak docstring. --- lisp/ChangeLog | 5 +++++ lisp/emacs-lisp/chart.el | 38 ++++++++++---------------------------- src/ChangeLog | 4 ++++ src/alloc.c | 19 ++++++++----------- src/xmenu.c | 14 ++++++-------- 5 files changed, 33 insertions(+), 47 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 12186c7bef7..170982d724e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-07-19 Stefan Monnier + + * emacs-lisp/chart.el: Use lexical-binding. + (chart-emacs-storage): Don't hardcode the list of entries. + 2012-07-19 Dmitry Antipov Next round of tweaks caused by Fgarbage_collect changes. diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el index 1451e1a2af4..31aeb1f8076 100644 --- a/lisp/emacs-lisp/chart.el +++ b/lisp/emacs-lisp/chart.el @@ -1,4 +1,4 @@ -;;; chart.el --- Draw charts (bar charts, etc) +;;; chart.el --- Draw charts (bar charts, etc) -*- lexical-binding: t -*- ;; Copyright (C) 1996, 1998-1999, 2001, 2004-2005, 2007-2012 ;; Free Software Foundation, Inc. @@ -156,7 +156,7 @@ Returns the newly created buffer." ) "Superclass for all charts to be displayed in an Emacs buffer.") -(defmethod initialize-instance :AFTER ((obj chart) &rest fields) +(defmethod initialize-instance :AFTER ((obj chart) &rest _fields) "Initialize the chart OBJ being created with FIELDS. Make sure the width/height is correct." (oset obj x-width (- (window-width) 10)) @@ -276,7 +276,7 @@ START and END represent the boundary." (float (- (cdr range) (car range))))))))) ) -(defmethod chart-axis-draw ((a chart-axis-range) &optional dir margin zone start end) +(defmethod chart-axis-draw ((a chart-axis-range) &optional dir margin zone _start _end) "Draw axis information based upon a range to be spread along the edge. A is the chart to draw. DIR is the direction. MARGIN, ZONE, START, and END specify restrictions in chart space." @@ -329,7 +329,7 @@ Automatically compensates for direction." (+ m -1 (round (* lpn (+ 1.0 (float n)))))) )) -(defmethod chart-axis-draw ((a chart-axis-names) &optional dir margin zone start end) +(defmethod chart-axis-draw ((a chart-axis-names) &optional dir margin zone _start _end) "Draw axis information based upon A range to be spread along the edge. Optional argument DIR is the direction of the chart. Optional arguments MARGIN, ZONE, START and END specify boundaries of the drawing." @@ -675,32 +675,14 @@ SORT-PRED if desired." (defun chart-emacs-storage () "Chart the current storage requirements of Emacs." (interactive) - (let* ((data (garbage-collect)) - (cons-info (nth 0 data)) - (symbol-info (nth 1 data)) - (misc-info (nth 2 data)) - (string-info (nth 3 data)) - (string-bytes-info (nth 4 data)) - ;; (nth 5 data) is not used - (vector-slots-info (nth 6 data)) - (float-info (nth 7 data)) - (interval-info (nth 8 data)) - (buffer-info (nth 9 data)) - (names '("conses" "symbols" "miscs" "strings" - "vectors" "floats" "intervals" "buffers")) - (nums (list (* (nth 1 cons-info) (nth 2 cons-info)) - (* (nth 1 symbol-info) (nth 2 symbol-info)) - (* (nth 1 misc-info) (nth 2 misc-info)) - (+ (* (nth 1 string-info) (nth 2 string-info)) - (nth 2 string-bytes-info)) - (* (nth 1 vector-slots-info) (nth 2 vector-slots-info)) - (* (nth 1 float-info) (nth 2 float-info)) - (* (nth 1 interval-info) (nth 2 interval-info)) - (* (nth 1 buffer-info) (nth 2 buffer-info))))) + (let* ((data (garbage-collect))) ;; Let's create the chart! (chart-bar-quickie 'vertical "Emacs Runtime Storage Usage" - names "Storage Items" - nums "Objects"))) + (mapcar (lambda (x) (symbol-name (car x))) data) + "Storage Items" + (mapcar (lambda (x) (* (nth 1 x) (nth 2 x))) + data) + "Bytes"))) (defun chart-emacs-lists () "Chart out the size of various important lists." diff --git a/src/ChangeLog b/src/ChangeLog index 517d61c4e40..8a60e0bdabe 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-07-19 Stefan Monnier + + * alloc.c (Fgarbage_collect): Tweak docstring. + 2012-07-19 Dmitry Antipov Tweak the value returned from Fgarbage_collect again. diff --git a/src/alloc.c b/src/alloc.c index c52b0475352..d24787576e9 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -5378,17 +5378,14 @@ DEFUN ("garbage-collect", Fgarbage_collect, Sgarbage_collect, 0, 0, "", doc: /* Reclaim storage for Lisp objects no longer needed. Garbage collection happens automatically if you cons more than `gc-cons-threshold' bytes of Lisp data since previous garbage collection. -`garbage-collect' normally returns a list with info on amount of space in use: - ((CONS INTERNAL-SIZE USED-CONSES FREE-CONSES) - (SYMBOL INTERNAL-SIZE USED-SYMBOLS FREE-SYMBOLS) - (MISC INTERNAL-SIZE USED-MISCS FREE-MISCS) - (STRING INTERNAL-SIZE USED-STRINGS FREE-STRING) - (STRING-BYTES 1 USED-STRING-BYTES) - (VECTOR INTERNAL-SIZE USED-VECTORS) - (VECTOR-SLOTS INTERNAL-SIZE USED-VECTOR-SLOTS FREE-VECTOR-SLOTS) - (FLOAT INTERNAL-SIZE USED-FLOATS FREE-FLOATS) - (INTERVAL INTERNAL-SIZE USED-INTERVALS FREE-INTERVALS) - (BUFFER INTERNAL-SIZE USED-BUFFERS)) +`garbage-collect' normally returns a list with info on amount of space in use, +where each entry has the form (NAME SIZE USED FREE), where: +- NAME is a symbol describing the kind of objects this entry represents, +- SIZE is the number of bytes used by each one, +- USED is the number of those objects that were found live in the heap, +- FREE is the number of those objects that are not live but that Emacs + keeps around for future allocations (maybe because it does not know how + to return them to the OS). However, if there was overflow in pure space, `garbage-collect' returns nil, because real GC can't be done. See Info node `(elisp)Garbage Collection'. */) diff --git a/src/xmenu.c b/src/xmenu.c index 61e3e3632b0..c7ec3dc3171 100644 --- a/src/xmenu.c +++ b/src/xmenu.c @@ -679,19 +679,17 @@ popup_activate_callback (Widget widget, LWLIB_ID id, XtPointer client_data) /* This callback is invoked when a dialog or menu is finished being used and has been unposted. */ -#ifdef USE_GTK static void -popup_deactivate_callback (GtkWidget *widget, gpointer client_data) -{ - popup_activated_flag = 0; -} +popup_deactivate_callback ( +#ifdef USE_GTK + GtkWidget *widget, gpointer client_data #else -static void -popup_deactivate_callback (Widget widget, LWLIB_ID id, XtPointer client_data) + Widget widget, LWLIB_ID id, XtPointer client_data +#endif + ) { popup_activated_flag = 0; } -#endif /* Function that finds the frame for WIDGET and shows the HELP text -- 2.11.4.GIT