From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Nick Roberts Newsgroups: gmane.emacs.devel Subject: Re: Toolbar problems with GDB mode. Date: Fri, 10 Jan 2003 21:55:43 +0000 Sender: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Message-ID: <15903.16735.562173.992860@nick.uklinux.net> References: <15899.24801.160084.755641@nick.uklinux.net> NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: main.gmane.org 1042236021 15839 80.91.224.249 (10 Jan 2003 22:00:21 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Fri, 10 Jan 2003 22:00:21 +0000 (UTC) Cc: emacs-devel@gnu.org Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 18X7CH-00046q-00 for ; Fri, 10 Jan 2003 23:00:13 +0100 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.12 #1 (Debian)) id 18X7IU-0003yB-00 for ; Fri, 10 Jan 2003 23:06:38 +0100 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10.13) id 18X7Cw-00049x-00 for emacs-devel@quimby.gnus.org; Fri, 10 Jan 2003 17:00:54 -0500 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10.13) id 18X7Be-0003PZ-00 for emacs-devel@gnu.org; Fri, 10 Jan 2003 16:59:34 -0500 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10.13) id 18X7B6-0002yB-00 for emacs-devel@gnu.org; Fri, 10 Jan 2003 16:59:01 -0500 Original-Received: from bts-0652.dialup.zetnet.co.uk ([194.247.50.140] helo=nick.uklinux.net) by monty-python.gnu.org with esmtp (Exim 4.10.13) id 18X7Av-0002nl-00 for emacs-devel@gnu.org; Fri, 10 Jan 2003 16:58:50 -0500 Original-Received: by nick.uklinux.net (Postfix, from userid 501) id 6BBB976037; Fri, 10 Jan 2003 21:55:43 +0000 (GMT) Original-To: "Jan D." In-Reply-To: X-Mailer: VM 6.97 under Emacs 21.3.50.3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1b5 Precedence: list List-Id: Emacs development discussions. List-Help: List-Post: List-Subscribe: , List-Archive: List-Unsubscribe: , Errors-To: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Xref: main.gmane.org gmane.emacs.devel:10636 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:10636 > Actually it does make sense. To reconnect to an embedded target, it is > convinient to quit the debugger and later restart it. If one is > debugging something difficult, keeping output from previous sessions > in the gdb buffer is helpful. > > Note, it is usually not a quit followed directly after a restart, > but rather quit, edit some files, compile, upload new loadmodule to > the target, reboot the target, restart debugger. > > Can't you both have it in a buffer delete hook and in the sentinel? I can use a local kill-buffer-hook to record gud-minor-mode type and then reset things in gud-sentinel. This seems to do everything you want. I will install these changes unless someone objects. Nick gdb-ui.el - (gdb-quit) Remove. (gdb-reset) New function. (defun gdb-reset () "Exit a debugging session cleanly by killing the gdb buffers and resetting the source buffers." (gdb-delete-frames '()) (dolist (buffer (buffer-list)) (if (not (eq buffer gud-comint-buffer)) (save-excursion (set-buffer buffer) (if (eq gud-minor-mode 'gdba) (if (string-match "^\*.+*$" (buffer-name)) (kill-buffer nil) (if (display-graphic-p) (remove-images (point-min) (point-max)) (remove-strings (point-min) (point-max))) (setq left-margin-width 0) (setq gud-minor-mode nil) (kill-local-variable 'tool-bar-map) (setq gud-running nil) (if (get-buffer-window (current-buffer)) (set-window-margins (get-buffer-window (current-buffer)) left-margin-width right-margin-width)))))))) gud.el - (gud-sentinel) Reset buffers. (gud-reset) New function. (gud-kill-buffer-hook) New function. --- gud.el.~1.170.~ Sun Dec 22 00:01:30 2002 +++ gud.el Fri Jan 10 21:36:06 2003 @@ -2427,10 +2427,17 @@ ;; buffer killed ;; Stop displaying an arrow in a source file. (setq overlay-arrow-position nil) - (set-process-buffer proc nil)) + (set-process-buffer proc nil) + (if (eq gud-minor-mode-type 'gdba) + (gdb-reset) + (gud-reset))) ((memq (process-status proc) '(signal exit)) ;; Stop displaying an arrow in a source file. (setq overlay-arrow-position nil) + (with-current-buffer gud-comint-buffer + (if (eq gud-minor-mode 'gdba) + (gdb-reset) + (gud-reset))) (let* ((obuf (current-buffer))) ;; save-excursion isn't the right thing if ;; process-buffer is current-buffer @@ -2455,6 +2462,23 @@ ;; Restore old buffer, but don't restore old point ;; if obuf is the gud buffer. (set-buffer obuf)))))) + +(defvar gud-minor-mode-type nil) + +(defun gud-kill-buffer-hook () + (if gud-minor-mode + (setq gud-minor-mode-type gud-minor-mode))) + +(add-hook 'kill-buffer-hook 'gud-kill-buffer-hook) + +(defun gud-reset () + (dolist (buffer (buffer-list)) + (if (not (eq buffer gud-comint-buffer)) + (save-excursion + (set-buffer buffer) + (when gud-minor-mode + (setq gud-minor-mode nil) + (kill-local-variable 'tool-bar-map)))))) (defun gud-display-frame () "Find and obey the last filename-and-line marker from the debugger.