all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#59838: 30.0.50; [PATCH] Save history in GDB session
@ 2022-12-05 16:53 Manuel Giraud
  2022-12-05 17:19 ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Manuel Giraud @ 2022-12-05 16:53 UTC (permalink / raw)
  To: 59838

[-- Attachment #1: Type: text/plain, Size: 144 bytes --]


Hi,

I'm not really an expert in gdb (and comint-mode) but it seems that 'M-x
gdb' does not save its history.  Here is a patch that fix this.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-lisp-progmodes-gdb-mi.el-gdb-send-Write-history.patch --]
[-- Type: text/x-patch, Size: 918 bytes --]

From 07b0df98158999901c639f99ca27ffefebeec5d1 Mon Sep 17 00:00:00 2001
From: Manuel Giraud <manuel@ledu-giraud.fr>
Date: Mon, 5 Dec 2022 17:48:15 +0100
Subject: [PATCH] * lisp/progmodes/gdb-mi.el (gdb-send): Write history.

---
 lisp/progmodes/gdb-mi.el | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index e8d8f9104e..ebedfa5cde 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1966,7 +1966,9 @@ gdb-send
              (or (not python-or-guile-p)
                  (null command-arg)
                  (zerop (length command-arg))))
-        (setq gdb-control-level (1+ gdb-control-level)))))
+        (setq gdb-control-level (1+ gdb-control-level))))
+  ;; Write history upon each command
+  (comint-write-input-ring))
 
 (defun gdb-mi-quote (string)
   "Return STRING quoted properly as an MI argument.
-- 
2.38.1


[-- Attachment #3: Type: text/plain, Size: 8932 bytes --]



In GNU Emacs 30.0.50 (build 1, x86_64-unknown-openbsd7.2, cairo version
 1.17.6) of 2022-12-05 built on computer
Repository revision: 4fa37dc426184811e39ce113f6af7f5b308f116b
Repository branch: mgi/svg-trouble
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: OpenBSD computer 7.2 GENERIC.MP#859 amd64

Configured using:
 'configure --prefix=/home/manuel/emacs --bindir=/home/manuel/bin
 --with-x-toolkit=no --without-sound --without-compress-install
 CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBOTF LIBXML2 MODULES NOTIFY KQUEUE OLDXMENU PDUMPER PNG RSVG
SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM ZLIB

Important settings:
  value of $LC_ALL: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Change Log

Minor modes in effect:
  gdb-many-windows: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  display-time-mode: t
  display-battery-mode: t
  server-mode: t
  shell-dirtrack-mode: t
  global-so-long-mode: t
  repeat-mode: t
  global-eldoc-mode: t
  show-paren-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
  blink-cursor-mode: t
  line-number-mode: t
  auto-fill-function: do-auto-fill
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/manuel/.emacs.d/elpa/ef-themes-0.10.0/theme-loaddefs hides /home/manuel/emacs/share/emacs/30.0.50/lisp/theme-loaddefs
/home/manuel/.emacs.d/elpa/transient-0.3.7/transient hides /home/manuel/emacs/share/emacs/30.0.50/lisp/transient

Features:
(shadow whitespace magit-patch ob-ditaa ob-plantuml ol-bibtex bibtex
org-clock org-colview org-crypt org-ctags org-habit org-mouse org-plot
org-protocol ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util
rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex
ox-icalendar org-agenda ox-html table ox-ascii ox-publish ox hsys-org
org-element org-persist xdg org-id org-refile avl-tree hsettings
hui-em-but hbut view hbdata hgnus hvar hsmail hypb locate hact set hhist
hmail htz cal-julian hbmap hmoccur hversion hload-path ob-C ob-R ob-awk
ob-calc calc-store calc-trail ob-clojure ob-css ob-dot ob-eshell eshell
esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups
esh-util ob-forth ob-fortran ob-gnuplot ob-groovy ob-haskell ob-java
ob-js ob-julia ob-latex ob-lilypond ob-lisp ob-lua ob-makefile ob-maxima
ob-ocaml ob-octave ob-org ob-perl ob-processing ob-python python ob-ruby
ob-sass ob-scheme ob-screen ob-sed ob-shell ob-sqlite ob-sql vc-annotate
vc ibuf-ext ibuffer ibuffer-loaddefs dabbrev shortdoc cl-print help-fns
radix-tree proced tabify man gdb-mi bindat gud bug-reference
magit-extras face-remap 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 imenu magit-diff smerge-mode
diff git-commit log-edit pcvs-util add-log magit-core magit-autorevert
autorevert magit-margin magit-transient magit-process with-editor
magit-mode transient magit-git magit-section magit-utils dash misearch
multi-isearch vc-svn sort gnus-cite mail-extr textsec uni-scripts
idna-mapping ucs-normalize uni-confusable textsec-check gnus-async
gnus-bcklg gnus-ml gnus-topic mm-archive url-http url-gw url-cache
url-auth qp utf-7 imap nndoc nndraft nnmh nnfolder nnml gnus-agent
gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache nnrss mm-url
w3m doc-view filenotify jka-compr image-mode exif w3m-hist w3m-fb
bookmark-w3m w3m-ems w3m-favicon w3m-image tab-line w3m-proc w3m-util
pcmpl-linux vc-hg vc-git diff-mode vc-bzr vc-dispatcher rfc2104
tramp-cache time-stamp tramp-sh network-stream nsm emacsbug pulse
gnus-dired sh-script smie treesit executable cus-start paredit edmacro
time battery exwm-randr xcb-randr exwm-config exwm exwm-input
xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor xcb-render
exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xproto
xcb-types xcb-debug kmacro server stimmung-themes modus-operandi-theme
modus-themes ytdious osm mingus libmpdee reporter edebug debug backtrace
transmission diary-lib diary-loaddefs color calc-bin calc-ext calc
calc-loaddefs rect calc-macs w3m-load mu4e mu4e-org mu4e-main mu4e-view
mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search
mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill mule-util
hl-line mu4e-contacts mu4e-update mu4e-folders mu4e-server mu4e-context
mu4e-vars mu4e-helpers mu4e-config bookmark ido supercite regi
ebdb-message ebdb-gnus gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime
smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom
gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail
mail-source utf7 nnoo gnus-spec gnus-int gnus-range message sendmail
yank-media puny rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
gmm-utils mailheader gnus-win gnus nnheader gnus-util mail-utils range
mm-util mail-prsvr ebdb-mua ebdb-com crm ebdb-format ebdb mailabbrev
eieio-opt cl-extra help-mode speedbar ezimage dframe eieio-base pcase
timezone org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-src ob-comint org-pcomplete org-list org-footnote org-faces
org-entities ob-emacs-lisp ob-core ob-eval org-cycle org-table ol
org-fold org-fold-core org-keys oc org-loaddefs find-func cal-menu
calendar cal-loaddefs org-version org-compat org-macs visual-basic-mode
cl web-mode derived disp-table erlang-start smart-tabs-mode skeleton
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs slime-asdf grep slime-tramp tramp tramp-loaddefs
trampver tramp-integration cus-edit cus-load wid-edit files-x
tramp-compat rx shell pcomplete parse-time iso8601 time-date ls-lisp
format-spec slime-fancy slime-indentation slime-cl-indent cl-indent
slime-trace-dialog slime-fontifying-fu slime-package-fu slime-references
slime-compiler-notes-tree advice slime-scratch slime-presentations
bridge slime-macrostep macrostep slime-mdot-fu slime-enclosing-context
slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c
slime-editing-commands slime-autodoc slime-repl slime-parse slime
compile text-property-search etags fileloop generator xref project
arc-mode archive-mode noutline outline icons pp comint ansi-osc
ansi-color ring hyperspec thingatpt slime-autoloads dired-aux dired-x
dired dired-loaddefs so-long notifications dbus xml repeat easy-mmode
rust-mode-autoloads stimmung-themes-autoloads ebdb-autoloads
magit-autoloads debbugs-autoloads git-commit-autoloads
magit-section-autoloads ef-themes-autoloads with-editor-autoloads
paredit-autoloads dash-autoloads ytdious-autoloads
transmission-autoloads transient-autoloads exwm-autoloads
hyperbole-autoloads detached-autoloads info package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
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 emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind kqueue lcms2 dynamic-setting system-font-setting
font-render-setting cairo xinput2 x multi-tty make-network-process
emacs)

Memory information:
((conses 16 1325793 307023)
 (symbols 48 70022 13)
 (strings 32 342856 14419)
 (string-bytes 1 10944812)
 (vectors 16 219440)
 (vector-slots 8 3492670 116033)
 (floats 8 859 791)
 (intervals 56 37544 5279)
 (buffers 992 62))

-- 
Manuel Giraud

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* bug#59838: 30.0.50; [PATCH] Save history in GDB session
  2022-12-05 16:53 bug#59838: 30.0.50; [PATCH] Save history in GDB session Manuel Giraud
@ 2022-12-05 17:19 ` Eli Zaretskii
  2022-12-05 17:53   ` Manuel Giraud
  0 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2022-12-05 17:19 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 59838

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Date: Mon, 05 Dec 2022 17:53:06 +0100
> 
> I'm not really an expert in gdb (and comint-mode) but it seems that 'M-x
> gdb' does not save its history.  Here is a patch that fix this.

GDB has its own history feature, activated by the GDB command "set history
save on".  If the GDB history file is detected when "M-x gdb" starts, it
will read the history and fill comint-input-ring with what it finds there.
See the function 'gdb' in gdb-mi.el.

So I think this is already covered, or what did I miss?

Thanks.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#59838: 30.0.50; [PATCH] Save history in GDB session
  2022-12-05 17:19 ` Eli Zaretskii
@ 2022-12-05 17:53   ` Manuel Giraud
  2022-12-05 19:35     ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Manuel Giraud @ 2022-12-05 17:53 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 59838

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Manuel Giraud <manuel@ledu-giraud.fr>
>> Date: Mon, 05 Dec 2022 17:53:06 +0100
>> 
>> I'm not really an expert in gdb (and comint-mode) but it seems that 'M-x
>> gdb' does not save its history.  Here is a patch that fix this.
>
> GDB has its own history feature, activated by the GDB command "set history
> save on".  If the GDB history file is detected when "M-x gdb" starts, it
> will read the history and fill comint-input-ring with what it finds there.
> See the function 'gdb' in gdb-mi.el.
>
> So I think this is already covered, or what did I miss?

I already have this in my ~/.gdbinit:
--8<---------------cut here---------------start------------->8---
set history save on
set history size 1024
add-auto-load-safe-path /home/manuel/emacs-repo/src/.gdbinit
--8<---------------cut here---------------end--------------->8---

When debugging emacs from 'M-x gdb', gdb does create a file
"/home/manuel/emacs-repo/src/.gdb_history" but it always stays empty
even when I "quit" from the *gud-emacs* buffer.
-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#59838: 30.0.50; [PATCH] Save history in GDB session
  2022-12-05 17:53   ` Manuel Giraud
@ 2022-12-05 19:35     ` Eli Zaretskii
  2022-12-06 10:30       ` Manuel Giraud
  0 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2022-12-05 19:35 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 59838

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: 59838@debbugs.gnu.org
> Date: Mon, 05 Dec 2022 18:53:33 +0100
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> From: Manuel Giraud <manuel@ledu-giraud.fr>
> >> Date: Mon, 05 Dec 2022 17:53:06 +0100
> >> 
> >> I'm not really an expert in gdb (and comint-mode) but it seems that 'M-x
> >> gdb' does not save its history.  Here is a patch that fix this.
> >
> > GDB has its own history feature, activated by the GDB command "set history
> > save on".  If the GDB history file is detected when "M-x gdb" starts, it
> > will read the history and fill comint-input-ring with what it finds there.
> > See the function 'gdb' in gdb-mi.el.
> >
> > So I think this is already covered, or what did I miss?
> 
> I already have this in my ~/.gdbinit:
> --8<---------------cut here---------------start------------->8---
> set history save on
> set history size 1024
> add-auto-load-safe-path /home/manuel/emacs-repo/src/.gdbinit
> --8<---------------cut here---------------end--------------->8---
> 
> When debugging emacs from 'M-x gdb', gdb does create a file
> "/home/manuel/emacs-repo/src/.gdb_history" but it always stays empty
> even when I "quit" from the *gud-emacs* buffer.

I guess this is because GDB's history works via Readline, and Readline is
not used when Emacs is the front end.

Then I think your patch is correct, thanks.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#59838: 30.0.50; [PATCH] Save history in GDB session
  2022-12-05 19:35     ` Eli Zaretskii
@ 2022-12-06 10:30       ` Manuel Giraud
  2022-12-06 12:27         ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Manuel Giraud @ 2022-12-06 10:30 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 59838, Manuel Giraud

Eli Zaretskii <eliz@gnu.org> writes:

[...]

> I guess this is because GDB's history works via Readline, and Readline is
> not used when Emacs is the front end.

Ok.

> Then I think your patch is correct, thanks.

But as I said, I'm not an expert with comint-mode stuff.  I put
'(comint-write-input-ring)' at the end of gdb-send because it seems to
make sense but I don't know for sure.
-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#59838: 30.0.50; [PATCH] Save history in GDB session
  2022-12-06 10:30       ` Manuel Giraud
@ 2022-12-06 12:27         ` Eli Zaretskii
  2022-12-06 16:23           ` Manuel Giraud
  0 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2022-12-06 12:27 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 59838, manuel

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: Manuel Giraud <manuel@ledu-giraud.fr>,  59838@debbugs.gnu.org
> Date: Tue, 06 Dec 2022 11:30:01 +0100
> 
> > Then I think your patch is correct, thanks.
> 
> But as I said, I'm not an expert with comint-mode stuff.  I put
> '(comint-write-input-ring)' at the end of gdb-send because it seems to
> make sense but I don't know for sure.

I think the call should be where the gud buffer is killed or we exit the
debugger, not after each string we send to the debugger.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#59838: 30.0.50; [PATCH] Save history in GDB session
  2022-12-06 12:27         ` Eli Zaretskii
@ 2022-12-06 16:23           ` Manuel Giraud
  2022-12-08 10:28             ` Manuel Giraud
  2022-12-09  9:02             ` Manuel Giraud
  0 siblings, 2 replies; 10+ messages in thread
From: Manuel Giraud @ 2022-12-06 16:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 59838

Eli Zaretskii <eliz@gnu.org> writes:

[...]

>> But as I said, I'm not an expert with comint-mode stuff.  I put
>> '(comint-write-input-ring)' at the end of gdb-send because it seems to
>> make sense but I don't know for sure.
>
> I think the call should be where the gud buffer is killed or we exit the
> debugger, not after each string we send to the debugger.

Alright, I'll try to find this place ;-)
-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#59838: 30.0.50; [PATCH] Save history in GDB session
  2022-12-06 16:23           ` Manuel Giraud
@ 2022-12-08 10:28             ` Manuel Giraud
  2022-12-09  9:02             ` Manuel Giraud
  1 sibling, 0 replies; 10+ messages in thread
From: Manuel Giraud @ 2022-12-08 10:28 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 59838

[-- Attachment #1: Type: text/plain, Size: 248 bytes --]

Hi,

I think I have found the right place.  I've tested it with "M-x gdb"
doing an explicit "quit" or using `C-d'.  I've also tested with "M-x
gud-gdb".  Now I think we'll need a patch to gitignore the .gbd_history
files into the emacs directory.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Fix-GDB-save-history-bug-59838.patch --]
[-- Type: text/x-patch, Size: 1782 bytes --]

From 38d29bb31a821e0b03444e4008b80b39834ef842 Mon Sep 17 00:00:00 2001
From: Manuel Giraud <manuel@ledu-giraud.fr>
Date: Mon, 5 Dec 2022 17:48:15 +0100
Subject: [PATCH] Fix GDB save history (bug#59838)

* lisp/progmodes/gdb-mi.el (gdb-reset): Save GDB comint history.
(gdb-delchar-or-quit): Remove useless progn and add comment.
---
 lisp/progmodes/gdb-mi.el | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index e8d8f9104e..a7839c34af 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1113,13 +1113,13 @@ gdb-delchar-or-quit
              (process-live-p proc)
 	     (not gud-running)
 	     (= (point) (marker-position (process-mark proc))))
-	;; Sending an EOF does not work with GDB-MI; submit an
-	;; explicit quit command.
-	(progn
-          (if (> gdb-control-level 0)
-              (process-send-eof proc)
-            (insert "quit")
-            (comint-send-input t t)))
+      ;; Exit a recursive reading loop or quit.
+      (if (> gdb-control-level 0)
+          (process-send-eof proc)
+        ;; Sending an EOF does not work with GDB-MI; submit an
+        ;; explicit quit command.
+        (insert "quit")
+        (comint-send-input t t))
       (delete-char arg))))
 
 (defvar gdb-define-alist nil "Alist of #define directives for GUD tooltips.")
@@ -5124,6 +5124,8 @@ gdb-restore-windows
 (defun gdb-reset ()
   "Exit a debugging session cleanly.
 Kills the gdb buffers, and resets variables and the source buffers."
+  ;; Save GDB history
+  (comint-write-input-ring)
   ;; The gdb-inferior buffer has a pty hooked up to the main gdb
   ;; process.  This pty must be deleted explicitly.
   (let ((pty (get-process "gdb-inferior")))
-- 
2.38.1


[-- Attachment #3: Type: text/plain, Size: 18 bytes --]

-- 
Manuel Giraud

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* bug#59838: 30.0.50; [PATCH] Save history in GDB session
  2022-12-06 16:23           ` Manuel Giraud
  2022-12-08 10:28             ` Manuel Giraud
@ 2022-12-09  9:02             ` Manuel Giraud
  2022-12-10 13:40               ` Eli Zaretskii
  1 sibling, 1 reply; 10+ messages in thread
From: Manuel Giraud @ 2022-12-09  9:02 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 59838

[-- Attachment #1: Type: text/plain, Size: 247 bytes --]

Hi,

I think I have found the right place.  I've tested it with "M-x gdb"
doing an explicit "quit" or using `C-d'.  I've also tested with "M-x
gud-gdb".  Now I think we'll need a patch to gitignore the .gbd_history
files into the emacs directory.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Fix-GDB-save-history-bug-59838.patch --]
[-- Type: text/x-patch, Size: 1782 bytes --]

From 38d29bb31a821e0b03444e4008b80b39834ef842 Mon Sep 17 00:00:00 2001
From: Manuel Giraud <manuel@ledu-giraud.fr>
Date: Mon, 5 Dec 2022 17:48:15 +0100
Subject: [PATCH] Fix GDB save history (bug#59838)

* lisp/progmodes/gdb-mi.el (gdb-reset): Save GDB comint history.
(gdb-delchar-or-quit): Remove useless progn and add comment.
---
 lisp/progmodes/gdb-mi.el | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index e8d8f9104e..a7839c34af 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1113,13 +1113,13 @@ gdb-delchar-or-quit
              (process-live-p proc)
 	     (not gud-running)
 	     (= (point) (marker-position (process-mark proc))))
-	;; Sending an EOF does not work with GDB-MI; submit an
-	;; explicit quit command.
-	(progn
-          (if (> gdb-control-level 0)
-              (process-send-eof proc)
-            (insert "quit")
-            (comint-send-input t t)))
+      ;; Exit a recursive reading loop or quit.
+      (if (> gdb-control-level 0)
+          (process-send-eof proc)
+        ;; Sending an EOF does not work with GDB-MI; submit an
+        ;; explicit quit command.
+        (insert "quit")
+        (comint-send-input t t))
       (delete-char arg))))
 
 (defvar gdb-define-alist nil "Alist of #define directives for GUD tooltips.")
@@ -5124,6 +5124,8 @@ gdb-restore-windows
 (defun gdb-reset ()
   "Exit a debugging session cleanly.
 Kills the gdb buffers, and resets variables and the source buffers."
+  ;; Save GDB history
+  (comint-write-input-ring)
   ;; The gdb-inferior buffer has a pty hooked up to the main gdb
   ;; process.  This pty must be deleted explicitly.
   (let ((pty (get-process "gdb-inferior")))
-- 
2.38.1


[-- Attachment #3: Type: text/plain, Size: 18 bytes --]

-- 
Manuel Giraud

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* bug#59838: 30.0.50; [PATCH] Save history in GDB session
  2022-12-09  9:02             ` Manuel Giraud
@ 2022-12-10 13:40               ` Eli Zaretskii
  0 siblings, 0 replies; 10+ messages in thread
From: Eli Zaretskii @ 2022-12-10 13:40 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 59838-done

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: 59838@debbugs.gnu.org
> Date: Fri, 09 Dec 2022 10:02:40 +0100
> 
> I think I have found the right place.  I've tested it with "M-x gdb"
> doing an explicit "quit" or using `C-d'.  I've also tested with "M-x
> gud-gdb".

Thanks, installed on the master branch.

> Now I think we'll need a patch to gitignore the .gbd_history files
> into the emacs directory.

Yes, I think it's a good idea.





^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-12-10 13:40 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-05 16:53 bug#59838: 30.0.50; [PATCH] Save history in GDB session Manuel Giraud
2022-12-05 17:19 ` Eli Zaretskii
2022-12-05 17:53   ` Manuel Giraud
2022-12-05 19:35     ` Eli Zaretskii
2022-12-06 10:30       ` Manuel Giraud
2022-12-06 12:27         ` Eli Zaretskii
2022-12-06 16:23           ` Manuel Giraud
2022-12-08 10:28             ` Manuel Giraud
2022-12-09  9:02             ` Manuel Giraud
2022-12-10 13:40               ` Eli Zaretskii

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.