From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Yuan Fu Newsgroups: gmane.emacs.bugs Subject: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display Date: Sun, 29 Mar 2020 13:27:12 -0400 Message-ID: References: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_8EEA5C3C-3A5E-44FC-893D-64FF9D77E96C" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="101179"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 40268@debbugs.gnu.org To: martin rudalics Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Mar 29 19:28:12 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jIbjI-000QG2-In for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 29 Mar 2020 19:28:12 +0200 Original-Received: from localhost ([::1]:39844 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jIbjH-0006TZ-KX for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 29 Mar 2020 13:28:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51478) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jIbj9-0006TJ-61 for bug-gnu-emacs@gnu.org; Sun, 29 Mar 2020 13:28:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jIbj8-0003NL-94 for bug-gnu-emacs@gnu.org; Sun, 29 Mar 2020 13:28:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:48142) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jIbj8-0003N0-0x for bug-gnu-emacs@gnu.org; Sun, 29 Mar 2020 13:28:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jIbj7-0008B4-Te for bug-gnu-emacs@gnu.org; Sun, 29 Mar 2020 13:28:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Yuan Fu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 29 Mar 2020 17:28:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40268 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 40268-submit@debbugs.gnu.org id=B40268.158550284231375 (code B ref 40268); Sun, 29 Mar 2020 17:28:01 +0000 Original-Received: (at 40268) by debbugs.gnu.org; 29 Mar 2020 17:27:22 +0000 Original-Received: from localhost ([127.0.0.1]:59685 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jIbiU-00089z-LO for submit@debbugs.gnu.org; Sun, 29 Mar 2020 13:27:22 -0400 Original-Received: from mail-qk1-f180.google.com ([209.85.222.180]:36398) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jIbiS-00089m-0P for 40268@debbugs.gnu.org; Sun, 29 Mar 2020 13:27:20 -0400 Original-Received: by mail-qk1-f180.google.com with SMTP id d11so16596963qko.3 for <40268@debbugs.gnu.org>; Sun, 29 Mar 2020 10:27:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=pC/u0NoN9+jfOktz0YF3/uWOtrmsn+48/bGaFwRwUT0=; b=HolT2qgRCD2zZR/k0don54UJ0nsZoFzrcAfP8P4Jn34afvcQkbZ5Jj608EztecJjQD uHUZRwY3/Ynem1QqJ6g82UEZ2/srBP0f7vRwsUTjV4Ul8A2IZCuDQ8AdBdA+IA1utC8z qAbo+a8Rr2hsjM+tXx8vLTe2CBcQlEeCmUkYq6GTgmXyq0w/nhB2jbVk4bkwlZ6RFPU3 s0pyIOIhsMBzmkQpQI64porFu37FtrjlnLTjv6zjkpaZdixuRDJUdrdNpdsp/tt4YGEU KSU9bH9O6i9ANzufw6R8RGkualcx9VSUYg6KK5PjpJklatUzOslY88QUcmHJizx8BPfL 5YoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=pC/u0NoN9+jfOktz0YF3/uWOtrmsn+48/bGaFwRwUT0=; b=sYhfiSvNHFHJdI7in+Rrh3xzcivYO0qi50Ot213bIkbcsyOyafXpmLVbabCWkAROSA 8DMWE7S7F3CyzfCyvp1Ye8S3srliFCm+jXXYRjmlHbujlD+b1mlciQ2AZ3RHSo9RmetF Mann6NHDvaJKnT463KB2rznHAtPaiPk3EhguhbzUCgy80jxKgtShxdytvbFhTmIuPCtD x/PExq7kHY71Ieb1GxoGiPsQ6aI36FJqoimmoC4MS8d0ntrhp7ilN+EkYUHlSJQyodtb dT9HnoHMNKFzjzsR1AMesEde5bk6zhmY/pIX9SETFNWZ6PIAIvNciBOg2OK6BeA9LOWo AWyg== X-Gm-Message-State: ANhLgQ1vM7d5lu2XWGmVH7W1MLzGTKT1TomxFvbbrWjbM0DTLH3lyTTT gsYp+7daz4PPtFcxJckrJ8Y= X-Google-Smtp-Source: ADFU+vsZFSIuz0nGopH2xVV9OO8V7G4L9roLPujjX6dh8VVesgGs5HnGcrGKrwvRMJiUrZl5jCHOlA== X-Received: by 2002:a37:6311:: with SMTP id x17mr8581659qkb.93.1585502834247; Sun, 29 Mar 2020 10:27:14 -0700 (PDT) Original-Received: from [192.168.1.5] (c-174-60-229-153.hsd1.pa.comcast.net. [174.60.229.153]) by smtp.gmail.com with ESMTPSA id f14sm6857782qtp.55.2020.03.29.10.27.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Mar 2020 10:27:13 -0700 (PDT) In-Reply-To: X-Mailer: Apple Mail (2.3608.80.23.2.2) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:177826 Archived-At: --Apple-Mail=_8EEA5C3C-3A5E-44FC-893D-64FF9D77E96C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Mar 29, 2020, at 5:01 AM, martin rudalics wrote: >=20 > > =46rom a user=E2=80=99s perspective, this change solves two = problems: 1. The > > behavior difference between jumping to break point and stepping (and > > other command) 2. Gdb-mi opening more windows than I wanted for > > displaying source files. >=20 > The patch doesn't apply here. Searching for >=20 > :group 'gdb > :version "22.1") >=20 > (defvar gdbmi-debug-mode nil > "When non-nil, print the messages sent/received from GDB/MI in = *Messages*.") >=20 >=20 > fails. >=20 > Thanks, martin >=20 Ah, I see. I should have generate this patch against the latest history. = This one should be ok. Yuan --Apple-Mail=_8EEA5C3C-3A5E-44FC-893D-64FF9D77E96C Content-Disposition: attachment; filename=source-window.patch Content-Type: application/octet-stream; x-unix-mode=0700; name="source-window.patch" Content-Transfer-Encoding: quoted-printable =46rom=208fb48ccf1b2f3e03e782c6aed7273ede843bb9d1=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Yuan=20Fu=20=0ADate:=20Sun,=20= 29=20Mar=202020=2010:20:53=20-0400=0ASubject:=20[PATCH]=20Unify=20and=20= improve=20gdb-mi=20source=20buffer=20display=20logic=0A=0AUnify=20the=20= behavior=20of=20source=20buffer=20display=20for=20gdb-mi.=20=20Before=20= this=0Achange,=20stepping=20and=20other=20gdb=20command=20handlers=20use=20= 'gud-display-line'=0Aand=20'gdb-goto-breakpoint'=20uses=20= 'gdb-display-source-buffer'.=20=20Now=20whenever=0Agdb-mi=20code=20tries=20= to=20open=20a=20source=20buffer,=20'gdb-display-source-buffer'=0Ais=20= used.=20=20Also,=20we=20simply=20the=20logic=20in=20= 'gdb-display-source-buffer'=20and=0Aadd=20a=20feature=20to=20limit=20the=20= maximum=20number=20of=20source=20windows.=0A=0A*=20= lisp/progmodes/gdb-mi.el=20(gdb-source-window):=20Remove=20variable,=0A= change=20to=20'gdb-source-window-list'.=0A(gdb-source-window-list):=20= New=20variable.=0A(gdb-display-source-buffer-action,=0A= gdb-max-source-window-count):=20New=20custom=20variable.=0A(gdb-init-1,=20= gdb-setup-windows,=20gdb-save-window-configuration,=0A= gdb-load-window-configuration,=20gdb-restore-windows):=20Use=0A= 'gdb-source-window'=20rather=20than=20'gdb-source-window-list'.=0A= (gdb-display-source-buffer):=20Use=20new=20logic.=0A= (gdb-goto-breakpoint):=20Remove=20'display-buffer'=0Aand=20don't=20set=20= 'gdb-source-buffer'=20anymore.=0A*=20lisp/progmodes/gud.el=20= (gud-display-line):=20If=20used=20by=20gdb-mi,=20use=0A= 'gdb-display-source-buffer'=20rather=20than=20'display-buffer'.=20=20= Don't=20set=0A'gdb-source-buffer'=20anymore.=0A---=0A=20= lisp/progmodes/gdb-mi.el=20|=2073=20= +++++++++++++++++++++++++++++-----------=0A=20lisp/progmodes/gud.el=20=20= =20=20|=2012=20+++----=0A=202=20files=20changed,=2059=20insertions(+),=20= 26=20deletions(-)=0A=0Adiff=20--git=20a/lisp/progmodes/gdb-mi.el=20= b/lisp/progmodes/gdb-mi.el=0Aindex=207fb3687391..93012ad18d=20100644=0A= ---=20a/lisp/progmodes/gdb-mi.el=0A+++=20b/lisp/progmodes/gdb-mi.el=0A@@=20= -224,7=20+224,9=20@@=20gdb-handler-list=0A=20(defvar=20= gdb-source-file-list=20nil=0A=20=20=20"List=20of=20source=20files=20for=20= the=20current=20executable.")=0A=20(defvar=20gdb-first-done-or-error=20= t)=0A-(defvar=20gdb-source-window=20nil)=0A+(defvar=20= gdb-source-window-list=20nil=0A+=20=20"List=20of=20windows=20used=20for=20= displaying=20source=20files.=0A+Sorted=20in=20most=20recently=20visited=20= first=20order.")=0A=20(defvar=20gdb-inferior-status=20nil)=0A=20(defvar=20= gdb-continuation=20nil)=0A=20(defvar=20gdb-supports-non-stop=20nil)=0A@@=20= -645,6=20+647,21=20@@=20gdb-default-window-configuration-file=0A=20=20=20= :group=20'gdb=0A=20=20=20:version=20"28.1")=0A=20=0A+(defcustom=20= gdb-display-source-buffer-action=20'(nil=20.=20((inhibit-same-window=20.=20= t)))=0A+=20=20"`display-buffer'=20action=20used=20when=20GDB=20= displaying=20a=20source=20buffer."=0A+=20=20:type=20'list=0A+=20=20= :group=20'gdb=0A+=20=20:version=20"28.1")=0A+=0A+(defcustom=20= gdb-max-source-window-count=201=0A+=20=20"Maximum=20number=20of=20source=20= windows=20to=20use.=0A+Until=20there=20are=20such=20number=20of=20source=20= windows=20on=20screen,=20GDB=0A+tries=20to=20open=20a=20new=20window=20= when=20visiting=20a=20new=20source=20file;=20after=0A+that=20GDB=20= starts=20to=20reuse=20existing=20source=20windows."=0A+=20=20:type=20= 'number=0A+=20=20:group=20'gdb=0A+=20=20:version=20"28.1")=0A+=0A=20= (defvar=20gdbmi-debug-mode=20nil=0A=20=20=20"When=20non-nil,=20print=20= the=20messages=20sent/received=20from=20GDB/MI=20in=20*Messages*.")=0A=20= =0A@@=20-984,7=20+1001,7=20@@=20gdb-init-1=0A=20=09= gdb-first-done-or-error=20t=0A=20=09gdb-buffer-fringe-width=20(car=20= (window-fringes))=0A=20=09gdb-debug-log=20nil=0A-=09gdb-source-window=20= nil=0A+=09gdb-source-window-list=20nil=0A=20=09gdb-inferior-status=20nil=0A= =20=09gdb-continuation=20nil=0A=20=20=20=20=20=20=20=20=20= gdb-buf-publisher=20'()=0A@@=20-2069,17=20+2086,35=20@@=20= gdb-show-stop-p=0A=20;;=20GDB=20frame=20(after=20up,=20down=20etc).=20=20= If=20no=20GDB=20frame=20is=20visible=20but=20the=20last=0A=20;;=20= visited=20breakpoint=20is,=20use=20that=20window.=0A=20(defun=20= gdb-display-source-buffer=20(buffer)=0A-=20=20(let*=20((last-window=20= (if=20gud-last-last-frame=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20(get-buffer-window=0A-=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (gud-find-file=20(car=20gud-last-last-frame)))))=0A-=09=20(source-window=20= (or=20last-window=0A-=09=09=09=20=20=20=20(if=20(and=20gdb-source-window=0A= -=09=09=09=09=20=20=20=20=20(window-live-p=20gdb-source-window))=0A-=09=09= =09=09gdb-source-window))))=0A-=20=20=20=20(when=20source-window=0A-=20=20= =20=20=20=20(setq=20gdb-source-window=20source-window)=0A-=20=20=20=20=20= =20(set-window-buffer=20source-window=20buffer))=0A-=20=20=20=20= source-window))=0A+=20=20"Find=20a=20window=20to=20display=20BUFFER.=0A= +Always=20find=20a=20window=20to=20display=20buffer,=20and=20return=20= it."=0A+=20=20;;=20This=20function=20doesn't=20take=20care=20of=20= setting=20up=20source=20window(s)=20at=20startup,=0A+=20=20;;=20that's=20= handled=20by=20`gdb-setup-windows'=20(if=20`gdb-many-windows'=20is=20= non-nil).=0A+=20=20;;=20If=20`buffer'=20is=20already=20shown=20in=20a=20= window,=20use=20that=20window.=0A+=20=20(or=20(get-buffer-window=20= buffer)=0A+=20=20=20=20=20=20(progn=0A+=20=20=20=20=20=20=20=20;;=20= First,=20update=20the=20window=20list.=0A+=20=20=20=20=20=20=20=20(setq=20= gdb-source-window-list=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (cl-remove-duplicates=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (cl-remove-if-not=20(lambda=20(win)=20(and=20(window-live-p=20win)=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(equal=20(window-frame=20win)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (selected-frame))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20gdb-source-window-list)=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20:test=20#'equal))=0A+=20=20= =20=20=20=20=20=20;;=20Should=20we=20create=20a=20new=20window=20or=20= reuse=20one?=0A+=20=20=20=20=20=20=20=20(if=20(>=20= gdb-max-source-window-count=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(length=20gdb-source-window-list))=0A+=20=20=20=20=20=20=20=20=20=20=20= =20;;=20Create=20a=20new=20window,=20push=20it=20to=20window=20list=20= and=20return=20it.=0A+=20=20=20=20=20=20=20=20=20=20=20=20(car=20(push=20= (display-buffer=20buffer=20gdb-display-source-buffer-action)=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= gdb-source-window-list))=0A+=20=20=20=20=20=20=20=20=20=20;;=20Reuse=20a=20= window,=20we=20use=20the=20oldest=20window=20and=20put=20that=20to=0A+=20= =20=20=20=20=20=20=20=20=20;;=20the=20front=20of=20the=20window=20list.=0A= +=20=20=20=20=20=20=20=20=20=20(let=20((last-win=20(car=20(last=20= gdb-source-window-list)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(rest=20(butlast=20gdb-source-window-list)))=0A+=20=20=20=20=20=20=20=20= =20=20=20=20(set-window-buffer=20last-win=20buffer)=0A+=20=20=20=20=20=20= =20=20=20=20=20=20(setq=20gdb-source-window-list=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20(cons=20last-win=20rest))=0A+=20=20=20=20= =20=20=20=20=20=20=20=20last-win)))))=0A=20=0A=20=0A=20(defun=20= gdbmi-start-with=20(str=20offset=20match)=0A@@=20-4064,9=20+4099,7=20@@=20= gdb-goto-breakpoint=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let*=20= ((buffer=20(find-file-noselect=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20(file-exists-p=20= file)=20file=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(cdr=20(assoc=20bptno=20= gdb-location-alist)))))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20(window=20(or=20(gdb-display-source-buffer=20buffer)=0A-=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(display-buffer=20buffer))))=0A-=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(setq=20gdb-source-window=20window)=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(window=20= (gdb-display-source-buffer=20buffer)))=0A=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20(with-current-buffer=20buffer=0A=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20(goto-char=20(point-min))=0A=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(forward-line=20(1-=20= (string-to-number=20line)))=0A@@=20-4715,7=20+4748,7=20@@=20= gdb-setup-windows=0A=20=20=20=20=20=20=20(select-window=20win2)=0A=20=20=20= =20=20=20=20(set-window-buffer=20win2=20(or=20(gdb-get-source-buffer)=0A=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(list-buffers-noselect)))=0A-=20=20=20=20=20=20= (setq=20gdb-source-window=20(selected-window))=0A+=20=20=20=20=20=20= (setq=20gdb-source-window-list=20(list=20(selected-window)))=0A=20=20=20=20= =20=20=20(let=20((win4=20(split-window-right)))=0A=20=20=20=20=20=20=20=20= =20(gdb-set-window-buffer=0A=20=20=20=20=20=20=20=20=20=20= (gdb-get-buffer-create=20'gdb-inferior-io)=20nil=20win4))=0A@@=20-4791,7=20= +4824,7=20@@=20gdb-save-window-configuration=0A=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(error=20= "Unrecognized=20gdb=20buffer=20mode:=20%s"=20major-mode)))=0A=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Command=20= buffer.=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20((derived-mode-p=20'gud-mode)=20'command)=0A-=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20((equal=20(selected-window)=20= gdb-source-window)=20'source)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20((member=20(selected-window)=20= gdb-source-window-list)=20'source)))=0A=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(with-window-non-dedicated=20nil=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(set-window-buffer=20nil=20placeholder)=0A=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(set-window-prev-buffers=20= (selected-window)=20nil)=0A@@=20-4834,7=20+4867,7=20@@=20= gdb-load-window-configuration=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(pcase=20buffer-type=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20('source=20(when=20source-buffer=0A=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(set-window-buffer=20nil=20= source-buffer)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(setq=20gdb-source-window=20(selected-window))))=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(push=20(selected-window)=20gdb-source-window-list)))=0A=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20('command=20(switch-to-buffer=20= gud-comint-buffer))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (_=20(let=20((buffer=20(gdb-get-buffer-create=20buffer-type)))=0A=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (with-window-non-dedicated=20nil=0A@@=20-4875,7=20+4908,7=20@@=20= gdb-restore-windows=0A=20=20=20=20=20=20=20=20=20=20(if=20= gud-last-last-frame=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (gud-find-file=20(car=20gud-last-last-frame))=0A=20=20=20=20=20=20=20=20=20= =20=20=20(gud-find-file=20gdb-main-file)))=0A-=20=20=20=20=20=20=20=20= (setq=20gdb-source-window=20win)))))=0A+=20=20=20=20=20=20=20=20(setq=20= gdb-source-window-list=20(list=20win))))))=0A=20=0A=20;;=20Called=20from=20= `gud-sentinel'=20in=20gud.el:=0A=20(defun=20gdb-reset=20()=0Adiff=20= --git=20a/lisp/progmodes/gud.el=20b/lisp/progmodes/gud.el=0Aindex=20= 567f452b93..c9522bfe17=20100644=0A---=20a/lisp/progmodes/gud.el=0A+++=20= b/lisp/progmodes/gud.el=0A@@=20-2826,9=20+2826,11=20@@=20= gud-display-line=0A=20=09=20(buffer=0A=20=09=20=20(with-current-buffer=20= gud-comint-buffer=0A=20=09=20=20=20=20(gud-find-file=20true-file)))=0A-=09= =20(window=20(and=20buffer=0A-=09=09=20=20=20=20=20=20(or=20= (get-buffer-window=20buffer)=0A-=09=09=09=20=20(display-buffer=20buffer=20= '(nil=20(inhibit-same-window=20.=20t))))))=0A+=09=20(window=20(when=20= buffer=20(if=20(eq=20gud-minor-mode=20'gdbmi)=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20(gdb-display-source-buffer=20buffer)=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20= Gud=20still=20has=20the=20old=20behavior.=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(or=20= (get-buffer-window=20buffer)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (display-buffer=20buffer=20'(nil=20(inhibit-same-window=20.=20t)))))))=0A= =20=09=20(pos))=0A=20=20=20=20=20(when=20buffer=0A=20=20=20=20=20=20=20= (with-current-buffer=20buffer=0A@@=20-2858,9=20+2860,7=20@@=20= gud-display-line=0A=20=09=20=20=20=20=20=20=20(widen)=0A=20=09=20=20=20=20= =20=20=20(goto-char=20pos))))=0A=20=20=20=20=20=20=20(when=20window=0A-=09= (set-window-point=20window=20gud-overlay-arrow-position)=0A-=09(if=20(eq=20= gud-minor-mode=20'gdbmi)=0A-=09=20=20=20=20(setq=20gdb-source-window=20= window))))))=0A+=09(set-window-point=20window=20= gud-overlay-arrow-position)))))=0A=20=0A=20;;=20The=20gud-call=20= function=20must=20do=20the=20right=20thing=20whether=20its=20invoking=0A=20= ;;=20keystroke=20is=20from=20the=20GUD=20buffer=20itself=20(via=20= major-mode=20binding)=0A--=20=0A2.25.1=0A=0A= --Apple-Mail=_8EEA5C3C-3A5E-44FC-893D-64FF9D77E96C--