From unknown Fri Jun 20 20:10:44 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display Resent-From: Yuan Fu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 28 Mar 2020 04:04:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 40268 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 40268@debbugs.gnu.org X-Debbugs-Original-To: Bug Report Emacs Received: via spool by submit@debbugs.gnu.org id=B.158536821226151 (code B ref -1); Sat, 28 Mar 2020 04:04:02 +0000 Received: (at submit) by debbugs.gnu.org; 28 Mar 2020 04:03:32 +0000 Received: from localhost ([127.0.0.1]:33589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jI2h1-0006nj-TP for submit@debbugs.gnu.org; Sat, 28 Mar 2020 00:03:32 -0400 Received: from lists.gnu.org ([209.51.188.17]:32808) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jI2gz-0006nY-Np for submit@debbugs.gnu.org; Sat, 28 Mar 2020 00:03:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33039) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jI2gx-0001gp-Gv for bug-gnu-emacs@gnu.org; Sat, 28 Mar 2020 00:03:29 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jI2gv-00020d-Cb for bug-gnu-emacs@gnu.org; Sat, 28 Mar 2020 00:03:27 -0400 Received: from mail-qk1-x736.google.com ([2607:f8b0:4864:20::736]:36590) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jI2gu-0001xe-AC for bug-gnu-emacs@gnu.org; Sat, 28 Mar 2020 00:03:24 -0400 Received: by mail-qk1-x736.google.com with SMTP id d11so13183295qko.3 for ; Fri, 27 Mar 2020 21:03:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:mime-version:subject:message-id:date:to; bh=0X/VhtmWmzlwBrzMvrh91++LpelDXSMdA+uRde6NpSY=; b=ewsvFAx5F0aMSkEBd9BsGhzNA6LHrHjLsnpFXUTO0LxVvSNBi/v0wgBq9miBvyYGFB dTDy8EwJ09TvyF+lqQPMv7SHLGNZLAB45zKmwX5L7PGB8eb0ArWT2bCzbReMWetE2xdp VCSJEsGSXHvBhpei8kpUNTtgwINCl3WUrvkto020utsWZYzxCzewRvhFloocqckGxkQX /RQh8eC47rShkFlg6NX+w7N7t4GkZta5IkBCVi/+la5YTrDOY78XKrUOo10tx4bJJra4 By6FAoNroT2EX/ru+/wGyVlq9s2mlElhOpEkLqcylwX5448ooQeBCHE4bqUORZsWX1CW VJug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:subject:message-id:date:to; bh=0X/VhtmWmzlwBrzMvrh91++LpelDXSMdA+uRde6NpSY=; b=hPAQaH/+2tULh2POjOAA7gB0IL1DKLonPBaR+0SLEoRBQPZluUYaz1QWibzwMywC3G lP9ZvCm4gv6fZGEzPS8vEgxemi2xBtODXrG3AelRUEWApPuVWgOgSiaMtYp5rz2QfXPg kmNFC4nPmrvVzZGbcWbFJcyztVh0+mESLJ2RDsHA1Oh/xoXGoZVtBor28KYyybKzJG3i EhmeUCUCXouv1m8xZgK/clxsZ7sq2dfBtKgQB4Hsv18fyl89lUW9OStgaBejYQ7s3nAO VTzDYxOv0khKOuy9xjNHEwDAtWSnQJhiXA0d8MCRgSWbxEdYYe3xrN9YDk62BUxu1mKn gQOg== X-Gm-Message-State: ANhLgQ2Ov6BkOlWRrhfDg8P1tTJetDcxqUT66xT8eHLt5asAFEdS2Sss 7AxY4+0FxFbx0QpXrdRyqGzFf1xJr76p7g== X-Google-Smtp-Source: ADFU+vtyzMs6MSJ5geGBMwi4YcIn0zUqw9+59I1Qxku1pfaXTTRrHwz/s7ZsaXVo8qjlPUL/MCDW1w== X-Received: by 2002:a05:620a:2f7:: with SMTP id a23mr2281517qko.303.1585368203162; Fri, 27 Mar 2020 21:03:23 -0700 (PDT) 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 f127sm5223255qkd.74.2020.03.27.21.03.22 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Mar 2020 21:03:22 -0700 (PDT) From: Yuan Fu Content-Type: multipart/mixed; boundary="Apple-Mail=_D367402C-923B-4C93-961D-BAB537DC2993" Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Message-Id: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> Date: Sat, 28 Mar 2020 00:03:21 -0400 X-Mailer: Apple Mail (2.3608.80.23.2.2) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::736 X-Spam-Score: 0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) --Apple-Mail=_D367402C-923B-4C93-961D-BAB537DC2993 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Before this change, stepping and other gdb command handlers use = 'gud-display-line=E2=80=99 and 'gdb-goto-breakpoint' uses = 'gdb-display-source-buffer'. Now whenever gdb-mi code tries to open a = source buffer, 'gdb-display-source-buffer=E2=80=99 is used. Also, we = simplify the logic in 'gdb-display-source-buffer=E2=80=99 and add a = feature to limit the maximum number of source windows. =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. Yuan --Apple-Mail=_D367402C-923B-4C93-961D-BAB537DC2993 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=20ad34237cdc7c06e7edfcb593e8c732c6a040a7cb=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Yuan=20Fu=20=0ADate:=20Tue,=20= 21=20Jan=202020=2016:23:57=20-0500=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=20simplify=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= changed=20to=20'gdb-source-window-list'.=0A(gdb-source-window-list,=20= gdb-max-source-window-count):=20New=20variable.=0A= (gdb-display-source-buffer-action,=0Agdb-max-source-window-count):=20New=20= custom=20variable.=0A(gdb-init-1,=20gdb-setup-windows,=20= gdb-restore-windows):=0AUse=20'gdb-source-window'=20rather=20than=20= 'gdb-source-window-list'.=0A(gdb-display-source-buffer):=20Use=20new=20= logic.=0A(gdb-goto-breakpoint):=20Remove=20'display-buffer'=0Aand=20= don't=20set=20'gdb-source-buffer'=20anymore.=0A*=20lisp/progmodes/gud.el=20= (gud-display-line):=20Remove=20'display-buffer'=0Aand=20don't=20set=20= 'gdb-source-buffer'=20anymore.=0A---=0A=20lisp/progmodes/gdb-mi.el=20|=20= 65=20+++++++++++++++++++++++++++++-----------=0A=20lisp/progmodes/gud.el=20= =20=20=20|=2026=20++++++++--------=0A=202=20files=20changed,=2060=20= insertions(+),=2031=20deletions(-)=0A=0Adiff=20--git=20= a/lisp/progmodes/gdb-mi.el=20b/lisp/progmodes/gdb-mi.el=0Aindex=20= e4233dacaf..5f31a22f22=20100644=0A---=20a/lisp/progmodes/gdb-mi.el=0A+++=20= b/lisp/progmodes/gdb-mi.el=0A@@=20-211,7=20+211,9=20@@=20= gdb-handler-list=0A=20(defvar=20gdb-source-file-list=20nil=0A=20=20=20= "List=20of=20source=20files=20for=20the=20current=20executable.")=0A=20= (defvar=20gdb-first-done-or-error=20t)=0A-(defvar=20gdb-source-window=20= nil)=0A+(defvar=20gdb-source-window-list=20nil=0A+=20=20"List=20of=20= windows=20used=20for=20displaying=20source=20files.=0A+Sorted=20in=20= most=20recently=20visited=20first=20order.")=0A=20(defvar=20= gdb-inferior-status=20nil)=0A=20(defvar=20gdb-continuation=20nil)=0A=20= (defvar=20gdb-supports-non-stop=20nil)=0A@@=20-589,6=20+591,21=20@@=20= gdb-show-main=0A=20=20=20:group=20'gdb=0A=20=20=20:version=20"22.1")=0A=20= =0A+(defcustom=20gdb-display-source-buffer-action=20nil=0A+=20=20= "`display-buffer'=20action=20used=20when=20GDB=20displaying=20a=20source=20= buffer."=0A+=20=20:type=20'list=0A+=20=20:group=20'gdb=0A+=20=20:version=20= "28.1")=0A+=0A+(defcustom=20gdb-max-source-window-count=201=0A+=20=20= "Maximum=20number=20of=20source=20windows=20to=20use.=0A+Until=20there=20= are=20such=20number=20of=20source=20windows=20on=20screen,=20GDB=0A= +tries=20to=20open=20a=20new=20window=20when=20visiting=20a=20new=20= source=20file;=20if=0A+there=20are,=20GDB=20will=20start=20to=20reuse=20= existing=20source=20windows."=0A+=20=20:type=20'number=0A+=20=20:grou=20= 'gdb=0A+=20=20:version=20"28.1")=0A+=0A=20(defvar=20gdbmi-debug-mode=20= nil=0A=20=20=20"When=20non-nil,=20print=20the=20messages=20sent/received=20= from=20GDB/MI=20in=20*Messages*.")=0A=20=0A@@=20-922,7=20+939,7=20@@=20= gdb-init-1=0A=20=09gdb-first-done-or-error=20t=0A=20=09= gdb-buffer-fringe-width=20(car=20(window-fringes))=0A=20=09gdb-debug-log=20= nil=0A-=09gdb-source-window=20nil=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=20gdb-buf-publisher=20'()=0A@@=20-2002,17=20+2019,31=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-if-not=20#'window-live-p=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= gdb-source-window-list))=0A+=20=20=20=20=20=20=20=20;;=20Should=20we=20= create=20a=20new=20window=20or=20reuse=20one?=0A+=20=20=20=20=20=20=20=20= (if=20(>=20gdb-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=20= list=20and=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-3981,9=20+4012,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-4597,7=20+4626,7=20@@=20= gdb-setup-windows=0A=20=20=20=20=20=20=20=20=20=20;;=20Put=20buffer=20= list=20in=20window=20if=20we=0A=20=20=20=20=20=20=20=20=20=20;;=20can't=20= find=20a=20source=20file.=0A=20=20=20=20=20=20=20=20=20=20= (list-buffers-noselect))))=0A-=20=20=20=20(setq=20gdb-source-window=20= (selected-window))=0A+=20=20=20=20(setq=20gdb-source-window-list=20(list=20= (selected-window)))=0A=20=20=20=20=20(let=20((win4=20= (split-window-right)))=0A=20=20=20=20=20=20=20(gdb-set-window-buffer=0A=20= =20=20=20=20=20=20=20(gdb-get-buffer-create=20'gdb-inferior-io)=20nil=20= win4))=0A@@=20-4639,7=20+4668,7=20@@=20gdb-restore-windows=0A=20=20=20=20= =20=20=20=20=20=20(if=20gud-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=20gdb-source-window-list=20(list=20win))))))=0A=20=0A=20;;=20= Called=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=0A= index=20567f452b93..dda7fd6ef0=20100644=0A---=20a/lisp/progmodes/gud.el=0A= +++=20b/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'gdb-mi)=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-2908,14=20+2908,14=20@@=20= gud-format-command=0A=20=09=20=20(setq=20subst=0A=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(gud-find-class=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(if=20insource=0A-=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20(buffer-file-name)=0A-=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(car=20frame))=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(buffer-file-name)=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(car=20frame))=0A=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20insource=0A-=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (save-restriction=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(widen)=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(count-lines=20(point-min)=20(point))=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(if=20(bolp)=201=200)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(cdr=20frame)))))=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(save-restriction=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(widen)=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(count-lines=20= (point-min)=20(point))=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(if=20(bolp)=201=200)))=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(cdr=20frame)))))=0A=20=09=20((eq=20= key=20?p)=0A=20=09=20=20(setq=20subst=20(if=20arg=20(int-to-string=20= arg)))))=0A=20=09(setq=20result=20(concat=20result=20(match-string=201=20= str)=20subst)))=0A--=20=0A2.25.1=0A=0A= --Apple-Mail=_D367402C-923B-4C93-961D-BAB537DC2993 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii In GNU Emacs 27.0.60 (build 1, x86_64-apple-darwin19.3.0, NS = appkit-1894.30 Version 10.15.3 (Build 19D76)) of 2020-02-25 built on missSilver Repository revision: f27187f963e9e36435b508e29256e048799e0ff2 Repository branch: emacs-27 Windowing system distributor 'Apple', version 10.3.1894 System Description: Mac OS X 10.15.4 Recent messages: Checking 34 files in /Users/yuan/emacs/lisp/emulation... Checking 180 files in /Users/yuan/emacs/lisp/emacs-lisp... Checking 24 files in /Users/yuan/emacs/lisp/cedet... Checking 59 files in /Users/yuan/emacs/lisp/calendar... Checking 87 files in /Users/yuan/emacs/lisp/calc... Checking 113 files in /Users/yuan/emacs/lisp/obsolete... Checking for load-path shadows...done Auto-saving... Buffer *unsent mail to bug-gnu-emacs@gnu.org* modified; kill anyway? (y = or n) y C-c C-c is undefined Configured using: 'configure --with-modules --with-pdumper=3Dyes = --oldincludedir=3D/Applications/Xcode.app/Contents/Developer/Platforms/Mac= OSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2/' Configured features: RSVG GLIB NOTIFY KQUEUE ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS XIM NS MODULES THREADS PDUMPER LCMS2 Important settings: value of $LC_CTYPE: UTF-8 value of $LANG: en_CN.UTF-8 locale-coding-system: utf-8-unix Major mode: Shell-script Minor modes in effect: global-semanticdb-minor-mode: t global-semantic-idle-scheduler-mode: t semantic-mode: t sh-electric-here-document-mode: t global-magit-file-mode: t magit-file-mode: t global-git-commit-mode: t async-bytecomp-package-mode: t shell-dirtrack-mode: t diff-hl-mode: t color-outline-mode: t hi-lock-mode: t desktop-save-mode: t helpful-html-manual-mode: t yas-global-mode: t yas-minor-mode: t form-feed-mode: t minibuffer-electric-default-mode: t flycheck-mode: t flyspell-mode: t minions-mode: t eyebrowse-mode: t savehist-mode: t global-hl-todo-mode: t hl-todo-mode: t global-highlight-parentheses-mode: t highlight-parentheses-mode: t rainbow-delimiters-mode: t global-undo-tree-mode: t undo-tree-mode: t electric-pair-mode: t winner-mode: t ivy-prescient-mode: t prescient-persist-mode: t recentf-mode: t which-key-mode: t general-override-mode: t outline-minor-mode: t counsel-mode: t ivy-mode: t company-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t electric-quote-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t hs-minor-mode: t Load-path shadows: /Users/yuan/.emacs.d/ranch/winman/windman hides = /Users/yuan/.emacs.d/ranch/windman/windman /Users/yuan/.emacs.d/ranch/separedit/cask-bootstrap hides = /Users/yuan/.emacs.d/ranch/comment-edit/cask-bootstrap /Users/yuan/.emacs.d/ranch/esup/esup-child hides = /Users/yuan/.emacs.d/package/esup-20200120.740/esup-child /Users/yuan/.emacs.d/ranch/esup/esup hides = /Users/yuan/.emacs.d/package/esup-20200120.740/esup /Users/yuan/.emacs.d/ranch/julia-mode/julia-mode hides = /Users/yuan/.emacs.d/package/julia-mode-20190813.1326/julia-mode /Users/yuan/.emacs.d/ranch/julia-mode/julia-latexsubs hides = /Users/yuan/.emacs.d/package/julia-mode-20190813.1326/julia-latexsubs /Users/yuan/.emacs.d/ranch/matlab-emacs/mlint hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/mlint /Users/yuan/.emacs.d/ranch/matlab-emacs/company-matlab-shell hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/company-matlab-shel= l /Users/yuan/.emacs.d/ranch/matlab-emacs/linemark hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/linemark /Users/yuan/.emacs.d/ranch/matlab-emacs/semanticdb-matlab hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/semanticdb-matlab /Users/yuan/.emacs.d/ranch/matlab-emacs/semantic-matlab hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/semantic-matlab /Users/yuan/.emacs.d/ranch/matlab-emacs/srecode-matlab hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/srecode-matlab /Users/yuan/.emacs.d/ranch/matlab-emacs/matlab hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/matlab /Users/yuan/.emacs.d/ranch/matlab-emacs/cedet-matlab hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/cedet-matlab /Users/yuan/.emacs.d/ranch/matlab-emacs/tlc hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/tlc /Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-publish hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/matlab-publish /Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-mode-pkg hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/matlab-mode-pkg /Users/yuan/.emacs.d/package/faceup-20170925.1946/faceup hides = /Users/yuan/emacs/lisp/emacs-lisp/faceup Features: (shadow sort mail-extr emacsbug sendmail face-remap rfc1345 quail semantic/tag-write semantic/tag-file semantic/bovine/c hideif semantic/bovine/c-by semantic/lex-spp semantic/bovine/gcc semantic/analyze/refs semantic/db-file data-debug cedet-files semantic/bovine/scm semantic/decorate/include semantic/db-find semantic/db-ref semantic/decorate/mode semantic/decorate pulse semantic/dep semantic/bovine/scm-by semantic/bovine semantic/db-mode semantic/idle semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn semantic/db eieio-base semantic/format ezimage semantic/tag-ls semantic/find semantic/ctxt semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet cc-mode-expansions cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ls-lisp ess-custom apropos sh-script smie executable geiser-mode geiser-xref geiser-compile geiser-debug geiser-gambit geiser-chibi geiser-mit geiser-chez geiser-chicken geiser-racket geiser-guile ghelp-geiser console-buffer geiser geiser-repl geiser-image geiser-company geiser-doc geiser-menu geiser-edit geiser-completion geiser-autodoc geiser-eval geiser-connection tq geiser-syntax geiser-log geiser-popup view geiser-impl geiser-custom geiser-base scheme vc-mtn vc-hg bug-reference magit-patch-changelog magit-patch magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func magit-diff smerge-mode magit-core magit-autorevert autorevert magit-margin magit-transient magit-process magit-mode transient git-commit magit-git magit-section magit-utils crm log-edit pcvs-util add-log with-editor async-bytecomp async shell misearch multi-isearch vc-git vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs bookmark server cl-print gnutls mm-archive message rfc822 mml mml-sec epa derived gnus-util rmail rmail-loaddefs text-property-search mailabbrev gmm-utils mailheader mm-decode mm-bodies mm-encode mail-utils network-stream url-http mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw nsm rmc puny url-cache url-auth url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf mailcap epg epg-config hideshow diff-hl vc-dir vc vc-dispatcher diff-mode color-outline hi-lock company-oddmuse company-keywords company-etags etags fileloop generator company-gtags company-dabbrev-code company-dabbrev company-files company-capf company-cmake company-xcode company-clang company-semantic company-eclim company-template company-bbdb desktop frameset trivial-copy ghelp ghelp-eglot ghelp-helpful ghelp-builtin cus-edit centaur-tabs centaur-tabs-interactive centaur-tabs-functions centaur-tabs-elements powerline powerline-separators powerline-themes cus-start cus-load luna-general-config pause utility transform flywrap yasnippet sly-el-indent sly-cl-indent cl-indent cl all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons memoize form-feed minibuf-eldef eglot array filenotify jsonrpc ert pp ewoc debug flymake-proc flymake warnings url-util flycheck flyspell ispell outshine outshine-org-cmds outorg isolate inline expand-region text-mode-expansions the-org-mode-expansions er-basic-expansions thingatpt expand-region-core expand-region-custom ws-butler minions eyebrowse savehist buffer-move windmove hl-todo highlight-parentheses rainbow-delimiters doom-cyberpunk-theme undo-tree diff doom-one-light-theme elec-pair winner doom-themes doom-themes-base windman aggressive-indent find-char ivy-prescient prescient recentf-ext recentf tree-widget wid-edit which-key general helpful imenu trace edebug backtrace info-look f dash-functional help-fns radix-tree elisp-refs s loop dash org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete pcomplete org-list org-faces org-entities time-date noutline outline org-version ob-emacs-lisp ob-core ob-eval org-table ol org-keys org-compat advice org-macs org-loaddefs format-spec find-func cal-menu calendar cal-loaddefs counsel xdg xref project dired dired-loaddefs compile comint ansi-color swiper cl-extra help-mode ivy delsel ring colir color ivy-overlay company edmacro kmacro pcase use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key use-package-core finder-inf tex-site proof-site proof-autoloads info cowboy package easymenu browse-url url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map url-vars cl-loaddefs cl-lib lunary lunary-ui easy-mmode luna-f rx seq byte-opt gv bytecomp byte-compile cconv tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads kqueue cocoa ns lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 489882 97798) (symbols 48 40858 45) (strings 32 193314 9271) (string-bytes 1 4564854) (vectors 16 58289) (vector-slots 8 1900639 84204) (floats 8 468 326) (intervals 56 7219 1188) (buffers 1000 40)) --Apple-Mail=_D367402C-923B-4C93-961D-BAB537DC2993-- From unknown Fri Jun 20 20:10:44 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display 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 To: martin rudalics Cc: 40268@debbugs.gnu.org Received: via spool by 40268-submit@debbugs.gnu.org id=B40268.158550284231375 (code B ref 40268); Sun, 29 Mar 2020 17:28:01 +0000 Received: (at 40268) by debbugs.gnu.org; 29 Mar 2020 17:27:22 +0000 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 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 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) 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) From: Yuan Fu Message-Id: Content-Type: multipart/mixed; boundary="Apple-Mail=_8EEA5C3C-3A5E-44FC-893D-64FF9D77E96C" Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Date: Sun, 29 Mar 2020 13:27:12 -0400 In-Reply-To: References: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> X-Mailer: Apple Mail (2.3608.80.23.2.2) X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --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-- From unknown Fri Jun 20 20:10:44 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display Resent-From: martin rudalics Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 30 Mar 2020 02:36:43 +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 To: Yuan Fu , 40268@debbugs.gnu.org Received: via spool by 40268-submit@debbugs.gnu.org id=B40268.158553573617452 (code B ref 40268); Mon, 30 Mar 2020 02:36:43 +0000 Received: (at 40268) by debbugs.gnu.org; 30 Mar 2020 02:35:36 +0000 Received: from mout.gmx.net ([212.227.15.15]:51567) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jITp8-0007lB-Ll for 40268@debbugs.gnu.org; Sun, 29 Mar 2020 05:01:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1585472495; bh=daOR1JMpS5ww+t2mbHZW9qwajaLL8s1IKpvmmg6roag=; h=X-UI-Sender-Class:Subject:To:References:From:Date:In-Reply-To; b=C+ostePnisTtW7Mi61v3ADZa5kLBTOalLALaOjE/8oG0gI6TyDE2T1sNy3V7YAM6p PLNHECr6DUJmy76bGPYYO6f63B6Ea99wLdk7vd73EF0rIDXpjEEgDUXgHOGjklRsmp Iq2Xzovz55aZkvdf2i1cSIg01RS0fgXiMW0wuQKA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([46.125.249.102]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mv31W-1j0wu72SDw-00qyKQ; Sun, 29 Mar 2020 11:01:35 +0200 References: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> From: martin rudalics Message-ID: Date: Sun, 29 Mar 2020 11:01:31 +0200 MIME-Version: 1.0 In-Reply-To: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:ncJAu8YzBrrtu0xonSYadoao9UowATqDS7tQjHuzfZ8snLbEvyo C0eU/a0JDKjlgVElq1aqX5yVvV6MdBXgQJEFqXEVFWY/iF66C/usPxhzw/e9nwFJzrx3cxy mYCengQYVUoCSdu81OHvprcGyIOsHmzEqabnTILMK1UBOpyJuW3dz3obZ4oy0h1x+9Dfcgq 73F3lSCvx3wIQSUdJ787w== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:C5z83o7lJ+8=:8sPLU9fDcvr4baX25TAuQF LgP9paJFoojEnjhSxlsrQjNVqrGj3mitqWCXKWy8sUxMRYRE2Hbui1suE2+3NJbpr+fYOehrS MEPqcCu9fl7AbsK00OafGpr+aCwm/z75b6v79iv8fCU+Xvbkp8U4J+NxryNE4wGyUXX+Ip+Ru MNsHPlXOQvgRJ2ccFtimHC6VGiqPOKO+w3ZPFTCRf8IFGjA4EU5wb611+G7CT9KVuiiLOZlhI 2hETHDUS/HYFpYQes0j4zGHuhMUYd1CJsQ/pIDtFrILqxJsPxED3N5O8SMMnpVUPWZLACIKZa ZZ+RmJQ2RMb+1/MGouAMIoGoHBBLJnQyfbOMvMLMMZV2djWomGwBzJ+4Cqy2MsHpRVU28xUxI 19U6c2RLPBJMQ/RfY6CHwtOFJFjknxyeRzLMA1Q1O17C/SSJ0hLlAjaomUQqBpFWt7pbRidMK 4DrtiW/smXcMnZDpxI1sHq7r+SrSs0VxW4UTSaR0D1JNefN4GN2lxtjhJf8KZHQ6LJuL2bU5F UCXDjOssmmtlsfbZqkSbFAKpohjhMLwyzwEnl0GkTC3rZuGkiByoycatugLGfAkvU7XuH0qxQ Xv6O3p+c4kGkQru6g+s86vZh1TnEncCb2e7mtKD34zIDoZH+iL34PHPD6uit40Z15jjWsklSg 5wtLVlCZNKKTqN0B1cHqldTsxzajTx7BiYQVP4GIPM9MSFvon6XrCWtCX33tt9ywlEwc0poh1 tpy11ChUSe5TVIXoHkIRUVo+7kvJbRHAFWASTg67x9pq9tWm7hxspsmIjNPseH3fQPnAg+ssr 7fKiQX0g5gmwsUjMUhtztysBOVEVWDuLV+ZD+cmJNkggGb21vFBCOSzIxg+2TQF0VSrPPrSUo U4TeElQguiohUWFhLWbAwtXkxZnh1nXHoMiZerdLDi2Y0Xs1EjgjWoszHmsSqoJcU77KjyQMg V6UYYlMhNxUXANa1i40KG2p9VfDxzs4ZLFgWkZzBv75BwMSUgaSp/3lHnrDBN5GIT1Ly8ZsVW Rk8KlkSK5OxP7frFeaszrTPckcYYJpOuXB8sFFAfBWVtH6dMnTyHna8EOb4qsFLUI+Po0pL5P F3INM3u6MPHjxMkpjeogSSIIn5sfVun60GepARX5Uuf5rKvAKqhKg+f9yQj6n4dxU/6sUHV+d G2AH0MXRmdicq5m70UpIcPFeq5FlGfTbDQ/twgE0QR87wHLrH3ADGlfD/bL+fzMquzqec4BFL CtJ1aB9J3F6+IfS/V X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Mar 2020 09:01:43 -0000 > From a user=E2=80=99s perspective, this change solves two problems: 1= =2E 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. The patch doesn't apply here. Searching for :group 'gdb :version "22.1") (defvar gdbmi-debug-mode nil "When non-nil, print the messages sent/received from GDB/MI in *Messag= es*.") fails. Thanks, martin From unknown Fri Jun 20 20:10:44 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 31 Mar 2020 09:16: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 To: Yuan Fu Cc: 40268@debbugs.gnu.org Received: via spool by 40268-submit@debbugs.gnu.org id=B40268.158564614722777 (code B ref 40268); Tue, 31 Mar 2020 09:16:01 +0000 Received: (at 40268) by debbugs.gnu.org; 31 Mar 2020 09:15:47 +0000 Received: from localhost ([127.0.0.1]:35514 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jJCzr-0005vJ-8W for submit@debbugs.gnu.org; Tue, 31 Mar 2020 05:15:47 -0400 Received: from mout.gmx.net ([212.227.17.21]:42013) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jJCzp-0005uv-7y for 40268@debbugs.gnu.org; Tue, 31 Mar 2020 05:15:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1585646138; bh=6gU+ZnVDfEkFngPKIZ+rMDK6PDhCyGM62O684xax/T4=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=gnTPGKSobq6CUcW0nhpQFrhfcKLJSiyKFCjvj1e89UH1/oZhUKV0g33CYNLCb4MDH oHkGRCAjIkNWJTFc7km4HmOTPRgeSFUpNfDqsIvYtl2Cxh6mFsNE0REsCsk4rA8g2F T66E3sub0OrsNCXdawwPe0MPIoA+RTuUy+HQJt/o= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([212.95.5.250]) by mail.gmx.com (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MBDj4-1jUmlo1PSA-00Cguy; Tue, 31 Mar 2020 11:15:38 +0200 References: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> From: martin rudalics Message-ID: <115885b9-ddfd-2752-0c8c-aa4f98aacaaf@gmx.at> Date: Tue, 31 Mar 2020 11:15:37 +0200 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:fj0flrTvI5d8yktjgFUcqew+4xOLyHBVbcesGaiP4TdtrYDpGjc aknh9ww19BHHZyIUWv23xw+EZQPV2LcIi8/uwc6q1Qf5wVqHSVnPdc01jFp1WhKLGIEJLpI Dksvo/buSpZfWfwb8efHdsgL5dkYFuxM7CYR/mIfEtSfkwTgMs1MawJeSQxZmRj3LuVEX2p EP61U8A0Rt+0RTE04ZKWQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:y1kNkF/NXrU=:SxUZz5PKBi4aC0o+wZeJ0j bxeqGSRiTo4DWgBVS6hkSdNcDcxlTEFwVomcxE93/TQyuUCt2cQAoENAM5Sf/EOI1KLlduko/ EEfINu0Mr8nM8bpD5ennF5C1eyfO2qQXAKzYLlp01ITSNLE2Lr/zr3dAXmZfiyMCOdEF0Wevn GZbXEGRXjEltSZ9o6W6foPE7Myih6JTxwlAAoEgPfB3+Y8qMOOBkaRZ68ttoL4/6dLm9SvX1y I7eSZYeMgl5RUIhPgpHxhvVBtFj40VfwFkS56dhL+UNpwhSHIZeZVtagqfI45miKwjSMCUoXz 4mcxvHGU7ihShGRih3yodpl4OZ03qHf5yrBsDt6qec/4khcVxd0VSRWU/2zYhtRw6iPPQ09et QZd4wsPrMWDqKCfD3nzA9NErf+MGNOqn4l2pKos3uTs0VA6519edXgInv5puAhy5Uup7OC8oM Lo4FzjQQeagSgfiZlpPjcSuSpmGguSEon9yCF0HlrqrehtAVMEEYcGeVqGlrMR+A1iXnB8fmF d3tgRHJ9R0qKZu2zyYaaYyt5TKyf1os1gtBc08DFKjOOagynzhwfrdRRSe/uRN7CKJp1xKYlh sqGxstC9nEOlcbZTVSl2R+ezEHzFq4HSm3pJJk5SwJRBRW2y7sP/TkQja0v+iRobMk1ArbpiS 4mUtnK14fuO1kZL2RB17TUUwDAWKzL85HK7052rL1mAjeww/TNXUJD3GFCKPhwNbcYPRJNTsv 2uotCOtPBeRU01A6qL3cUocFEpUkr2If957rQKTLmiUODeqdmcduOrSv10bDQox8wDpenSpgl +q7qaZWSkc8MC0sN5TssHM6QZIDxMGv25slpw7GX/u2U1cZDPWck7fjfcj4s2paGjjYacLtvK 6cywsCxOecqyFx1lhM4K25ZdpRctksrl5kHSDr7QCeX9k29QnFKZrgJ8aPRarRVULbvrOuYJk o7BRtbIbzWp2v10/52+5bOIVcYCMTvjGVzW96voy/88sCSXvrnri1EGhQQ7p75ikc+J9FbWG5 WetBcrI5n836EL4saF7txzeVwOouA1ULCvYNzKC2KZ8bPLEwzNPEagLDL5I//twMHBoHJeQrG 14WBVtAEd+5+Svu6hO8CWJfyW/biC2pYlPZShodjWdo671IjSEKlxwRXITGPx91wPvEWdMNjO 8hEvccMB+rF52ffPELsRl6iANS6A3LetQHxQzxlEqBnSOe28G6K5cNni/2JRW7V9og2rn+kpL m69VeYutaVLqit3u9 X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > This one should be ok. Thanks. A few remarks. Please try to ident as (setq gdb-source-window-list (cl-remove-duplicates (cl-remove-if-not (lambda (win) (and (window-live-p win) (equal (window-frame win) (selected-frame)))) gdb-source-window-list) :test #'equal)) so we can safely change this later and easily stay within our line length limits. Also, tests like (equal (window-frame win) (selected-frame)))) should use "eq" instead of "equal" and ones like ((member (selected-window) gdb-source-window-list) 'source))) "memq" instead of "member". Similarly to the above, writing (window (when buffer (if (eq gud-minor-mode 'gdbmi) (gdb-display-source-buffer buffer) ;; Gud still has the old behavior. (or (get-buffer-window buffer) (display-buffer buffer '(nil (inhibit-same-window . t))))))) permits us to stay within the 80 columns limit. Finally, instead of "Also, we simply the logic ..." I'd write "Also, simplify the logic ...". And please provide a NEWS entry. Thanks again for the work, martin From unknown Fri Jun 20 20:10:44 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display Resent-From: Yuan Fu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 04 Apr 2020 20:30:02 +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 To: martin rudalics Cc: 40268@debbugs.gnu.org Received: via spool by 40268-submit@debbugs.gnu.org id=B40268.158603218224728 (code B ref 40268); Sat, 04 Apr 2020 20:30:02 +0000 Received: (at 40268) by debbugs.gnu.org; 4 Apr 2020 20:29:42 +0000 Received: from localhost ([127.0.0.1]:44868 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jKpQD-0006Qj-CD for submit@debbugs.gnu.org; Sat, 04 Apr 2020 16:29:41 -0400 Received: from mail-qk1-f170.google.com ([209.85.222.170]:38366) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jKpQB-0006QE-56 for 40268@debbugs.gnu.org; Sat, 04 Apr 2020 16:29:39 -0400 Received: by mail-qk1-f170.google.com with SMTP id h14so12016994qke.5 for <40268@debbugs.gnu.org>; Sat, 04 Apr 2020 13:29:39 -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=MEMvEKSzH/rbTJXRuT8HUzVf9ScV/lQkvy5zgipIP/Q=; b=mYf/4H5v95xjtQABa9kQ7yN7wSkpxT7avwFdujOx+NW+g5YxDWxK/uGvW6ejB+U8iQ EHn1NY6jr6j9+8+2Zs6Z9Gj/OShdcyTSqPeg2CgiANqJAN2WsF1Dbc8VCSjLAdTsh8o7 lKAGoSJYa42zwXFixfXRvyg/4pCrdp5OOKMf3VYLuG9NFgA3ycf+fNP2QRJkXKDRo7YG gmS6VoGIHNl7atdycvbC2W5H991FlNrQ5gd73JH8lX4oCkZU2DnG2gAhLEdzP2g/QmcQ vNBe4J44VCiuxSuTwWRznX0Dogq71qsrvE2e/pr00QaNomyjZHGuRpSZ6PsyY+YlgX8T E8NQ== 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=MEMvEKSzH/rbTJXRuT8HUzVf9ScV/lQkvy5zgipIP/Q=; b=SVr0Jpr2O9bbFSg6NzCVYCGxgw5fBq9p2yWJaf06Is9ud1PW4iqkyglT3Ao0mzq+FU JocquVbgP/v0GjuhObDS7prtpMvzZctEWPnjRXgV5ioaTvfTEw4GwGxz++aK4KxcJqkp wa7LrZCMWfPKHTS41C7GNJxrem9ITFlbU2BO1Tpd6O/s+MBHxbteTplMCTiZ9Q5VmxVa 2x05j0KXBwVEeekAixF/eMqwGWaH6hcalqbNLOwIEkvkKx6LuG5mZCm2i6jvBkbRivp2 xG5ldsMl48Iz7BWYYPvp6HWMv403DSsdAxv/ZvpP/J/Jq9DRqeuHpduhhyD/lgLuRnYg JVUg== X-Gm-Message-State: AGi0PuayuIwDPfIG9HMhszgzoZHqQcvXbX3lpSTk19ZetfwSxt511v7Q oMiC9mQ6blYBxgK5AOF74bI= X-Google-Smtp-Source: APiQypLPkiKeuSiPI+iEU6sdtDSkgrxZFIdaTgQIwaQz5/vlNgZd8ASO8mshHpys7NgjJ+BAnb+bAA== X-Received: by 2002:a05:620a:22b1:: with SMTP id p17mr15566401qkh.396.1586032173466; Sat, 04 Apr 2020 13:29:33 -0700 (PDT) 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 m5sm8722103qtk.85.2020.04.04.13.29.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Apr 2020 13:29:32 -0700 (PDT) From: Yuan Fu Message-Id: Content-Type: multipart/mixed; boundary="Apple-Mail=_94F791C5-D0D3-471B-B4D7-44D0671ED8AA" Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Date: Sat, 4 Apr 2020 16:29:31 -0400 In-Reply-To: <115885b9-ddfd-2752-0c8c-aa4f98aacaaf@gmx.at> References: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> <115885b9-ddfd-2752-0c8c-aa4f98aacaaf@gmx.at> X-Mailer: Apple Mail (2.3608.80.23.2.2) X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --Apple-Mail=_94F791C5-D0D3-471B-B4D7-44D0671ED8AA Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Mar 31, 2020, at 5:15 AM, martin rudalics wrote: >=20 > > This one should be ok. >=20 > Thanks. A few remarks. Please try to ident as >=20 > (setq gdb-source-window-list > (cl-remove-duplicates > (cl-remove-if-not > (lambda (win) > (and (window-live-p win) > (equal (window-frame win) > (selected-frame)))) > gdb-source-window-list) > :test #'equal)) >=20 > so we can safely change this later and easily stay within our line > length limits. Also, tests like >=20 > (equal (window-frame win) > (selected-frame)))) >=20 > should use "eq" instead of "equal" and ones like >=20 > ((member (selected-window) gdb-source-window-list) = 'source))) >=20 > "memq" instead of "member". >=20 > Similarly to the above, writing >=20 > (window > (when buffer > (if (eq gud-minor-mode 'gdbmi) > (gdb-display-source-buffer buffer) > ;; Gud still has the old behavior. > (or (get-buffer-window buffer) > (display-buffer buffer '(nil (inhibit-same-window . = t))))))) >=20 > permits us to stay within the 80 columns limit. >=20 > Finally, instead of "Also, we simply the logic ..." I'd write "Also, > simplify the logic ...". And please provide a NEWS entry. >=20 > Thanks again for the work, Martin Thanks for reviewing. Besides the changes you requested, I changed the = last condition in the cond form in `gdb-save-window-configuration=E2=80=99= to a catch-all condition (to avoid weird problem when loading it back). Yuan --Apple-Mail=_94F791C5-D0D3-471B-B4D7-44D0671ED8AA 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=2041a8528515bbb9aeef6880ee3b7bc90320ab8b51=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,=20simplify=20the=20logic=20in=20= 'gdb-display-source-buffer'=20and=0Aadd=20a=20feature=20to=20limit=20the=20= maximum=20number=20of=20source=20windows.=0A=0A*=20= doc/emacs/building.texi=20(GDB=20User=20Interface=20Layout):=20Explain=20= source=0Afile=20display=20in=20GDB.=0A*=20etc/NEWS=20(gdb-mi):=20Add=20= news=20about=20source=20display.=0A*=20lisp/progmodes/gdb-mi.el=20= (gdb-source-window):=20Remove=20variable,=0Achange=20to=20= 'gdb-source-window-list'.=0A(gdb-source-window-list):=20New=20variable.=0A= (gdb-display-source-buffer-action,=0Agdb-max-source-window-count):=20New=20= custom=20variable.=0A(gdb-init-1,=20gdb-setup-windows,=20= gdb-load-window-configuration,=0Agdb-restore-windows):=20Use=20= 'gdb-source-window'=20rather=20than=0A'gdb-source-window-list'.=0A= (gdb-save-window-configuration):=20Use=20'gdb-source-window'=20rather=20= than=0A'gdb-source-window-list'.=20=20And=20consider=20any=20buffer=20= that=20is=20not=20a=0Acommand=20or=20function=20buffer=20as=20a=20source=20= buffer.=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= doc/emacs/building.texi=20=20|=20=208=20+++++=0A=20etc/NEWS=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20=206=20++++=0A=20= lisp/progmodes/gdb-mi.el=20|=2075=20= +++++++++++++++++++++++++++++-----------=0A=20lisp/progmodes/gud.el=20=20= =20=20|=2014=20++++----=0A=204=20files=20changed,=2077=20insertions(+),=20= 26=20deletions(-)=0A=0Adiff=20--git=20a/doc/emacs/building.texi=20= b/doc/emacs/building.texi=0Aindex=208a05680c74..2c43323dc4=20100644=0A= ---=20a/doc/emacs/building.texi=0A+++=20b/doc/emacs/building.texi=0A@@=20= -1022,6=20+1022,14=20@@=20GDB=20User=20Interface=20Layout=0A=20the=20= same=20with=20the=20menu=20bar,=20with=20the=20@samp{GDB-Windows}=20and=0A= =20@samp{GDB-Frames}=20sub-menus=20of=20the=20@samp{GUD}=20menu.=0A=20=0A= +@vindex=20gdb-max-source-window-count=0A+@vindex=20= gdb-display-source-buffer-action=0A+By=20default,=20GDB=20uses=20at=20= most=20one=20window=20to=20display=20source=20file.=20=20You=0A+can=20= make=20it=20use=20more=20windows=20by=20customizing=0A= +@code{gdb-max-source-window-count}.=20=20You=20can=20also=20customize=0A= +@code{gdb-display-source-buffer-action}=20to=20control=20how=20does=20= GDB=0A+display=20source=20files.=0A+=0A=20=20=20When=20you=20finish=20= debugging,=20kill=20the=20GUD=20interaction=20buffer=20with=0A=20= @kbd{C-x=20k},=20which=20will=20also=20kill=20all=20the=20buffers=20= associated=20with=20the=0A=20session.=20=20However=20you=20need=20not=20= do=20this=20if,=20after=20editing=20and=0Adiff=20--git=20a/etc/NEWS=20= b/etc/NEWS=0Aindex=204b477e5def..1260dfa30c=20100644=0A---=20a/etc/NEWS=0A= +++=20b/etc/NEWS=0A@@=20-213,6=20+213,12=20@@=20will=20remember=20the=20= window=20configuration=20before=20GDB=20started=20and=20restore=0A=20it=20= after=20GDB=20quits.=20=20A=20toggle=20button=20is=20also=20provided=20= under=20'Gud=20--=0A=20GDB-Windows'.=0A=20=0A+---=0A+***=20gdb-mi=20now=20= has=20a=20better=20logic=20for=20displaying=20source=20buffers=0A+Now=20= GDB=20only=20uses=20one=20source=20window=20to=20display=20source=20file=20= by=20default.=0A+Customize=20'gdb-max-source-window-count'=20to=20use=20= more=20than=20one=20windows.=0A+Control=20source=20file=20display=20by=20= 'gdb-display-source-buffer-action'.=0A+=0A=20**=20Gravatar=0A=20=0A=20= ---=0Adiff=20--git=20a/lisp/progmodes/gdb-mi.el=20= b/lisp/progmodes/gdb-mi.el=0Aindex=207fb3687391..d513c7606d=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=20= most-recently-visited-first=20order.")=0A=20(defvar=20= gdb-inferior-status=20nil)=0A=20(defvar=20gdb-continuation=20nil)=0A=20= (defvar=20gdb-supports-non-stop=20nil)=0A@@=20-645,6=20+647,21=20@@=20= gdb-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,36=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=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (lambda=20(win)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=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(eq=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= (selected-frame))))=0A+=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;;=20Should=20we=20= create=20a=20new=20window=20or=20reuse=20one?=0A+=20=20=20=20=20=20=20=20= (if=20(>=20gdb-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=20= list=20and=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+4100,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+4749,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= +4825,8=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;;=20Consider=20everything=20else=20as=20source=20= buffer.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (t=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+4869,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+4910,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..eb43e8b7e4=20100644=0A---=20a/lisp/progmodes/gud.el=0A+++=20= b/lisp/progmodes/gud.el=0A@@=20-2826,9=20+2826,13=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=0A+=20=20=20=20= =20=20=20=20=20=20(when=20buffer=0A+=20=20=20=20=20=20=20=20=20=20=20=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(gdb-display-source-buffer=20buffer)=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20;;=20Gud=20still=20has=20the=20old=20behavior.=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20(or=20(get-buffer-window=20= buffer)=0A+=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+2862,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=_94F791C5-D0D3-471B-B4D7-44D0671ED8AA Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_94F791C5-D0D3-471B-B4D7-44D0671ED8AA-- From unknown Fri Jun 20 20:10:44 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 06 Apr 2020 09:05:02 +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 To: Yuan Fu Cc: 40268@debbugs.gnu.org Received: via spool by 40268-submit@debbugs.gnu.org id=B40268.158616387419346 (code B ref 40268); Mon, 06 Apr 2020 09:05:02 +0000 Received: (at 40268) by debbugs.gnu.org; 6 Apr 2020 09:04:34 +0000 Received: from localhost ([127.0.0.1]:47153 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLNgI-00051x-Jx for submit@debbugs.gnu.org; Mon, 06 Apr 2020 05:04:34 -0400 Received: from mout.gmx.net ([212.227.15.15]:45655) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLNgG-00051S-Ly for 40268@debbugs.gnu.org; Mon, 06 Apr 2020 05:04:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1586163866; bh=szj+hGfxEHdld+XYKeU2S8GkWn4yvB4h4Yh2q1gjDug=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=BYP4t6jvF17Q4CsivsZ0TXLy/PYJDpuruFnbnA/+F5gl9fC8H8DvU8FVMOVDl4ymL f0Me42vkP83xuIiCseuJ1ugycqaBM+apCLgJ/Nae5AmhgmK9tU44Ti/s6sxtArh10+ 2vaESQxXZL0lVFrTmgYA7MCAUcbv78FMVvaA5Hx8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([212.95.5.102]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MhlKs-1iqQZd4Apk-00dlUI; Mon, 06 Apr 2020 11:04:26 +0200 References: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> <115885b9-ddfd-2752-0c8c-aa4f98aacaaf@gmx.at> From: martin rudalics Message-ID: <029e636e-9dc1-339f-c09d-76f11b667372@gmx.at> Date: Mon, 6 Apr 2020 11:04:25 +0200 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:g8+Yba9Lb23lRX6xCXiM1y/xNAzmDyAo/EF1Pt9Bss5jXfGuxJb h15GMx4XJiHgBMzYF2JiAXuKKpQyRMpSnVpjiDcFnrc2f3J5pgZDnCU2FXlW1VgJxqy8/2B hHYP7mk9tAU8pdT5OTJE+RfH5wSGLGdtuXuzmmZP4cnlm3KKVcU6M8qI24y6ADn3xpJ/ST3 LzIZqqBOT/WqXUMU/LAag== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:EuJF0viTUp4=:agXwrO+GAt1UiCy2iB2sQ+ jRFaX+T9j54QQHy4uSzb9n/kSqGwHZEgLM0PwYQs05/ow1S8ztJ+omC5a5U7yyBhb3xp8AcGP xIvrhPF23MCV+hEv82lzZNfYzHrxIEOc7SXtjmzKuR0TCKlds4D95TXN0i5Jb5nlQ70NNj1PA eotAJx2r9zsRLYZ9HJ6CM6g5Z2W1UnUrw+y/IR4q8/myFvZr5nvIsPx51465EgIikZ/ohZhCj qhnCYMaPSQ1wu44u63PueRUGSmQt8qPKj53ZJ6bPV6pxLjCS18YPYLxU3ptJ7lCiHg5DTu/uJ F+lkBsehBvqBuI4jtvx8ggYg9AykWNfkpRFPY+uOW8NiiCFY49AaNksxZC/u+75n7gOtryHtL gLr2eB6RZNORxdzqTNIxK90tzRNgi+sc9LV5c080Vn+3NAw6sEIsMfIiYLEaTZ1gnqSwbfP8t PrjiBppix0wOgzIobZYew0DTVtaEsJ8aWGbXVMj/JESTl4uAgtHez4uT0sRkgBJXyw4AP9Rse ca7TqNSd8FBoAiCi51kS2hN7WGlox7/NthMZQl8RYGNUcMe44c7+vra0iR+90fEFuqnGwlG2X 41Kt9qDUjYIvDJeV4o/6aOpULnj41sGJLBCH+bly+fSCXdzJjD20770ABdteXQSO/u47cVxY9 6A1oj3Xc52E3ebv+uf0+e8bLYS0zbPavxup8ugN12NrZ0P87RAgbi5UKZOzI4HSiUKl0+Aifd o08JdmUOCqq/L/0oSxeK5u5+s1npsjulgM59lQ/tmrxwg71d6x0J9qkn+gQX2T91uHtxo9unz drNzJmoPoKrg947N0CLv4sgUiL9icyrnLTqo6x40rrFlEMQk1C8MTcDWWn+ig5njvd8AvywdL 65oBxvMDzsikexzYqOF8mdsZa+iV6LEIE58QzTxmHji3M3xENOW/NQEwrB8QWD6lVuG49g6ZE vnD/oE9B13WeLD0tN6B4cMGmv74Ndm1SeokX5mg7djdj14WRgKO+6cJ0X/B6E18pUshfP0jXy CcOBUd+2UAzH70L5jYy1gzLGJp3QDdf7w+uLQlR5vSPnobd1K9RCbJSUhbYotkEvT5s5n/SZO c2YstVeQNviWGQjvObkeZzOtXVrra+vCYydp3acOTxHoSjdS9V6NylLA4CAZX/+HGEs/70FFd +49WdUjTZi0L6NjZg3JqSkxaY8bTaKa9DOLOfrxBAsvEYZvui3SsdnHieOrV8BHbyGd+1u88R FOZNHC4R0NN1vcbfI X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Thanks for reviewing. Besides the changes you requested, I changed the= > last condition in the cond form in `gdb-save-window-configuration=E2=80= =99 to > a catch-all condition (to avoid weird problem when loading it back). Pushed to master with my usual tweaks. Please have a look. Thanks, martin From unknown Fri Jun 20 20:10:44 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display Resent-From: Yuan Fu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 06 Apr 2020 14:22: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 To: martin rudalics Cc: 40268@debbugs.gnu.org Received: via spool by 40268-submit@debbugs.gnu.org id=B40268.15861829002790 (code B ref 40268); Mon, 06 Apr 2020 14:22:01 +0000 Received: (at 40268) by debbugs.gnu.org; 6 Apr 2020 14:21:40 +0000 Received: from localhost ([127.0.0.1]:49016 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLSdA-0000iv-7J for submit@debbugs.gnu.org; Mon, 06 Apr 2020 10:21:40 -0400 Received: from mail-qk1-f172.google.com ([209.85.222.172]:32852) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLSd8-0000iN-O2 for 40268@debbugs.gnu.org; Mon, 06 Apr 2020 10:21:39 -0400 Received: by mail-qk1-f172.google.com with SMTP id v7so16333493qkc.0 for <40268@debbugs.gnu.org>; Mon, 06 Apr 2020 07:21:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=xVp2B7yEwNR2gvBtkFgyEde8KUsMbGaZ8MdexRMQB9s=; b=faSM9c/GzvkJvLWqM9De/yFE9hwy7p7hLQNQf4eTpeNAXOuxlDloFessnJaIaRYtju P1NygYjQIm5NiUCRBY0m0E07ip+nBD5EKNXH6gwlDBBjcwy9go1TstZNViMr/o6FQZ4l 7gCuUzYMd3YE9jUFYjkRaS3gX+rPySYJkoTfC0FssR9LpllyIYjT6bryayBwDSeJS9Bj Kx9XDfJgdkXy+nP9JBMNA9Kf023A/wP/7mpCRzL36j48zcKirRpfD/zNcIb+Y/1pEcP6 dziOCzdnsAO2RiGXYse5kGuwjISGDcvioVyYULPBT7q+sZxqa2ktrRMx/MUiqk5ZbE79 avwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=xVp2B7yEwNR2gvBtkFgyEde8KUsMbGaZ8MdexRMQB9s=; b=bRSeeiDdYNM355nBKx4N0GYo8cJAyXzMpzg/EYoj2oMWKKPxvpPydeow+5dcCSCwNb OCqbnwKWNfKVSWT+BNxc+i/+4Nmmumos3MGpiQURNYFbJfNEV/s8ndDYGIiqVQxGc1Vd OD28WA1sK7ZWUoIX0HdpYtVKBf2I/OlTE3Bsum1r5ze92v9upVcSgAvhxOIIz2SuTWby 0Y+DAHwmWLhdPl5M4NKPOQmcJmgSi7wC72MM7A0kbYFZo2fo82gQsujPb12+h0k9tZO6 5mygr+MC2knA+CiiZAanORqJ3S9LGVRqI6ATetLWW6GKkz2fBxxX1XFchO766PsKOfBK NWWA== X-Gm-Message-State: AGi0PuYJ3Is61J8h+ieQgCEpzC3wBH3xrnFK8/wIaJgtGD3jLR4BMCG7 Y4jMhnHsoVkNLWa2pHBkCfQ= X-Google-Smtp-Source: APiQypIpyoVHT3+b359XXbw6b8guqA35yW2+1T+sMLSJA6YhCpnM/aZ/KX6TW2qvSaGdOpI9v4suKA== X-Received: by 2002:a05:620a:cc6:: with SMTP id b6mr21787405qkj.74.1586182893152; Mon, 06 Apr 2020 07:21:33 -0700 (PDT) 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 g29sm15503731qte.0.2020.04.06.07.21.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 06 Apr 2020 07:21:32 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) From: Yuan Fu In-Reply-To: <029e636e-9dc1-339f-c09d-76f11b667372@gmx.at> Date: Mon, 6 Apr 2020 10:21:30 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: <75FFAF75-3B56-4F8E-B097-982C4DAE5CB3@gmail.com> References: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> <115885b9-ddfd-2752-0c8c-aa4f98aacaaf@gmx.at> <029e636e-9dc1-339f-c09d-76f11b667372@gmx.at> X-Mailer: Apple Mail (2.3608.80.23.2.2) X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > On Apr 6, 2020, at 5:04 AM, martin rudalics wrote: >=20 > > Thanks for reviewing. Besides the changes you requested, I changed = the > > last condition in the cond form in `gdb-save-window-configuration=E2=80= =99 to > > a catch-all condition (to avoid weird problem when loading it back). >=20 > Pushed to master with my usual tweaks. Please have a look. >=20 > Thanks, martin >=20 Thanks, I=E2=80=99ll try to address them next time. Yuan= From unknown Fri Jun 20 20:10:44 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Yuan Fu Subject: bug#40268: closed (Fwd: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display) Message-ID: References: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> X-Gnu-PR-Message: they-closed 40268 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 40268@debbugs.gnu.org Date: Tue, 14 Apr 2020 01:11:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1586826662-4478-1" This is a multi-part message in MIME format... ------------=_1586826662-4478-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 40268@debbugs.gnu.org. --=20 40268: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D40268 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1586826662-4478-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 40268-done) by debbugs.gnu.org; 14 Apr 2020 01:10:02 +0000 Received: from localhost ([127.0.0.1]:32905 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jOA5S-00018m-DQ for submit@debbugs.gnu.org; Mon, 13 Apr 2020 21:10:02 -0400 Received: from mail-qk1-f181.google.com ([209.85.222.181]:40319) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jOA5Q-00018D-TW for 40268-done@debbugs.gnu.org; Mon, 13 Apr 2020 21:10:01 -0400 Received: by mail-qk1-f181.google.com with SMTP id w70so7421308qkb.7 for <40268-done@debbugs.gnu.org>; Mon, 13 Apr 2020 18:10:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:mime-version:subject:message-id:references:to:date; bh=lA8fPZ74Fc4Vvtt9nsXYEvGmSLUxVz/3wf3PXzVkIY8=; b=uemFPMU9ZBcrU+oRSC/nJhSrz9N9Pf4JWIhlOJwNGtq8nZ6CTsBjf0cNUzccUsJlxG wKr0dB17YeeZry28NeayCQ3Eh4tqA/hW5n3LvF7aHKNsY4aXh5m0fMUiDvFcxv+sIKXT UAGKNpcR8wT2dB38DpeV2LMMhBnXwjeJPLzSJ8tXNy+ctoqXeEUifeUhxjKLTFymOEUn zPdIfHhMDrA8QpbS3NkV1DaHPFPW+8ycDVvI5W/HRhG6FzOJWTtRup96Clok8hQeRlq/ 0a3C7lNm0nzr8Kr3cvDmCbVijDvJEEkfLuOAZ/VSpruI5oFYfcanqwR2moSMUUBB6v+F Q6Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:subject:message-id:references :to:date; bh=lA8fPZ74Fc4Vvtt9nsXYEvGmSLUxVz/3wf3PXzVkIY8=; b=dHDiyX7yWCaFmcIqdpGNqUpn3ln4RRyeBv8S6/RL9Iu0d50+e9S6AH4zjnvewVCQbO RCTbe16Mixy7uCqkZ62xgvH85CS567XFgHDrEGDI/jfKP6eL5dBtA+aWGrxsEtZp4EJ/ xPgTleScZZbNNHVvzpVws1rKXkVYI5m4YkgWiOwdbL5bI+k2FtSr197i/k5oC7TXIV78 C45cArJVsM/MkzmnoaJ2bs0vkiIW17R2wOm9pxIFkCStumWjZZJSkR+4K2S8knS/ylZD eFRBfoDfbRWaGKzcZ18BnX9gllkHiVHexVgAReyqPuW3TeHVb0yLNCTYLUw02YLeWFh8 EE4g== X-Gm-Message-State: AGi0Pua1dO78tnCjybG1T4C/3tefLwnnfZLtIBiREQk08lsl4ASud3Vm RsuFMGJhqNviydJj8FMUQExRFJXcoj8cMA== X-Google-Smtp-Source: APiQypLCFvZA6SAcXKC7NiBsEBgfWVa0okaN4N5kHYrz1xxk6ZMYuLSWPpzuWwCrkDztIg9kuCenpA== X-Received: by 2002:a05:620a:16b0:: with SMTP id s16mr19428304qkj.204.1586826594985; Mon, 13 Apr 2020 18:09:54 -0700 (PDT) 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 y188sm6360078qkd.35.2020.04.13.18.09.54 for <40268-done@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Apr 2020 18:09:54 -0700 (PDT) From: Yuan Fu Content-Type: multipart/alternative; boundary="Apple-Mail=_7FA9471C-0BC7-41C0-885B-873DE8A357DE" Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Subject: Fwd: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi source window display Message-Id: References: <310914cd-1822-3fe9-19ae-6e47f8e72072@gmx.at> To: 40268-done@debbugs.gnu.org Date: Mon, 13 Apr 2020 21:09:53 -0400 X-Mailer: Apple Mail (2.3608.80.23.2.2) X-Spam-Score: -0.8 (/) X-Debbugs-Envelope-To: 40268-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.8 (-) --Apple-Mail=_7FA9471C-0BC7-41C0-885B-873DE8A357DE Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > Begin forwarded message: >=20 > From: martin rudalics > Subject: Re: bug#40268: 27.0.60; [PATCH] Unify and improve gdb-mi = source window display > Date: April 13, 2020 at 1:29:00 PM GMT-4 > To: Yuan Fu >=20 >> Thanks, I=E2=80=99ll try to address them next time. >> Yuan >=20 > Please consider marking this and maybe some other bug (Bug#39181?) > as done unless we should change something else too. >=20 > Thanks, martin >=20 >=20 >=20 --Apple-Mail=_7FA9471C-0BC7-41C0-885B-873DE8A357DE Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8

Begin forwarded message:

From: = martin rudalics <rudalics@gmx.at>
Subject: = Re: bug#40268: = 27.0.60; [PATCH] Unify and improve gdb-mi source window display
Date: = April 13, 2020 at 1:29:00 PM = GMT-4
To: = Yuan Fu <casouri@gmail.com>

Thanks, I=E2=80=99ll try = to address them next time.
Yuan

Please consider marking this and = maybe some other bug (Bug#39181?)
as done unless we should = change something else too.

Thanks, = martin




= --Apple-Mail=_7FA9471C-0BC7-41C0-885B-873DE8A357DE-- ------------=_1586826662-4478-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 28 Mar 2020 04:03:32 +0000 Received: from localhost ([127.0.0.1]:33589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jI2h1-0006nj-TP for submit@debbugs.gnu.org; Sat, 28 Mar 2020 00:03:32 -0400 Received: from lists.gnu.org ([209.51.188.17]:32808) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jI2gz-0006nY-Np for submit@debbugs.gnu.org; Sat, 28 Mar 2020 00:03:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33039) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jI2gx-0001gp-Gv for bug-gnu-emacs@gnu.org; Sat, 28 Mar 2020 00:03:29 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jI2gv-00020d-Cb for bug-gnu-emacs@gnu.org; Sat, 28 Mar 2020 00:03:27 -0400 Received: from mail-qk1-x736.google.com ([2607:f8b0:4864:20::736]:36590) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jI2gu-0001xe-AC for bug-gnu-emacs@gnu.org; Sat, 28 Mar 2020 00:03:24 -0400 Received: by mail-qk1-x736.google.com with SMTP id d11so13183295qko.3 for ; Fri, 27 Mar 2020 21:03:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:mime-version:subject:message-id:date:to; bh=0X/VhtmWmzlwBrzMvrh91++LpelDXSMdA+uRde6NpSY=; b=ewsvFAx5F0aMSkEBd9BsGhzNA6LHrHjLsnpFXUTO0LxVvSNBi/v0wgBq9miBvyYGFB dTDy8EwJ09TvyF+lqQPMv7SHLGNZLAB45zKmwX5L7PGB8eb0ArWT2bCzbReMWetE2xdp VCSJEsGSXHvBhpei8kpUNTtgwINCl3WUrvkto020utsWZYzxCzewRvhFloocqckGxkQX /RQh8eC47rShkFlg6NX+w7N7t4GkZta5IkBCVi/+la5YTrDOY78XKrUOo10tx4bJJra4 By6FAoNroT2EX/ru+/wGyVlq9s2mlElhOpEkLqcylwX5448ooQeBCHE4bqUORZsWX1CW VJug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:subject:message-id:date:to; bh=0X/VhtmWmzlwBrzMvrh91++LpelDXSMdA+uRde6NpSY=; b=hPAQaH/+2tULh2POjOAA7gB0IL1DKLonPBaR+0SLEoRBQPZluUYaz1QWibzwMywC3G lP9ZvCm4gv6fZGEzPS8vEgxemi2xBtODXrG3AelRUEWApPuVWgOgSiaMtYp5rz2QfXPg kmNFC4nPmrvVzZGbcWbFJcyztVh0+mESLJ2RDsHA1Oh/xoXGoZVtBor28KYyybKzJG3i EhmeUCUCXouv1m8xZgK/clxsZ7sq2dfBtKgQB4Hsv18fyl89lUW9OStgaBejYQ7s3nAO VTzDYxOv0khKOuy9xjNHEwDAtWSnQJhiXA0d8MCRgSWbxEdYYe3xrN9YDk62BUxu1mKn gQOg== X-Gm-Message-State: ANhLgQ2Ov6BkOlWRrhfDg8P1tTJetDcxqUT66xT8eHLt5asAFEdS2Sss 7AxY4+0FxFbx0QpXrdRyqGzFf1xJr76p7g== X-Google-Smtp-Source: ADFU+vtyzMs6MSJ5geGBMwi4YcIn0zUqw9+59I1Qxku1pfaXTTRrHwz/s7ZsaXVo8qjlPUL/MCDW1w== X-Received: by 2002:a05:620a:2f7:: with SMTP id a23mr2281517qko.303.1585368203162; Fri, 27 Mar 2020 21:03:23 -0700 (PDT) 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 f127sm5223255qkd.74.2020.03.27.21.03.22 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Mar 2020 21:03:22 -0700 (PDT) From: Yuan Fu Content-Type: multipart/mixed; boundary="Apple-Mail=_D367402C-923B-4C93-961D-BAB537DC2993" Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Subject: 27.0.60; [PATCH] Unify and improve gdb-mi source window display Message-Id: <63AC5BC7-CFFC-42DF-AD76-3414B631A6DE@gmail.com> Date: Sat, 28 Mar 2020 00:03:21 -0400 To: Bug Report Emacs X-Mailer: Apple Mail (2.3608.80.23.2.2) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::736 X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) --Apple-Mail=_D367402C-923B-4C93-961D-BAB537DC2993 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Before this change, stepping and other gdb command handlers use = 'gud-display-line=E2=80=99 and 'gdb-goto-breakpoint' uses = 'gdb-display-source-buffer'. Now whenever gdb-mi code tries to open a = source buffer, 'gdb-display-source-buffer=E2=80=99 is used. Also, we = simplify the logic in 'gdb-display-source-buffer=E2=80=99 and add a = feature to limit the maximum number of source windows. =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. Yuan --Apple-Mail=_D367402C-923B-4C93-961D-BAB537DC2993 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=20ad34237cdc7c06e7edfcb593e8c732c6a040a7cb=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Yuan=20Fu=20=0ADate:=20Tue,=20= 21=20Jan=202020=2016:23:57=20-0500=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=20simplify=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= changed=20to=20'gdb-source-window-list'.=0A(gdb-source-window-list,=20= gdb-max-source-window-count):=20New=20variable.=0A= (gdb-display-source-buffer-action,=0Agdb-max-source-window-count):=20New=20= custom=20variable.=0A(gdb-init-1,=20gdb-setup-windows,=20= gdb-restore-windows):=0AUse=20'gdb-source-window'=20rather=20than=20= 'gdb-source-window-list'.=0A(gdb-display-source-buffer):=20Use=20new=20= logic.=0A(gdb-goto-breakpoint):=20Remove=20'display-buffer'=0Aand=20= don't=20set=20'gdb-source-buffer'=20anymore.=0A*=20lisp/progmodes/gud.el=20= (gud-display-line):=20Remove=20'display-buffer'=0Aand=20don't=20set=20= 'gdb-source-buffer'=20anymore.=0A---=0A=20lisp/progmodes/gdb-mi.el=20|=20= 65=20+++++++++++++++++++++++++++++-----------=0A=20lisp/progmodes/gud.el=20= =20=20=20|=2026=20++++++++--------=0A=202=20files=20changed,=2060=20= insertions(+),=2031=20deletions(-)=0A=0Adiff=20--git=20= a/lisp/progmodes/gdb-mi.el=20b/lisp/progmodes/gdb-mi.el=0Aindex=20= e4233dacaf..5f31a22f22=20100644=0A---=20a/lisp/progmodes/gdb-mi.el=0A+++=20= b/lisp/progmodes/gdb-mi.el=0A@@=20-211,7=20+211,9=20@@=20= gdb-handler-list=0A=20(defvar=20gdb-source-file-list=20nil=0A=20=20=20= "List=20of=20source=20files=20for=20the=20current=20executable.")=0A=20= (defvar=20gdb-first-done-or-error=20t)=0A-(defvar=20gdb-source-window=20= nil)=0A+(defvar=20gdb-source-window-list=20nil=0A+=20=20"List=20of=20= windows=20used=20for=20displaying=20source=20files.=0A+Sorted=20in=20= most=20recently=20visited=20first=20order.")=0A=20(defvar=20= gdb-inferior-status=20nil)=0A=20(defvar=20gdb-continuation=20nil)=0A=20= (defvar=20gdb-supports-non-stop=20nil)=0A@@=20-589,6=20+591,21=20@@=20= gdb-show-main=0A=20=20=20:group=20'gdb=0A=20=20=20:version=20"22.1")=0A=20= =0A+(defcustom=20gdb-display-source-buffer-action=20nil=0A+=20=20= "`display-buffer'=20action=20used=20when=20GDB=20displaying=20a=20source=20= buffer."=0A+=20=20:type=20'list=0A+=20=20:group=20'gdb=0A+=20=20:version=20= "28.1")=0A+=0A+(defcustom=20gdb-max-source-window-count=201=0A+=20=20= "Maximum=20number=20of=20source=20windows=20to=20use.=0A+Until=20there=20= are=20such=20number=20of=20source=20windows=20on=20screen,=20GDB=0A= +tries=20to=20open=20a=20new=20window=20when=20visiting=20a=20new=20= source=20file;=20if=0A+there=20are,=20GDB=20will=20start=20to=20reuse=20= existing=20source=20windows."=0A+=20=20:type=20'number=0A+=20=20:grou=20= 'gdb=0A+=20=20:version=20"28.1")=0A+=0A=20(defvar=20gdbmi-debug-mode=20= nil=0A=20=20=20"When=20non-nil,=20print=20the=20messages=20sent/received=20= from=20GDB/MI=20in=20*Messages*.")=0A=20=0A@@=20-922,7=20+939,7=20@@=20= gdb-init-1=0A=20=09gdb-first-done-or-error=20t=0A=20=09= gdb-buffer-fringe-width=20(car=20(window-fringes))=0A=20=09gdb-debug-log=20= nil=0A-=09gdb-source-window=20nil=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=20gdb-buf-publisher=20'()=0A@@=20-2002,17=20+2019,31=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-if-not=20#'window-live-p=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= gdb-source-window-list))=0A+=20=20=20=20=20=20=20=20;;=20Should=20we=20= create=20a=20new=20window=20or=20reuse=20one?=0A+=20=20=20=20=20=20=20=20= (if=20(>=20gdb-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=20= list=20and=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-3981,9=20+4012,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-4597,7=20+4626,7=20@@=20= gdb-setup-windows=0A=20=20=20=20=20=20=20=20=20=20;;=20Put=20buffer=20= list=20in=20window=20if=20we=0A=20=20=20=20=20=20=20=20=20=20;;=20can't=20= find=20a=20source=20file.=0A=20=20=20=20=20=20=20=20=20=20= (list-buffers-noselect))))=0A-=20=20=20=20(setq=20gdb-source-window=20= (selected-window))=0A+=20=20=20=20(setq=20gdb-source-window-list=20(list=20= (selected-window)))=0A=20=20=20=20=20(let=20((win4=20= (split-window-right)))=0A=20=20=20=20=20=20=20(gdb-set-window-buffer=0A=20= =20=20=20=20=20=20=20(gdb-get-buffer-create=20'gdb-inferior-io)=20nil=20= win4))=0A@@=20-4639,7=20+4668,7=20@@=20gdb-restore-windows=0A=20=20=20=20= =20=20=20=20=20=20(if=20gud-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=20gdb-source-window-list=20(list=20win))))))=0A=20=0A=20;;=20= Called=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=0A= index=20567f452b93..dda7fd6ef0=20100644=0A---=20a/lisp/progmodes/gud.el=0A= +++=20b/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'gdb-mi)=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-2908,14=20+2908,14=20@@=20= gud-format-command=0A=20=09=20=20(setq=20subst=0A=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(gud-find-class=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(if=20insource=0A-=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20(buffer-file-name)=0A-=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(car=20frame))=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(buffer-file-name)=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(car=20frame))=0A=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20insource=0A-=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (save-restriction=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(widen)=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(count-lines=20(point-min)=20(point))=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(if=20(bolp)=201=200)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(cdr=20frame)))))=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(save-restriction=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(widen)=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(count-lines=20= (point-min)=20(point))=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(if=20(bolp)=201=200)))=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(cdr=20frame)))))=0A=20=09=20((eq=20= key=20?p)=0A=20=09=20=20(setq=20subst=20(if=20arg=20(int-to-string=20= arg)))))=0A=20=09(setq=20result=20(concat=20result=20(match-string=201=20= str)=20subst)))=0A--=20=0A2.25.1=0A=0A= --Apple-Mail=_D367402C-923B-4C93-961D-BAB537DC2993 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii In GNU Emacs 27.0.60 (build 1, x86_64-apple-darwin19.3.0, NS = appkit-1894.30 Version 10.15.3 (Build 19D76)) of 2020-02-25 built on missSilver Repository revision: f27187f963e9e36435b508e29256e048799e0ff2 Repository branch: emacs-27 Windowing system distributor 'Apple', version 10.3.1894 System Description: Mac OS X 10.15.4 Recent messages: Checking 34 files in /Users/yuan/emacs/lisp/emulation... Checking 180 files in /Users/yuan/emacs/lisp/emacs-lisp... Checking 24 files in /Users/yuan/emacs/lisp/cedet... Checking 59 files in /Users/yuan/emacs/lisp/calendar... Checking 87 files in /Users/yuan/emacs/lisp/calc... Checking 113 files in /Users/yuan/emacs/lisp/obsolete... Checking for load-path shadows...done Auto-saving... Buffer *unsent mail to bug-gnu-emacs@gnu.org* modified; kill anyway? (y = or n) y C-c C-c is undefined Configured using: 'configure --with-modules --with-pdumper=3Dyes = --oldincludedir=3D/Applications/Xcode.app/Contents/Developer/Platforms/Mac= OSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2/' Configured features: RSVG GLIB NOTIFY KQUEUE ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS XIM NS MODULES THREADS PDUMPER LCMS2 Important settings: value of $LC_CTYPE: UTF-8 value of $LANG: en_CN.UTF-8 locale-coding-system: utf-8-unix Major mode: Shell-script Minor modes in effect: global-semanticdb-minor-mode: t global-semantic-idle-scheduler-mode: t semantic-mode: t sh-electric-here-document-mode: t global-magit-file-mode: t magit-file-mode: t global-git-commit-mode: t async-bytecomp-package-mode: t shell-dirtrack-mode: t diff-hl-mode: t color-outline-mode: t hi-lock-mode: t desktop-save-mode: t helpful-html-manual-mode: t yas-global-mode: t yas-minor-mode: t form-feed-mode: t minibuffer-electric-default-mode: t flycheck-mode: t flyspell-mode: t minions-mode: t eyebrowse-mode: t savehist-mode: t global-hl-todo-mode: t hl-todo-mode: t global-highlight-parentheses-mode: t highlight-parentheses-mode: t rainbow-delimiters-mode: t global-undo-tree-mode: t undo-tree-mode: t electric-pair-mode: t winner-mode: t ivy-prescient-mode: t prescient-persist-mode: t recentf-mode: t which-key-mode: t general-override-mode: t outline-minor-mode: t counsel-mode: t ivy-mode: t company-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t electric-quote-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t hs-minor-mode: t Load-path shadows: /Users/yuan/.emacs.d/ranch/winman/windman hides = /Users/yuan/.emacs.d/ranch/windman/windman /Users/yuan/.emacs.d/ranch/separedit/cask-bootstrap hides = /Users/yuan/.emacs.d/ranch/comment-edit/cask-bootstrap /Users/yuan/.emacs.d/ranch/esup/esup-child hides = /Users/yuan/.emacs.d/package/esup-20200120.740/esup-child /Users/yuan/.emacs.d/ranch/esup/esup hides = /Users/yuan/.emacs.d/package/esup-20200120.740/esup /Users/yuan/.emacs.d/ranch/julia-mode/julia-mode hides = /Users/yuan/.emacs.d/package/julia-mode-20190813.1326/julia-mode /Users/yuan/.emacs.d/ranch/julia-mode/julia-latexsubs hides = /Users/yuan/.emacs.d/package/julia-mode-20190813.1326/julia-latexsubs /Users/yuan/.emacs.d/ranch/matlab-emacs/mlint hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/mlint /Users/yuan/.emacs.d/ranch/matlab-emacs/company-matlab-shell hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/company-matlab-shel= l /Users/yuan/.emacs.d/ranch/matlab-emacs/linemark hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/linemark /Users/yuan/.emacs.d/ranch/matlab-emacs/semanticdb-matlab hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/semanticdb-matlab /Users/yuan/.emacs.d/ranch/matlab-emacs/semantic-matlab hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/semantic-matlab /Users/yuan/.emacs.d/ranch/matlab-emacs/srecode-matlab hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/srecode-matlab /Users/yuan/.emacs.d/ranch/matlab-emacs/matlab hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/matlab /Users/yuan/.emacs.d/ranch/matlab-emacs/cedet-matlab hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/cedet-matlab /Users/yuan/.emacs.d/ranch/matlab-emacs/tlc hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/tlc /Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-publish hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/matlab-publish /Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-mode-pkg hides = /Users/yuan/.emacs.d/package/matlab-mode-20180928.1526/matlab-mode-pkg /Users/yuan/.emacs.d/package/faceup-20170925.1946/faceup hides = /Users/yuan/emacs/lisp/emacs-lisp/faceup Features: (shadow sort mail-extr emacsbug sendmail face-remap rfc1345 quail semantic/tag-write semantic/tag-file semantic/bovine/c hideif semantic/bovine/c-by semantic/lex-spp semantic/bovine/gcc semantic/analyze/refs semantic/db-file data-debug cedet-files semantic/bovine/scm semantic/decorate/include semantic/db-find semantic/db-ref semantic/decorate/mode semantic/decorate pulse semantic/dep semantic/bovine/scm-by semantic/bovine semantic/db-mode semantic/idle semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn semantic/db eieio-base semantic/format ezimage semantic/tag-ls semantic/find semantic/ctxt semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet cc-mode-expansions cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ls-lisp ess-custom apropos sh-script smie executable geiser-mode geiser-xref geiser-compile geiser-debug geiser-gambit geiser-chibi geiser-mit geiser-chez geiser-chicken geiser-racket geiser-guile ghelp-geiser console-buffer geiser geiser-repl geiser-image geiser-company geiser-doc geiser-menu geiser-edit geiser-completion geiser-autodoc geiser-eval geiser-connection tq geiser-syntax geiser-log geiser-popup view geiser-impl geiser-custom geiser-base scheme vc-mtn vc-hg bug-reference magit-patch-changelog magit-patch magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func magit-diff smerge-mode magit-core magit-autorevert autorevert magit-margin magit-transient magit-process magit-mode transient git-commit magit-git magit-section magit-utils crm log-edit pcvs-util add-log with-editor async-bytecomp async shell misearch multi-isearch vc-git vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs bookmark server cl-print gnutls mm-archive message rfc822 mml mml-sec epa derived gnus-util rmail rmail-loaddefs text-property-search mailabbrev gmm-utils mailheader mm-decode mm-bodies mm-encode mail-utils network-stream url-http mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw nsm rmc puny url-cache url-auth url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf mailcap epg epg-config hideshow diff-hl vc-dir vc vc-dispatcher diff-mode color-outline hi-lock company-oddmuse company-keywords company-etags etags fileloop generator company-gtags company-dabbrev-code company-dabbrev company-files company-capf company-cmake company-xcode company-clang company-semantic company-eclim company-template company-bbdb desktop frameset trivial-copy ghelp ghelp-eglot ghelp-helpful ghelp-builtin cus-edit centaur-tabs centaur-tabs-interactive centaur-tabs-functions centaur-tabs-elements powerline powerline-separators powerline-themes cus-start cus-load luna-general-config pause utility transform flywrap yasnippet sly-el-indent sly-cl-indent cl-indent cl all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons memoize form-feed minibuf-eldef eglot array filenotify jsonrpc ert pp ewoc debug flymake-proc flymake warnings url-util flycheck flyspell ispell outshine outshine-org-cmds outorg isolate inline expand-region text-mode-expansions the-org-mode-expansions er-basic-expansions thingatpt expand-region-core expand-region-custom ws-butler minions eyebrowse savehist buffer-move windmove hl-todo highlight-parentheses rainbow-delimiters doom-cyberpunk-theme undo-tree diff doom-one-light-theme elec-pair winner doom-themes doom-themes-base windman aggressive-indent find-char ivy-prescient prescient recentf-ext recentf tree-widget wid-edit which-key general helpful imenu trace edebug backtrace info-look f dash-functional help-fns radix-tree elisp-refs s loop dash org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete pcomplete org-list org-faces org-entities time-date noutline outline org-version ob-emacs-lisp ob-core ob-eval org-table ol org-keys org-compat advice org-macs org-loaddefs format-spec find-func cal-menu calendar cal-loaddefs counsel xdg xref project dired dired-loaddefs compile comint ansi-color swiper cl-extra help-mode ivy delsel ring colir color ivy-overlay company edmacro kmacro pcase use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key use-package-core finder-inf tex-site proof-site proof-autoloads info cowboy package easymenu browse-url url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map url-vars cl-loaddefs cl-lib lunary lunary-ui easy-mmode luna-f rx seq byte-opt gv bytecomp byte-compile cconv tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads kqueue cocoa ns lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 489882 97798) (symbols 48 40858 45) (strings 32 193314 9271) (string-bytes 1 4564854) (vectors 16 58289) (vector-slots 8 1900639 84204) (floats 8 468 326) (intervals 56 7219 1188) (buffers 1000 40)) --Apple-Mail=_D367402C-923B-4C93-961D-BAB537DC2993-- ------------=_1586826662-4478-1--