From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Yuan Fu Newsgroups: gmane.emacs.bugs Subject: bug#39181: 27.0.50; [PATCH] Allow users to store & restore gdb-mi layout Date: Sat, 18 Jan 2020 15:57:32 -0500 Message-ID: <55EA8238-880A-420D-A880-CD33B7E1DA85@gmail.com> Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.40.2.2.4\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_D6E2388E-299D-4A04-B073-051589D1C5C9" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="86256"; mail-complaints-to="usenet@ciao.gmane.io" To: 39181@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Jan 18 21:58:17 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1isvAe-000MNP-RC for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 18 Jan 2020 21:58:17 +0100 Original-Received: from localhost ([::1]:44842 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1isvAd-0007W0-PL for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 18 Jan 2020 15:58:15 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58729) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1isvAS-0007Vi-Op for bug-gnu-emacs@gnu.org; Sat, 18 Jan 2020 15:58:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1isvAQ-0001kD-TW for bug-gnu-emacs@gnu.org; Sat, 18 Jan 2020 15:58:04 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:36320) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1isvAQ-0001k3-Lz for bug-gnu-emacs@gnu.org; Sat, 18 Jan 2020 15:58:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1isvAQ-0007vF-Lk for bug-gnu-emacs@gnu.org; Sat, 18 Jan 2020 15:58:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Yuan Fu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 18 Jan 2020 20:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 39181 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: Bug Report Emacs Original-Received: via spool by submit@debbugs.gnu.org id=B.157938106230422 (code B ref -1); Sat, 18 Jan 2020 20:58:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 18 Jan 2020 20:57:42 +0000 Original-Received: from localhost ([127.0.0.1]:42293 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1isvA5-0007uc-Nf for submit@debbugs.gnu.org; Sat, 18 Jan 2020 15:57:42 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:44260) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1isvA4-0007uU-1L for submit@debbugs.gnu.org; Sat, 18 Jan 2020 15:57:40 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58678) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1isvA1-0007Iz-Sh for bug-gnu-emacs@gnu.org; Sat, 18 Jan 2020 15:57:39 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1isv9z-0001ZT-Q2 for bug-gnu-emacs@gnu.org; Sat, 18 Jan 2020 15:57:37 -0500 Original-Received: from mail-qt1-x82d.google.com ([2607:f8b0:4864:20::82d]:33805) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1isv9z-0001Z6-Cd for bug-gnu-emacs@gnu.org; Sat, 18 Jan 2020 15:57:35 -0500 Original-Received: by mail-qt1-x82d.google.com with SMTP id 5so24686131qtz.1 for ; Sat, 18 Jan 2020 12:57:35 -0800 (PST) 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=Zg6/XbgLkKraz85xrOhWGZzAywZpoVTrm56NYZM48sU=; b=gMubT6zRtrh2a7N5jw6VSUo2ovDwDk+iMPijkkSTWVtkK3r70c1MBS41l+OyUfr19A BFwVOhLS7+My4sOvLIrg47FtYILtaDf6KK/sboBsy/Kkn1rkcsG9shl4ZEFDTc/ANw7x fV6UCzV/dulC5UJgUvnu2W/05Wp8DnL3EuUZX7bis0Pe0rj+n2J+pHvgQtOfFZ1kr28N VZrz8fe+ttfj+Ujhav/qqB2M/X0hhbpF4abhO1QTrN2rGO/OzuYXCrhk5574WoymYyBk CadYtzMtLA7/WXcuAZBJ6oFLXrXC6YnDKvexBs3kB1lJuzWq6ArFCGBxU9f1m77icrqh o+/w== 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=Zg6/XbgLkKraz85xrOhWGZzAywZpoVTrm56NYZM48sU=; b=LKiAKFYF4jGT5Hw4Gad9jKJUIysoEfQKzZqwO3pP06ot1e86QcVmnwM6bNLEe90MFe qYHmMKfP8PsyR/NUPL0//DGN2xKVHp88PE+C89vc8WV/Z8xFs+yBXLqJQsHEwypFgOq5 Jy8eLjWO7Z78v8GEZcVdDfwEbFeWKZ5prTBvmi63vdpcNfCzsBEspJg6UlgImOMgnn+q ofwKpjhLnosxAR9BcEtoNmV7gFkDTtVhusDBSwNN7lhSrRkcydN2QXNxsyVA8gN+mZiv h+nVrVBOuP98itzDrGVzErEm0d7EnhLb15yANpDLCKBIIhW8B0YD2XnfZdKgt9VwOnDm MzLQ== X-Gm-Message-State: APjAAAXX9ZZvQY6K4jmVUZBRIa+eagp1/KP5dSuUuyUphwJ/XC3ghD8n mueqRn2OVLPDOPx77Um0fs0izlkKjLfrjk00 X-Google-Smtp-Source: APXvYqwXCJEnf4Yol7fgdjWWtZRi9+KAGNWUNGamW064sRj0a9XzAiV51gQs6eNnz5WMT9TTfZfHvw== X-Received: by 2002:ac8:71cf:: with SMTP id i15mr13728900qtp.383.1579381054344; Sat, 18 Jan 2020 12:57:34 -0800 (PST) Original-Received: from [192.168.1.5] (c-174-60-229-153.hsd1.pa.comcast.net. [174.60.229.153]) by smtp.gmail.com with ESMTPSA id d5sm13813257qke.130.2020.01.18.12.57.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 18 Jan 2020 12:57:33 -0800 (PST) X-Mailer: Apple Mail (2.3608.40.2.2.4) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:174841 Archived-At: --Apple-Mail=_D6E2388E-299D-4A04-B073-051589D1C5C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Right now if a user wants to use gdb with many windows, the only layout = option is the default 6-window layout. This patch allows a user to save = her own layout, and use this layout in gdb-mi sessions. I also included = my layout (`default-rearrange`) Maybe we can even ship with some default = layouts that a user can choose from? --Apple-Mail=_D6E2388E-299D-4A04-B073-051589D1C5C9 Content-Disposition: inline; filename=default-rearrange.png Content-Type: image/png; name="default-rearrange.png" Content-Transfer-Encoding: base64 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 --Apple-Mail=_D6E2388E-299D-4A04-B073-051589D1C5C9 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_D6E2388E-299D-4A04-B073-051589D1C5C9 Content-Disposition: attachment; filename=store-window-new.patch Content-Type: application/octet-stream; x-unix-mode=0700; name="store-window-new.patch" Content-Transfer-Encoding: quoted-printable =46rom=206db5201e418bc15ff51a170124a84182093c64db=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Yuan=20Fu=20=0ADate:=20Thu,=20= 17=20Oct=202019=2017:35:48=20-0400=0ASubject:=20[PATCH=201/3]=20Add=20= with-selected-window-undedicated=0A=0A*=20lisp/window.el=20= (with-selected-window-undedicated):=20new=0A---=0A=20lisp/window.el=20|=20= 13=20+++++++++++++=0A=201=20file=20changed,=2013=20insertions(+)=0A=0A= diff=20--git=20a/lisp/window.el=20b/lisp/window.el=0Aindex=20= 433486385d..98b8b21f8a=20100644=0A---=20a/lisp/window.el=0A+++=20= b/lisp/window.el=0A@@=20-278,6=20+278,19=20@@=20= with-displayed-buffer-window=0A=20=09=20=20=20=20=20(funcall=20= ,vquit-function=20,window=20,value)=0A=20=09=20=20=20,value)))))=0A=20=0A= +(defmacro=20with-selected-window-undedicated=20(&rest=20body)=0A+=20=20= "Run=20BODY=20in=20the=20selected=20window=20temporarily=20undedicated."=0A= +=20=20(let=20((window-dedicated-sym=20(gensym)))=0A+=20=20=20=20`(let=20= ((,window-dedicated-sym=20(window-dedicated-p)))=0A+=20=20=20=20=20=20=20= (when=20,window-dedicated-sym=0A+=20=20=20=20=20=20=20=20=20= (set-window-dedicated-p=20nil=20nil))=0A+=20=20=20=20=20=20=20,@body=0A+=20= =20=20=20=20=20=20(when=20,window-dedicated-sym=0A+=20=20=20=20=20=20=20=20= =20;;=20`window-dedicated-p'=20returns=20the=20value=20set=20by=0A+=20=20= =20=20=20=20=20=20=20;;=20`set-window-dedicated-p',=20which=20= differentiates=0A+=20=20=20=20=20=20=20=20=20;;=20non-nil=20and=20t,=20= so=20we=20cannot=20simply=20set=20to=20t=0A+=20=20=20=20=20=20=20=20=20= (set-window-dedicated-p=20nil=20,window-dedicated-sym)))))=0A+=0A=20;;=20= The=20following=20two=20functions=20are=20like=20`window-next-sibling'=20= and=0A=20;;=20`window-prev-sibling'=20but=20the=20WINDOW=20argument=20is=20= _not_=20optional=20(so=0A=20;;=20they=20don't=20substitute=20the=20= selected=20window=20for=20nil),=20and=20they=20return=0A--=20=0A2.24.1=0A= =0A=0A=46rom=20bb5e41e230a8452b41a569386131648eb2599501=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Yuan=20Fu=20=0ADate:=20Mon,=20= 14=20Oct=202019=2021:11:43=20-0400=0ASubject:=20[PATCH=202/3]=20Add=20= window=20configuration=20save/restore=20feature=20for=20gdb-mi=0A= MIME-Version:=201.0=0AContent-Type:=20text/plain;=20charset=3DUTF-8=0A= Content-Transfer-Encoding:=208bit=0A=0ANow=20you=20can=20save=20a=20gdb=20= window=20configuration=20to=20a=20file=20with=0A= =E2=80=98gdb-store-window-configuration=E2=80=99=20and=20restore=20it=20= from=20a=20file=0Awith=20=E2=80=98gdb-restore-window-configuration=E2=80=99= .=20Set=20a=20default=20window=0Aconfiguration=20by=20setting=20= gdb-default-window-configuration-file.=0ANote=20that=20for=20the=20= default=20window=20configuration=20to=20take=20effect,=0A= gdb-many-windows=20needs=20to=20be=20t.=0A=0A*=20= lisp/progmodes/gdb-mi.el=20(require):=20add=20pcase,=20wrap=20inside=0A= =E2=80=98eval-when-compile=E2=80=99=0A=0A(gdb-get-source-buffer):=20new,=20= extracted=20out=20of=20gdb-restore-window=0A(gdb-restore-window):=20= extract=20out=20gdb-get-source-buffer=0A=0A(gdb-store-window-directory,=20= gdb-buffer-p,=20gdb-function-buffer-p,=0Agdb--buffer-type,=20= gdb--inhibit-window-dedicated,=0Agdb-store-window-configuration,=20= gdb-restore-window-configuration):=20new=0A=0A= (gdb-default-window-configuration-file):=20new=0A(gdb-setup-windows):=20= Add=20a=20condition=20branch=20that=20loads=20default=20window=0Aconfig=20= when=20available=0A=0A(gdb-many-windows,=20gdb-get-source-file):=20add=20= comments=0A---=0A=20lisp/progmodes/gdb-mi.el=20|=20210=20= ++++++++++++++++++++++++++++++++-------=0A=201=20file=20changed,=20176=20= insertions(+),=2034=20deletions(-)=0A=0Adiff=20--git=20= a/lisp/progmodes/gdb-mi.el=20b/lisp/progmodes/gdb-mi.el=0Aindex=20= b08d487af3..cf0c8f29a9=20100644=0A---=20a/lisp/progmodes/gdb-mi.el=0A+++=20= b/lisp/progmodes/gdb-mi.el=0A@@=20-91,7=20+91,8=20@@=0A=20(require=20= 'gud)=0A=20(require=20'json)=0A=20(require=20'bindat)=0A-(require=20= 'cl-lib)=0A+(eval-when-compile=20(require=20'cl-lib))=0A= +(eval-when-compile=20(require=20'pcase))=0A=20=0A=20(declare-function=20= speedbar-change-initial-expansion-list=0A=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20"speedbar"=20(new-default))=0A@@=20-589,6=20= +590,20=20@@=20gdb-show-main=0A=20=20=20:group=20'gdb=0A=20=20=20= :version=20"22.1")=0A=20=0A+(defcustom=20gdb-store-window-directory=20= user-emacs-directory=0A+=20=20"The=20default=20directory=20where=20= window=20configuration=20files=20are=20stored.=0A+If=20nil,=20use=20= `default-directory'."=0A+=20=20:type=20'string=0A+=20=20:group=20'gdb=0A= +=20=20:version=20"28.1")=0A+=0A+(defcustom=20= gdb-default-window-configuration-file=20nil=0A+=20=20"If=20non-nil,=20= gdb=20loads=20this=20window=20configuration=20file=20on=20startup.=0A= +This=20should=20be=20an=20absolute=20file=20path."=0A+=20=20:type=20= 'string=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-4574,41=20+4589,164=20@@=20gdb-set-window-buffer=0A=20=20=20= (set-window-buffer=20window=20(get-buffer=20name))=0A=20=20=20= (set-window-dedicated-p=20window=20t))=0A=20=0A+(defun=20= gdb-get-source-buffer=20()=0A+=20=20"Return=20a=20buffer=20displaying=20= source=20file=20or=20nil.=0A+=0A+The=20source=20file=20would=20be=20the=20= most=20relevant=20file=20or=20the=20main=20file."=0A+=20=20(if=20= gud-last-last-frame=0A+=20=20=20=20=20=20(gud-find-file=20(car=20= gud-last-last-frame))=0A+=20=20=20=20(when=20gdb-main-file=0A+=20=20=20=20= =20=20(gud-find-file=20gdb-main-file))))=0A+=0A=20(defun=20= gdb-setup-windows=20()=0A=20=20=20"Layout=20the=20window=20pattern=20for=20= option=20`gdb-many-windows'."=0A-=20=20(gdb-get-buffer-create=20= 'gdb-locals-buffer)=0A-=20=20(gdb-get-buffer-create=20'gdb-stack-buffer)=0A= -=20=20(gdb-get-buffer-create=20'gdb-breakpoints-buffer)=0A-=20=20= (set-window-dedicated-p=20(selected-window)=20nil)=0A-=20=20= (switch-to-buffer=20gud-comint-buffer)=0A-=20=20(delete-other-windows)=0A= -=20=20(let=20((win0=20(selected-window))=0A-=20=20=20=20=20=20=20=20= (win1=20(split-window=20nil=20(=20/=20(=20*=20(window-height)=203)=20= 4)))=0A-=20=20=20=20=20=20=20=20(win2=20(split-window=20nil=20(=20/=20= (window-height)=203)))=0A-=20=20=20=20=20=20=20=20(win3=20= (split-window-right)))=0A-=20=20=20=20(gdb-set-window-buffer=20= (gdb-locals-buffer-name)=20nil=20win3)=0A-=20=20=20=20(select-window=20= win2)=0A-=20=20=20=20(set-window-buffer=0A-=20=20=20=20=20win2=0A-=20=20=20= =20=20(if=20gud-last-last-frame=0A-=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= (if=20gdb-main-file=0A-=20=20=20=20=20=20=20=20=20=20=20(gud-find-file=20= gdb-main-file)=0A-=20=20=20=20=20=20=20=20=20;;=20Put=20buffer=20list=20= in=20window=20if=20we=0A-=20=20=20=20=20=20=20=20=20;;=20can't=20find=20= a=20source=20file.=0A-=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(let=20((win4=20(split-window-right)))=0A= -=20=20=20=20=20=20(gdb-set-window-buffer=0A-=20=20=20=20=20=20=20= (gdb-get-buffer-create=20'gdb-inferior-io)=20nil=20win4))=0A-=20=20=20=20= (select-window=20win1)=0A-=20=20=20=20(gdb-set-window-buffer=20= (gdb-stack-buffer-name))=0A-=20=20=20=20(let=20((win5=20= (split-window-right)))=0A-=20=20=20=20=20=20(gdb-set-window-buffer=20(if=20= gdb-show-threads-by-default=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= (gdb-threads-buffer-name)=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= (gdb-breakpoints-buffer-name))=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=20nil=20win5))=0A-=20=20=20= =20(select-window=20win0)))=0A+=20=20(if=20= gdb-default-window-configuration-file=0A+=20=20=20=20=20=20= (gdb-restore-window-configuration=0A+=20=20=20=20=20=20=20= gdb-default-window-configuration-file)=0A+=20=20=20=20;;=20default=20= layout=0A+=20=20=20=20(gdb-get-buffer-create=20'gdb-locals-buffer)=0A+=20= =20=20=20(gdb-get-buffer-create=20'gdb-stack-buffer)=0A+=20=20=20=20= (gdb-get-buffer-create=20'gdb-breakpoints-buffer)=0A+=20=20=20=20= (set-window-dedicated-p=20(selected-window)=20nil)=0A+=20=20=20=20= (switch-to-buffer=20gud-comint-buffer)=0A+=20=20=20=20= (delete-other-windows)=0A+=20=20=20=20(let=20((win0=20(selected-window))=0A= +=20=20=20=20=20=20=20=20=20=20(win1=20(split-window=20nil=20(=20/=20(=20= *=20(window-height)=203)=204)))=0A+=20=20=20=20=20=20=20=20=20=20(win2=20= (split-window=20nil=20(=20/=20(window-height)=203)))=0A+=20=20=20=20=20=20= =20=20=20=20(win3=20(split-window-right)))=0A+=20=20=20=20=20=20= (gdb-set-window-buffer=20(gdb-locals-buffer-name)=20nil=20win3)=0A+=20=20= =20=20=20=20(select-window=20win2)=0A+=20=20=20=20=20=20= (set-window-buffer=0A+=20=20=20=20=20=20=20win2=0A+=20=20=20=20=20=20=20= (or=20(gdb-get-source-buffer)=0A+=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(let=20((win4=20= (split-window-right)))=0A+=20=20=20=20=20=20=20=20(gdb-set-window-buffer=0A= +=20=20=20=20=20=20=20=20=20(gdb-get-buffer-create=20'gdb-inferior-io)=20= nil=20win4))=0A+=20=20=20=20=20=20(select-window=20win1)=0A+=20=20=20=20=20= =20(gdb-set-window-buffer=20(gdb-stack-buffer-name))=0A+=20=20=20=20=20=20= (let=20((win5=20(split-window-right)))=0A+=20=20=20=20=20=20=20=20= (gdb-set-window-buffer=20(if=20gdb-show-threads-by-default=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(gdb-threads-buffer-name)=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= (gdb-breakpoints-buffer-name))=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=20nil=20win5))=0A+=20= =20=20=20=20=20(select-window=20win0))))=0A+=0A+(defun=20gdb-buffer-p=20= (buffer)=0A+=20=20"Return=20t=20if=20BUFFER=20is=20gdb-related."=0A+=20=20= (with-current-buffer=20buffer=0A+=20=20=20=20(eq=20gud-minor-mode=20= 'gdbmi)))=0A+=0A+(defun=20gdb-function-buffer-p=20(buffer)=0A+=20=20= "Return=20t=20if=20BUFFER=20is=20a=20gdb=20function=20buffer.=0A+=0A= +E.g.,=20locals=20buffer,=20registers=20buffer,=20but=20don't=20include=20= the=20main=0A+command=20buffer=20(the=20one=20in=20where=20you=20type=20= gdb=20commands)=20or=20source=0A+buffers."=0A+=20=20(with-current-buffer=20= buffer=0A+=20=20=20=20(derived-mode-p=20'gdb-parent-mode=20= 'gdb-inferior-io-mode)))=0A+=0A+(defun=20gdb--buffer-type=20(buffer)=0A+=20= =20"Return=20the=20buffer=20type=20of=20BUFFER=20or=20nil.=0A+=0A+Buffer=20= type=20is=20like=20`gdb-registers-type',=20`gdb-stack-buffer'.=0A+This=20= symbol=20can=20be=20passed=20to=20`gdb-get-buffer-create'.=0A+=0A+Return=20= nil=20if=20BUFFER=20isn't=20a=20gdb=20function=20buffer."=0A+=20=20= (with-current-buffer=20buffer=0A+=20=20=20=20(cl-loop=20for=20rule=20in=20= gdb-buffer-rules=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20for=20= mode-name=20=3D=20(gdb-rules-buffer-mode=20rule)=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20for=20type=20=3D=20(car=20rule)=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20if=20(eq=20mode-name=20major-mode)=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20return=20type=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20finally=20return=20nil)))=0A+=0A+(defun=20= gdb-store-window-configuration=20(file)=0A+=20=20"Save=20current=20= window=20configuration=20to=20FILE.=0A+=0A+You=20can=20later=20restore=20= this=20configuration=20from=20that=20file=20by=0A= +`gdb-restore-window-configuration'."=0A+=20=20(interactive=20(list=20= (read-file-name=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20"Save=20window=20configuration=20to=20file:=20"=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(or=20= gdb-store-window-directory=20default-directory))))=0A+=20=20;;=20we=20= replace=20the=20buffer=20in=20each=20window=20with=20a=20placeholder,=20= store=0A+=20=20;;=20the=20buffer=20type=20(register,=20breakpoint,=20= etc)=20in=20window=20parameters,=0A+=20=20;;=20and=20store=20the=20= window=20configuration=0A+=20=20(save-window-excursion=0A+=20=20=20=20= (let=20((placeholder=20(get-buffer-create=20"=20*gdb-placeholder*"))=0A+=20= =20=20=20=20=20=20=20=20=20(window-persistent-parameters=0A+=20=20=20=20=20= =20=20=20=20=20=20(cons=20'(gdb-buffer-type=20.=20writable)=20= window-persistent-parameters))=0A+=20=20=20=20=20=20=20=20=20=20= window-config)=0A+=20=20=20=20=20=20(unwind-protect=0A+=20=20=20=20=20=20= =20=20=20=20(dolist=20(win=20(window-list=20nil=20'no-minibuffer))=0A+=20= =20=20=20=20=20=20=20=20=20=20=20(select-window=20win)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20(when=20(gdb-buffer-p=20(current-buffer))=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20(set-window-parameter=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20nil=20'gdb-buffer-type=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(cond=20((gdb-function-buffer-p=20= (current-buffer))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20;;=201)=20if=20a=20user=20arranged=20the=20window=20= configuration=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20;;=20herself=20and=20saves=20it,=20windows=20are=20probably=20= not=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= ;;=20dedicated=202)=20we=20use=20the=20same=20dedication=20flag=20as=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20in=20= `gdb-display-buffer'=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20(set-window-dedicated-p=20nil=20t)=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20we=20save=20this=20= gdb-buffer-type=20symbol=20so=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20;;=20we=20can=20later=20pass=20it=20to=20= `gdb-get-buffer-create'=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20;;=20one=20example:=20`gdb-registers-buffer'=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(or=20= (gdb--buffer-type=20(current-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(error=20"Unrecognized=20= gdb=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;;=20command=20buffer=0A+=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)=20gdb-source-window)=20= 'source)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (with-selected-window-undedicated=0A+=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(set-window-prev-buffers=20(selected-window)=20= nil)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (set-window-next-buffers=20(selected-window)=20nil))))=0A+=20=20=20=20=20= =20=20=20;;=20save=20the=20window=20configuration=20to=20FILE=0A+=20=20=20= =20=20=20=20=20(let=20((window-config=20(window-state-get=20nil=20t)))=0A= +=20=20=20=20=20=20=20=20=20=20(with-temp-buffer=0A+=20=20=20=20=20=20=20= =20=20=20=20=20(prin1=20window-config=20(current-buffer))=0A+=20=20=20=20= =20=20=20=20=20=20=20=20(write-file=20file=20t)))=0A+=20=20=20=20=20=20=20= =20(kill-buffer=20placeholder)))))=0A+=0A+(defun=20= gdb-restore-window-configuration=20(file)=0A+=20=20"Restore=20window=20= configuration=20from=20FILE.=0A+=0A+FILE=20should=20be=20a=20window=20= configuration=20file=20saved=20by=0A+`gdb-store-window-configuration'."=0A= +=20=20(interactive=20(list=20(read-file-name=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20"Restore=20window=20= configuration=20from=20file:=20"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(or=20gdb-store-window-directory=20= default-directory))))=0A+=20=20;;=20basically=20we=20restore=20window=20= configuration=20and=20go=20through=20each=0A+=20=20;;=20window=20and=20= restore=20the=20function=20buffers=0A+=20=20(let*=20((placeholder=20= (get-buffer-create=20"=20*gdb-placeholder*")))=0A+=20=20=20=20= (unwind-protect=20;=20don't=20leak=20buffer=0A+=20=20=20=20=20=20=20=20= (let=20((window-config=20(with-temp-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= (insert-file-contents=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(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= =20=20=20=20=20=20=20=20=20=20=20=20;;=20we=20need=20to=20go=20to=20= point-min=20even=20we=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;;=20are=20reading=20the=20= whole=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(read=20(current-buffer))))=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20(source-buffer=20(if=20= gdb-source-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=20=20=20=20=20=20(window-buffer=20= gdb-source-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=20=20=20=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;;=20do=20the=20same=20thing=20as=20in=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`gdb-setup-windows'=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=20=20=20= =20=20=20=20=20buffer-type)=0A+=20=20=20=20=20=20=20=20=20=20= (window-state-put=20window-config=20(frame-root-window))=0A+=20=20=20=20=20= =20=20=20=20=20(dolist=20(window=20(window-list=20nil=20'no-minibuffer))=0A= +=20=20=20=20=20=20=20=20=20=20=20=20(with-selected-window=20window=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(setq=20buffer-type=20= (window-parameter=20nil=20'gdb-buffer-type))=0A+=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('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(set-window-buffer=20= nil=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(setq=20gdb-source-window=20= (selected-window))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= ('command=20(switch-to-buffer=20gud-comint-buffer))=0A+=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(with-selected-window-undedicated=0A+=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=20buffer))))))))=0A+=20=20=20=20=20=20= (kill-buffer=20placeholder))))=0A=20=0A=20(define-minor-mode=20= gdb-many-windows=0A=20=20=20"If=20nil=20just=20pop=20up=20the=20GUD=20= buffer=20unless=20`gdb-show-main'=20is=20t.=0A@@=20-4627,6=20+4765,9=20= @@=20gdb-many-windows=0A=20(defun=20gdb-restore-windows=20()=0A=20=20=20= "Restore=20the=20basic=20arrangement=20of=20windows=20used=20by=20gdb.=0A= =20This=20arrangement=20depends=20on=20the=20value=20of=20option=20= `gdb-many-windows'."=0A+=20=20;;=20this=20function=20is=20used=20when=20= the=20user=20messed=20up=20window=0A+=20=20;;=20configuration=20and=20= want=20to=20"reset=20to=20default".=20the=20function=20that=0A+=20=20;;=20= sets=20up=20window=20configuration=20on=20start=20up=20is=20= `gdb-get-source-file'=0A=20=20=20(interactive)=0A=20=20=20= (switch-to-buffer=20gud-comint-buffer)=20;Select=20the=20right=20window=20= and=20frame.=0A=20=20=20(delete-other-windows)=0A@@=20-4678,6=20+4819,7=20= @@=20gdb-reset=0A=20(defun=20gdb-get-source-file=20()=0A=20=20=20"Find=20= the=20source=20file=20where=20the=20program=20starts=20and=20display=20= it=20with=20related=0A=20buffers,=20if=20required."=0A+=20=20;;=20this=20= function=20is=20called=20only=20once=20on=20startup=0A=20=20=20= (goto-char=20(point-min))=0A=20=20=20(if=20(re-search-forward=20= gdb-source-file-regexp=20nil=20t)=0A=20=20=20=20=20=20=20(setq=20= gdb-main-file=20(read=20(match-string=201))))=0A--=20=0A2.24.1=0A=0A=0A= =46rom=20c7ac67ec759d16e1f5d212b6fadf93d4ec853ace=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Yuan=20Fu=20=0ADate:=20Thu,=20= 16=20Jan=202020=2018:52:17=20-0500=0ASubject:=20[PATCH=203/3]=20Restore=20= window=20configuration=20when=20gdb=20quits=0A=0AMake=20gdb=20preserve=20= the=20window=20configuration=20that=20the=20user=20had=20before=0A= starting=20gdb.=0A=0A*=20lisp/progmodes/gdb-mi.el=20= (gdb--window-configuration-before):=20new=0A(gdb):=20save=20= configuration=20before=20start=0A(gdb-reset):=20restore=20window=20= configuration=0A---=0A=20lisp/progmodes/gdb-mi.el=20|=2011=20++++++++++-=0A= =201=20file=20changed,=2010=20insertions(+),=201=20deletion(-)=0A=0Adiff=20= --git=20a/lisp/progmodes/gdb-mi.el=20b/lisp/progmodes/gdb-mi.el=0Aindex=20= cf0c8f29a9..582ccf9562=20100644=0A---=20a/lisp/progmodes/gdb-mi.el=0A+++=20= b/lisp/progmodes/gdb-mi.el=0A@@=20-243,6=20+243,9=20@@=20gdb-output-sink=0A= =20=09=20=20=20=20=20=20=20disposition=20of=20output=20generated=20by=20= commands=20that=0A=20=09=20=20=20=20=20=20=20gdb=20mode=20sends=20to=20= gdb=20on=20its=20own=20behalf.")=0A=20=0A+(defvar=20= gdb--window-configuration-before=20nil=0A+=20=20"Stores=20the=20window=20= configuration=20before=20starting=20gdb.")=0A+=0A=20(defcustom=20= gdb-discard-unordered-replies=20t=0A=20=20=20"Non-nil=20means=20discard=20= any=20out-of-order=20GDB=20replies.=0A=20This=20protects=20against=20= lost=20GDB=20replies,=20assuming=20that=20GDB=20always=0A@@=20-762,6=20= +765,10=20@@=20gdb=0A=20=20=20=20=20(gdb-restore-windows)=0A=20=20=20=20=20= (error=0A=20=20=20=20=20=20"Multiple=20debugging=20requires=20restarting=20= in=20text=20command=20mode"))=0A+=0A+=20=20;;=20save=20window=20= configuration=20before=20starting=20gdb=20so=20we=20can=20restore=0A+=20=20= ;;=20it=20after=20gdb=20quits=0A+=20=20(setq=20= gdb--window-configuration-before=20(window-state-get))=0A=20=20=20;;=0A=20= =20=20(gud-common-init=20command-line=20nil=20'gud-gdbmi-marker-filter)=0A= =20=0A@@=20-4814,7=20+4821,9=20@@=20gdb-reset=0A=20=20=20(if=20(boundp=20= 'speedbar-frame)=20(speedbar-timer-fn))=0A=20=20=20(setq=20gud-running=20= nil)=0A=20=20=20(setq=20gdb-active-process=20nil)=0A-=20=20(remove-hook=20= 'after-save-hook=20'gdb-create-define-alist=20t))=0A+=20=20(remove-hook=20= 'after-save-hook=20'gdb-create-define-alist=20t)=0A+=20=20;;=20recover=20= window=20configuration=0A+=20=20(window-state-put=20= gdb--window-configuration-before))=0A=20=0A=20(defun=20= gdb-get-source-file=20()=0A=20=20=20"Find=20the=20source=20file=20where=20= the=20program=20starts=20and=20display=20it=20with=20related=0A--=20=0A= 2.24.1=0A=0A= --Apple-Mail=_D6E2388E-299D-4A04-B073-051589D1C5C9 Content-Disposition: attachment; filename=default-rearrange Content-Type: application/octet-stream; x-unix-mode=0700; name="default-rearrange" Content-Transfer-Encoding: quoted-printable (((min-height=20.=2012)=20(min-width=20.=2030)=20(min-height-ignore=20.=20= 9)=20(min-width-ignore=20.=2012)=20(min-height-safe=20.=203)=20= (min-width-safe=20.=206)=20(min-pixel-height=20.=20204)=20= (min-pixel-width=20.=20240)=20(min-pixel-height-ignore=20.=20153)=20= (min-pixel-width-ignore=20.=2096)=20(min-pixel-height-safe=20.=2051)=20= (min-pixel-width-safe=20.=2048))=20hc=20(pixel-width=20.=201920)=20= (pixel-height=20.=20992)=20(total-width=20.=20240)=20(total-height=20.=20= 58)=20(normal-height=20.=201.0)=20(normal-width=20.=201.0)=20= (combination-limit)=20(leaf=20(pixel-width=20.=20783)=20(pixel-height=20= .=20992)=20(total-width=20.=2098)=20(total-height=20.=2058)=20= (normal-height=20.=201.0)=20(normal-width=20.=200.4059618986693193)=20= (parameters=20(gdb-buffer-type=20.=20source))=20(buffer=20"=20= *gdb-placeholder*"=20(selected=20.=20t)=20(hscroll=20.=200)=20(fringes=20= 8=208=20nil=20nil)=20(margins=20nil)=20(scroll-bars=20nil=200=20t=20nil=20= 0=20t=20nil)=20(vscroll=20.=200)=20(dedicated)=20(point=20.=201)=20= (start=20.=201)))=20(vc=20(pixel-width=20.=20847)=20(pixel-height=20.=20= 992)=20(total-width=20.=20106)=20(total-height=20.=2058)=20= (normal-height=20.=201.0)=20(normal-width=20.=200.4427600627286984)=20= (combination-limit)=20(leaf=20(pixel-width=20.=20847)=20(pixel-height=20= .=20483)=20(total-width=20.=20106)=20(total-height=20.=2028)=20= (normal-height=20.=200.4829123497015181)=20(normal-width=20.=201.0)=20= (parameters=20(gdb-buffer-type=20.=20command))=20(buffer=20"=20= *gdb-placeholder*"=20(selected)=20(hscroll=20.=200)=20(fringes=208=208=20= nil=20nil)=20(margins=20nil)=20(scroll-bars=20nil=200=20t=20nil=200=20t=20= nil)=20(vscroll=20.=200)=20(dedicated)=20(point=20.=201)=20(start=20.=20= 1)))=20(leaf=20(pixel-width=20.=20847)=20(pixel-height=20.=20278)=20= (total-width=20.=20106)=20(total-height=20.=2016)=20(normal-height=20.=20= 0.28280773143438453)=20(normal-width=20.=201.0)=20(parameters=20= (gdb-buffer-type=20.=20gdb-inferior-io))=20(buffer=20"=20= *gdb-placeholder*"=20(selected)=20(hscroll=20.=200)=20(fringes=208=208=20= nil=20nil)=20(margins=20nil)=20(scroll-bars=20nil=200=20t=20nil=200=20t=20= nil)=20(vscroll=20.=200)=20(dedicated=20.=20t)=20(point=20.=201)=20= (start=20.=201)))=20(leaf=20(last=20.=20t)=20(pixel-width=20.=20847)=20= (pixel-height=20.=20231)=20(total-width=20.=20106)=20(total-height=20.=20= 14)=20(normal-height=20.=200.23427991886409735)=20(normal-width=20.=20= 1.0)=20(parameters=20(gdb-buffer-type=20.=20gdb-breakpoints-buffer))=20= (buffer=20"=20*gdb-placeholder*"=20(selected)=20(hscroll=20.=200)=20= (fringes=208=208=20nil=20nil)=20(margins=20nil)=20(scroll-bars=20nil=200=20= t=20nil=200=20t=20nil)=20(vscroll=20.=200)=20(dedicated=20.=20t)=20= (point=20.=201)=20(start=20.=201))))=20(vc=20(last=20.=20t)=20= (pixel-width=20.=20290)=20(pixel-height=20.=20992)=20(total-width=20.=20= 36)=20(total-height=20.=2058)=20(normal-height=20.=201.0)=20= (normal-width=20.=200.15127803860198227)=20(combination-limit)=20(leaf=20= (pixel-width=20.=20290)=20(pixel-height=20.=20499)=20(total-width=20.=20= 36)=20(total-height=20.=2029)=20(normal-height=20.=200.5)=20= (normal-width=20.=201.0)=20(parameters=20(gdb-buffer-type=20.=20= gdb-locals-buffer))=20(buffer=20"=20*gdb-placeholder*"=20(selected)=20= (hscroll=20.=200)=20(fringes=208=208=20nil=20nil)=20(margins=20nil)=20= (scroll-bars=20nil=200=20t=20nil=200=20t=20nil)=20(vscroll=20.=200)=20= (dedicated=20.=20t)=20(point=20.=201)=20(start=20.=201)))=20(leaf=20= (last=20.=20t)=20(pixel-width=20.=20290)=20(pixel-height=20.=20493)=20= (total-width=20.=2036)=20(total-height=20.=2029)=20(normal-height=20.=20= 0.5)=20(normal-width=20.=201.0)=20(parameters=20(gdb-buffer-type=20.=20= gdb-stack-buffer))=20(buffer=20"=20*gdb-placeholder*"=20(selected)=20= (hscroll=20.=200)=20(fringes=208=208=20nil=20nil)=20(margins=20nil)=20= (scroll-bars=20nil=200=20t=20nil=200=20t=20nil)=20(vscroll=20.=200)=20= (dedicated=20.=20t)=20(point=20.=201)=20(start=20.=201)))))= --Apple-Mail=_D6E2388E-299D-4A04-B073-051589D1C5C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii In GNU Emacs 27.0.50 (build 3, x86_64-apple-darwin19.0.0, NS = appkit-1894.10 Version 10.15.1 (Build 19B88)) of 2019-11-30 built on missSilver Repository revision: e2828795d73637577c7726965974a047fe2d7119 Repository branch: master Windowing system distributor 'Apple', version 10.3.1894 System Description: Mac OS X 10.15.2 Recent messages: Checking 71 files in /Users/yuan/attic/emacs/lisp/erc... Checking 34 files in /Users/yuan/attic/emacs/lisp/emulation... Checking 180 files in /Users/yuan/attic/emacs/lisp/emacs-lisp... Checking 24 files in /Users/yuan/attic/emacs/lisp/cedet... Checking 59 files in /Users/yuan/attic/emacs/lisp/calendar... Checking 87 files in /Users/yuan/attic/emacs/lisp/calc... Checking 113 files in /Users/yuan/attic/emacs/lisp/obsolete... Checking for load-path shadows...done Auto-saving... Buffer *unsent mail to bug-gnu-emacs@gnu.org*<2> modified; kill anyway? = (y or n) y 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: NOTIFY KQUEUE ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS 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: Emacs-Lisp Minor modes in effect: magit-todos-mode: t bug-reference-prog-mode: t desktop-save-mode: t ghelp-global-minor-mode: t minibuffer-electric-default-mode: t flymake-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 flyspell-mode: t outshine-mode: t ws-butler-global-mode: t ws-butler-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 aggressive-indent-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 ivy-mode: t company-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t 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 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/nerd-font/test/test-helper hides = /Users/yuan/.emacs.d/ranch/doom-themes/test/test-helper /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/attic/emacs/lisp/emacs-lisp/faceup Features: (magit-todos pcre2el rxt re-builder grep checkdoc lisp-mnt bug-reference vc-mtn vc-hg ffap tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat parse-time iso8601 ls-lisp shadow sort mail-extr emacsbug sendmail vc-git vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc vc-dispatcher magit-bookmark bookmark company-oddmuse company-keywords company-etags etags fileloop 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 hideshow desktop frameset trivial-copy ghelp-eglot ghelp-helpful ghelp-builtin ghelp cus-edit cus-start cus-load luna-publish utility pause luna-general-config minibuf-eldef eglot array jsonrpc ert pp ewoc debug flymake-proc flymake warnings url-util 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 diff-mode magit-core magit-autorevert autorevert filenotify magit-margin magit-transient magit-process magit-mode transient git-commit magit-git magit-section magit-utils crm log-edit message rmc puny rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail rmail-loaddefs text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log with-editor async-bytecomp async shell server 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-element avl-tree generator org advice org-macro org-footnote org-pcomplete pcomplete org-list org-faces org-entities time-date noutline outline org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat 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 easy-mmode use-package-core finder-inf tex-site 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 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 198008 22858) (symbols 48 9376 47) (strings 32 38332 2464) (string-bytes 1 1117094) (vectors 16 24687) (vector-slots 8 290292 27848) (floats 8 516 434) (intervals 56 14668 1334) (buffers 1000 28)) --Apple-Mail=_D6E2388E-299D-4A04-B073-051589D1C5C9--