From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Helmut Eller Newsgroups: gmane.emacs.devel Subject: Re: Debugging functions with lexical-binding Date: Tue, 31 May 2011 09:11:11 +0200 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: dough.gmane.org 1306825894 16752 80.91.229.12 (31 May 2011 07:11:34 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 31 May 2011 07:11:34 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue May 31 09:11:31 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QRJ6v-00049R-MA for ged-emacs-devel@m.gmane.org; Tue, 31 May 2011 09:11:29 +0200 Original-Received: from localhost ([::1]:36365 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QRJ6v-0007ti-56 for ged-emacs-devel@m.gmane.org; Tue, 31 May 2011 03:11:29 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:51155) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QRJ6s-0007ta-Ii for emacs-devel@gnu.org; Tue, 31 May 2011 03:11:27 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QRJ6r-0000u3-Gz for emacs-devel@gnu.org; Tue, 31 May 2011 03:11:26 -0400 Original-Received: from lo.gmane.org ([80.91.229.12]:37688) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QRJ6r-0000tj-84 for emacs-devel@gnu.org; Tue, 31 May 2011 03:11:25 -0400 Original-Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1QRJ6q-00048W-5H for emacs-devel@gnu.org; Tue, 31 May 2011 09:11:24 +0200 Original-Received: from 212.46.177.84 ([212.46.177.84]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 31 May 2011 09:11:24 +0200 Original-Received: from eller.helmut by 212.46.177.84 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 31 May 2011 09:11:24 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 74 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 212.46.177.84 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) Cancel-Lock: sha1:ckyEaYB+1eDDi+EeoAWcifGOITQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 80.91.229.12 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:139936 Archived-At: --=-=-= Content-Type: text/plain * Stefan Monnier [2011-05-30 04:13] writes: >> What are the commands to inspect local variables of lexical functions? > > M-x esp RET That's too cryptic for me. What do you mean? >> Pressing C-M-c reduces one level of recursive edit but puts the >> *Backtrace* buffer in fundamental-mode which is IMO also wrong.] > > Yup, the *Backtrace* buffer's content and major-mode are not properly > saved&restored upon entry to and exit from the debugger. Patch welcome, Below is a simple patch. It only restores the content but not buffer local variables. Helmut --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=debug.patch === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-05-30 12:23:56 +0000 +++ lisp/ChangeLog 2011-05-31 07:08:41 +0000 @@ -1,3 +1,11 @@ +2011-05-31 Helmut Eller + + Try to deal with recursive debuggers and C-M-c. + + * debug.el (debug): Restore the previous content of the + *Backtrace* buffer when we exit with C-M-c. Restoring buffer + local variables would be annoyingly difficult. + 2011-05-30 Leo Liu * net/rcirc.el (rcirc-debug-buffer): Use visible buffer name. === modified file 'lisp/emacs-lisp/debug.el' --- lisp/emacs-lisp/debug.el 2011-03-20 03:53:45 +0000 +++ lisp/emacs-lisp/debug.el 2011-05-31 06:45:28 +0000 @@ -120,6 +120,7 @@ (debug-on-quit nil) (debugger-buffer (get-buffer-create "*Backtrace*")) (debugger-old-buffer (current-buffer)) + (debugger-previous-contents nil) (debugger-step-after-exit nil) (debugger-will-be-back nil) ;; Don't keep reading from an executing kbd macro! @@ -181,6 +182,7 @@ (when (eq 'lambda (car-safe (cadr (backtrace-frame 4)))) (backtrace-debug 5 t))) (pop-to-buffer debugger-buffer) + (setq debugger-previous-contents (buffer-string)) (debugger-mode) (debugger-setup-buffer debugger-args) (when noninteractive @@ -215,7 +217,7 @@ ;; erase it (and maybe hide it) but keep it alive. (with-current-buffer debugger-buffer (erase-buffer) - (fundamental-mode) + (insert debugger-previous-contents) (with-selected-window (get-buffer-window debugger-buffer 0) (when (and (window-dedicated-p (selected-window)) (not debugger-will-be-back)) --=-=-=--