From unknown Sat Sep 20 13:35:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#67928: 30.0.50; [PATCH] Load GDB history in gud-gdb Resent-From: Manuel Giraud Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Dec 2023 12:44:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 67928 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 67928@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.170307623522745 (code B ref -1); Wed, 20 Dec 2023 12:44:01 +0000 Received: (at submit) by debbugs.gnu.org; 20 Dec 2023 12:43:55 +0000 Received: from localhost ([127.0.0.1]:38853 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFvvW-0005un-GT for submit@debbugs.gnu.org; Wed, 20 Dec 2023 07:43:55 -0500 Received: from lists.gnu.org ([2001:470:142::17]:45064) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFvvR-0005uV-Cm for submit@debbugs.gnu.org; Wed, 20 Dec 2023 07:43:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rFvvG-0001nG-GY for bug-gnu-emacs@gnu.org; Wed, 20 Dec 2023 07:43:40 -0500 Received: from ledu-giraud.fr ([51.159.28.247]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rFvv8-0002nr-OR for bug-gnu-emacs@gnu.org; Wed, 20 Dec 2023 07:43:34 -0500 DKIM-Signature: v=1; a=ed25519-sha256; c=simple/simple; s=ed25519; bh=b7u4mqXJ KeRo2jJcjDnuUp8DnV0ACZ8Z37IFy2ahv0g=; h=date:subject:to:from; d=ledu-giraud.fr; b=o9hfPmLinhpGrvDiZ2gSQ/o9U0zRGJcn2rg5tHgrisvMZ1Iiaa zeZNX8+0UrZdmUZiTTsmYgig3Rp3LMe6MlCw== DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=rsa; bh=b7u4mqXJKeRo2jJc jDnuUp8DnV0ACZ8Z37IFy2ahv0g=; h=date:subject:to:from; d=ledu-giraud.fr; b=NMR7kuh5RK32vse4Dv7TuipUEDaMgBz2tvqqGUQmWCuIvgIfap GyZYomcsrG+TB7aXuOzzXCCynEM0ouGQPygDe6Pi+/ru8oO5Kq+ie587RrGOpHh2DFtvz/ MtlyJ75OdkbTs53Ho74Xz87NuzPoyupkiESHI4me9vIlsHmPAKqWjrIspoZI3ivRIPetI3 LJyC06MISRBdxv3i9Ta9kJgrpphnHK365WCGlue+OoGiop0cAid9Kpv69d0spZzn1ZAbqZ C9+wj8sA31pdvynhNSNrZ5gDINt/jr9SenupU6qplBasjugfia4okFBN92MOMIZlAeRm1u OepgS23tXFvg== Received: from computer (c2540-1_migr-78-240-14-207.fbx.proxad.net [78.240.14.207]) by ledu-giraud.fr (OpenSMTPD) with ESMTPSA id d5d33730 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 20 Dec 2023 13:43:25 +0100 (CET) From: Manuel Giraud Date: Wed, 20 Dec 2023 13:43:23 +0100 Message-ID: <871qbh9h90.fsf@ledu-giraud.fr> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=51.159.28.247; envelope-from=manuel@ledu-giraud.fr; helo=ledu-giraud.fr X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.9 (/) 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.1 (/) --=-=-= Content-Type: text/plain Hi, 'M-x gud-gdb' does not load GDB history by default. This patch fixes this. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Load-GDB-history-into-gud-gdb.patch >From 44fd88410c72432fd3e74e0af00e7ec617fc8fe9 Mon Sep 17 00:00:00 2001 From: Manuel Giraud Date: Wed, 20 Dec 2023 12:08:30 +0100 Subject: [PATCH] Load GDB history into gud-gdb * lisp/progmodes/gud.el (gud-gdb-load-history): New function to load GDB history into 'comint-input-ring'. (gud-gdb): Call it. * lisp/progmodes/gdb-mi.el (gdb): Call it. --- lisp/progmodes/gdb-mi.el | 33 ++------------------------------- lisp/progmodes/gud.el | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 7ae4bcea1e1..c14f2e2ba65 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -902,37 +902,8 @@ gdb (setq-local gud-minor-mode 'gdbmi) (setq-local gdb-control-level 0) (setq comint-input-sender 'gdb-send) - (when (ring-empty-p comint-input-ring) ; cf shell-mode - (let ((hfile (expand-file-name (or (getenv "GDBHISTFILE") - (if (eq system-type 'ms-dos) - "_gdb_history" - ".gdb_history")))) - ;; gdb defaults to 256, but we'll default to comint-input-ring-size. - (hsize (getenv "HISTSIZE"))) - (dolist (file (append '("~/.gdbinit") - (unless (string-equal (expand-file-name ".") - (expand-file-name "~")) - '(".gdbinit")))) - (if (file-readable-p (setq file (expand-file-name file))) - (with-temp-buffer - (insert-file-contents file) - ;; TODO? check for "set history save\\( *on\\)?" and do - ;; not use history otherwise? - (while (re-search-forward - "^ *set history \\(filename\\|size\\) *\\(.*\\)" nil t) - (cond ((string-equal (match-string 1) "filename") - (setq hfile (expand-file-name - (match-string 2) - (file-name-directory file)))) - ((string-equal (match-string 1) "size") - (setq hsize (match-string 2)))))))) - (and (stringp hsize) - (integerp (setq hsize (string-to-number hsize))) - (> hsize 0) - (setq-local comint-input-ring-size hsize)) - (if (stringp hfile) - (setq-local comint-input-ring-file-name hfile)) - (comint-read-input-ring t))) + (gud-gdb-load-history) + (gud-def gud-tbreak "tbreak %f:%l" "\C-t" "Set temporary breakpoint at current line." t) (gud-def gud-jump diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index 0f0bb73ae77..1fc0f1f5b6a 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -803,6 +803,39 @@ gud-gdb-completion-function ;; If in gdb mode, gdb-mi is loaded. (declare-function gdb-restore-windows "gdb-mi" ()) +(defun gud-gdb-load-history () + (when (ring-empty-p comint-input-ring) ; cf shell-mode + (let ((hfile (expand-file-name (or (getenv "GDBHISTFILE") + (if (eq system-type 'ms-dos) + "_gdb_history" + ".gdb_history")))) + ;; gdb defaults to 256, but we'll default to comint-input-ring-size. + (hsize (getenv "HISTSIZE"))) + (dolist (file (append '("~/.gdbinit") + (unless (string-equal (expand-file-name ".") + (expand-file-name "~")) + '(".gdbinit")))) + (if (file-readable-p (setq file (expand-file-name file))) + (with-temp-buffer + (insert-file-contents file) + ;; TODO? check for "set history save\\( *on\\)?" and do + ;; not use history otherwise? + (while (re-search-forward + "^ *set history \\(filename\\|size\\) *\\(.*\\)" nil t) + (cond ((string-equal (match-string 1) "filename") + (setq hfile (expand-file-name + (match-string 2) + (file-name-directory file)))) + ((string-equal (match-string 1) "size") + (setq hsize (match-string 2)))))))) + (and (stringp hsize) + (integerp (setq hsize (string-to-number hsize))) + (> hsize 0) + (setq-local comint-input-ring-size hsize)) + (if (stringp hfile) + (setq-local comint-input-ring-file-name hfile)) + (comint-read-input-ring t)))) + ;; The old gdb command (text command mode). The new one is in gdb-mi.el. ;;;###autoload (defun gud-gdb (command-line) @@ -832,6 +865,7 @@ gud-gdb (gud-common-init command-line nil 'gud-gdb-marker-filter) (setq-local gud-minor-mode 'gdb) + (gud-gdb-load-history) (gud-def gud-break "break %f:%l" "\C-b" "Set breakpoint at current line.") (gud-def gud-tbreak "tbreak %f:%l" "\C-t" -- 2.43.0 --=-=-= Content-Type: text/plain In GNU Emacs 30.0.50 (build 3, x86_64-unknown-openbsd7.4) of 2023-12-20 built on computer Repository revision: 44fd88410c72432fd3e74e0af00e7ec617fc8fe9 Repository branch: mgi/gud-gdb-history Windowing system distributor 'The X.Org Foundation', version 11.0.12101009 System Description: OpenBSD computer 7.4 GENERIC.MP#1523 amd64 Configured using: 'configure CC=egcc CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib MAKEINFO=gmakeinfo --prefix=/home/manuel/emacs --bindir=/home/manuel/bin --with-x-toolkit=no --without-cairo --without-dbus --without-gconf --without-gsettings --without-sound --without-compress-install' Configured features: FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBXML2 MODULES NOTIFY KQUEUE OLDXMENU PDUMPER PNG RSVG SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XDBE XFT XIM XINPUT2 XPM ZLIB Important settings: value of $LC_CTYPE: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Compilation Minor modes in effect: gdb-many-windows: t display-time-mode: t display-battery-mode: t desktop-save-mode: t server-mode: t override-global-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 minibuffer-regexp-mode: t buffer-read-only: t line-number-mode: t 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-1.4.1/theme-loaddefs hides /home/manuel/emacs/share/emacs/30.0.50/lisp/theme-loaddefs Features: (shadow emacsbug sh-script smie treesit pulse proced smerge-mode diff gdb-mi bindat gud help-fns radix-tree cl-print gnus-cite mail-extr textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check gnus-async gnus-bcklg qp gnus-ml gnus-topic mm-archive url-cache utf-7 imap rfc2104 nndoc nndraft nnmh network-stream nnfolder nnml gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache nnrss dabbrev magit-utils dash modus-vivendi-theme image-mode exif sort gnus-dired find-dired char-fold cus-edit cus-start misearch multi-isearch executable hi-lock mule-util jka-compr on-screen eww url-queue mm-url paredit vc-dir ewoc whitespace autorevert filenotify vc-git diff-mode vc vc-dispatcher bug-reference time battery cus-load desktop frameset exwm-randr xcb-randr exwm-config ido 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 server modus-operandi-theme modus-themes zone speed-type url-http url-auth url-gw nsm compat ytdious mingus libmpdee reporter edebug debug backtrace transmission color calc-bin calc-ext calc calc-loaddefs rect calc-macs 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 dbus xml 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 ebdb-mua ebdb-com crm ebdb-format ebdb mailabbrev eieio-opt speedbar ezimage dframe find-func eieio-base timezone icalendar gnus nnheader gnus-util mail-utils range mm-util mail-prsvr wid-edit web-mode derived disp-table erlang-start 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 rx trampver tramp-integration files-x tramp-message tramp-compat xdg shell pcomplete parse-time iso8601 time-date format-spec tramp-loaddefs 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 apropos 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 edmacro kmacro use-package-bind-key bind-key appt diary-lib diary-loaddefs cal-menu calendar cal-loaddefs pcase dired-x dired-aux dired dired-loaddefs cl-extra help-mode use-package-core repeat easy-mmode debbugs-autoloads ebdb-autoloads ef-themes-autoloads exwm-autoloads hyperbole-autoloads magit-autoloads git-commit-autoloads magit-section-autoloads dash-autoloads on-screen-autoloads osm-autoloads paredit-autoloads rust-mode-autoloads speed-type-autoloads transmission-autoloads with-editor-autoloads info compat-autoloads ytdious-autoloads 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 touch-screen 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 kqueue lcms2 dynamic-setting font-render-setting xinput2 x multi-tty move-toolbar make-network-process emacs) Memory information: ((conses 16 912166 365676) (symbols 48 51005 16) (strings 32 264144 8346) (string-bytes 1 8663487) (vectors 16 160434) (vector-slots 8 2123632 106671) (floats 8 593 3889) (intervals 56 21121 724) (buffers 992 44)) -- Manuel Giraud --=-=-=-- From unknown Sat Sep 20 13:35:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#67928: 30.0.50; [PATCH] Load GDB history in gud-gdb Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Dec 2023 13:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67928 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Manuel Giraud Cc: 67928@debbugs.gnu.org Received: via spool by 67928-submit@debbugs.gnu.org id=B67928.170307892224838 (code B ref 67928); Wed, 20 Dec 2023 13:29:02 +0000 Received: (at 67928) by debbugs.gnu.org; 20 Dec 2023 13:28:42 +0000 Received: from localhost ([127.0.0.1]:38909 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFwcr-0006SX-Au for submit@debbugs.gnu.org; Wed, 20 Dec 2023 08:28:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:45008) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFwcl-0006SG-NM for 67928@debbugs.gnu.org; Wed, 20 Dec 2023 08:28:39 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rFwcY-0007er-VN; Wed, 20 Dec 2023 08:28:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Y2wSZfkPF2ziANKv3g12LzvdCw7OQdqr6CIpPhNyCgE=; b=sUnYuti0MfLY yBrAxfLYhjMGOjDWMdoQKsHUvR4JU7cUNutGZKBFbcYwf9CCGRNzvbl66JrGoqDDZOIAiPwpfJvY5 WP3v9h5pYLak6yiz1JyAf4RZKwqUsK7sy6IwVTsb0v+InAN2Hm4bWmdW9J3KnhwsmfeE7xyL/BRu9 U1KG16wmCh/JQ/dfLgffma2vyoUhfonPsdXnwxF8H4u9i126OkxTcw7p0aMqrqAzmmIIjzYgHtx1S wgK9zEJmIOsLSEsUiLDMfaG/ekWriv8KZ2rkjsANvg7WZ9gdkzqlgCFqVGKmoFZIVvRHEY3P6/5cs IZVLuHxIashNZ4x+gYHWog==; Date: Wed, 20 Dec 2023 15:28:06 +0200 Message-Id: <83le9pgg0p.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <871qbh9h90.fsf@ledu-giraud.fr> (bug-gnu-emacs@gnu.org) References: <871qbh9h90.fsf@ledu-giraud.fr> X-Spam-Score: -2.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: -3.3 (---) > Date: Wed, 20 Dec 2023 13:43:23 +0100 > From: Manuel Giraud via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > 'M-x gud-gdb' does not load GDB history by default. This patch fixes > this. Thanks, but why should we enhance gud-gdb? It is based on a deprecated GDB feature (annotations), which the GDB developers may remove some day without any advance warning. It is basically kept in Emacs as a fallback, for those who for some reasons cannot use gdb-mi. And gdb-mi already loads the history. Are there any reasons for you to use gud-gdb? From unknown Sat Sep 20 13:35:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#67928: 30.0.50; [PATCH] Load GDB history in gud-gdb Resent-From: Manuel Giraud Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Dec 2023 14:01:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67928 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 67928@debbugs.gnu.org Received: via spool by 67928-submit@debbugs.gnu.org id=B67928.170308085924176 (code B ref 67928); Wed, 20 Dec 2023 14:01:01 +0000 Received: (at 67928) by debbugs.gnu.org; 20 Dec 2023 14:00:59 +0000 Received: from localhost ([127.0.0.1]:38945 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFx86-0006Gm-P3 for submit@debbugs.gnu.org; Wed, 20 Dec 2023 09:00:59 -0500 Received: from ledu-giraud.fr ([51.159.28.247]:33056) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFx83-00069V-CS for 67928@debbugs.gnu.org; Wed, 20 Dec 2023 09:00:57 -0500 DKIM-Signature: v=1; a=ed25519-sha256; c=simple/simple; s=ed25519; bh=LvZ/2pxE uWf/cvhaKKIIZTQM4zkIMk6jMi91wTG0E7o=; h=date:references:in-reply-to: subject:cc:to:from; d=ledu-giraud.fr; b=J42IYOVh190bH/iT7Hfc5oAMiyfhE/ KBqHHZWI7s4QW0BuR/LBz0tspOLZiV8cMjx89zJhV5bJpBpKwXnOwuAw== DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=rsa; bh=LvZ/2pxEuWf/cvha KKIIZTQM4zkIMk6jMi91wTG0E7o=; h=date:references:in-reply-to:subject: cc:to:from; d=ledu-giraud.fr; b=GogBQEE+36xODaaajk+29Z7GRc43FshDdiiSHe VD+mjBmEIf8RDCHcghALhX8jAQE33pl7TD857K06b5061pS/3RG6DSDt6qJz6wHoB2lyK1 kZ2G6orWVuHD4pjpHb36VWqto3e+CfgbOPuNX2OpETqaIVxHmi1TisxWB6Ag4hUqKhrutx XEx69w4vfuJRVtGwBp8r5ClsqeIM8Z/cZ+82uuZpKyOBcEK075AubN5rTBpaQYX0TD8PUY vABsa0D+5XzH2dbCXB5QcZFTIiqf0NRgC+739HqhO506ysLhU0hSN3DUxZSIQ+f00ume7B tRTwbNJ3oDp96972/k28yVww== Received: from computer (37-174-58-143.coucou-networks.fr [37.174.58.143]) by ledu-giraud.fr (OpenSMTPD) with ESMTPSA id 0db09eb8 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Wed, 20 Dec 2023 15:00:51 +0100 (CET) From: Manuel Giraud In-Reply-To: <83le9pgg0p.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 20 Dec 2023 15:28:06 +0200") References: <871qbh9h90.fsf@ledu-giraud.fr> <83le9pgg0p.fsf@gnu.org> Date: Wed, 20 Dec 2023 15:00:49 +0100 Message-ID: <87sf3x7z3i.fsf@ledu-giraud.fr> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain 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 (-) Eli Zaretskii writes: >> Date: Wed, 20 Dec 2023 13:43:23 +0100 >> From: Manuel Giraud via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> 'M-x gud-gdb' does not load GDB history by default. This patch fixes >> this. > > Thanks, but why should we enhance gud-gdb? It is based on a > deprecated GDB feature (annotations), which the GDB developers may > remove some day without any advance warning. It is basically kept in > Emacs as a fallback, for those who for some reasons cannot use gdb-mi. > And gdb-mi already loads the history. > > Are there any reasons for you to use gud-gdb? I have set 'gdb-many-windows' to 't' but sometimes I like the simpler version provided by gud-gdb... But yes, this reason is not sufficient. Before closing this PR, could I modify this patch to, at least, isolate history loading into its own function? -- Manuel Giraud From unknown Sat Sep 20 13:35:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#67928: 30.0.50; [PATCH] Load GDB history in gud-gdb Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Dec 2023 14:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67928 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Manuel Giraud Cc: 67928@debbugs.gnu.org Received: via spool by 67928-submit@debbugs.gnu.org id=B67928.170308367427858 (code B ref 67928); Wed, 20 Dec 2023 14:48:02 +0000 Received: (at 67928) by debbugs.gnu.org; 20 Dec 2023 14:47:54 +0000 Received: from localhost ([127.0.0.1]:38956 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFxrV-0007FC-88 for submit@debbugs.gnu.org; Wed, 20 Dec 2023 09:47:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:35346) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFxrQ-0007E5-9l for 67928@debbugs.gnu.org; Wed, 20 Dec 2023 09:47:51 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rFxrG-0007Uy-U5; Wed, 20 Dec 2023 09:47:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=p9c14+VyvCxn1/KZs3WbM6sQfoRZezyRRksy8Hz1yiQ=; b=kWNdEituIMTM SOK+iS7tbnMOqO71WuNmSQPomFU0kHo+T/G1Ab9vzYgo4AmEpwiCUSnJixIJmdigR3OqN5AuGVPqp xrDUAY2tFqPZXl71KiuVUQy8GhHNAyDI697gRqbhQnMS4JTQ97Ek/T3JxGG4quvJ8FQ3aPYEn4qgM j9YyQuptCtCm2rcFYSNUgrWxgtofc1upMhkhzzTZV09dkBXOguzHv2x1vmDW1LW5cubNg0PlYkQ9L 81/aSM023UlU0ghexCyYw0nNE31CEVmaetm9ioqjv6ncFlu3g96lHAD/DU/3Ht74IncPo3WKwcgX0 S91ac5uOKql8GNz1lo7xCg==; Date: Wed, 20 Dec 2023 16:47:13 +0200 Message-Id: <83h6kdgccu.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87sf3x7z3i.fsf@ledu-giraud.fr> (message from Manuel Giraud on Wed, 20 Dec 2023 15:00:49 +0100) References: <871qbh9h90.fsf@ledu-giraud.fr> <83le9pgg0p.fsf@gnu.org> <87sf3x7z3i.fsf@ledu-giraud.fr> X-Spam-Score: -2.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: -3.3 (---) > From: Manuel Giraud > Cc: 67928@debbugs.gnu.org > Date: Wed, 20 Dec 2023 15:00:49 +0100 > > Eli Zaretskii writes: > > >> Date: Wed, 20 Dec 2023 13:43:23 +0100 > >> From: Manuel Giraud via "Bug reports for GNU Emacs, > >> the Swiss army knife of text editors" > >> > >> 'M-x gud-gdb' does not load GDB history by default. This patch fixes > >> this. > > > > Thanks, but why should we enhance gud-gdb? It is based on a > > deprecated GDB feature (annotations), which the GDB developers may > > remove some day without any advance warning. It is basically kept in > > Emacs as a fallback, for those who for some reasons cannot use gdb-mi. > > And gdb-mi already loads the history. > > > > Are there any reasons for you to use gud-gdb? > > I have set 'gdb-many-windows' to 't' but sometimes I like the simpler > version provided by gud-gdb... But yes, this reason is not sufficient. > Before closing this PR, could I modify this patch to, at least, isolate > history loading into its own function? Yes, that's fine. From unknown Sat Sep 20 13:35:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#67928: 30.0.50; [PATCH] Load GDB history in gud-gdb Resent-From: Manuel Giraud Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Dec 2023 16:42:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67928 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 67928@debbugs.gnu.org Received: via spool by 67928-submit@debbugs.gnu.org id=B67928.170309047415238 (code B ref 67928); Wed, 20 Dec 2023 16:42:01 +0000 Received: (at 67928) by debbugs.gnu.org; 20 Dec 2023 16:41:14 +0000 Received: from localhost ([127.0.0.1]:41685 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFzdB-0003xi-Qj for submit@debbugs.gnu.org; Wed, 20 Dec 2023 11:41:14 -0500 Received: from ledu-giraud.fr ([51.159.28.247]:10398) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFzd7-0003xW-34 for 67928@debbugs.gnu.org; Wed, 20 Dec 2023 11:41:12 -0500 DKIM-Signature: v=1; a=ed25519-sha256; c=simple/simple; s=ed25519; bh=xgnFoI5r a1IzWXg9wW3lM37JnIb0imC1d5XPqKycg8I=; h=date:references:in-reply-to: subject:cc:to:from; d=ledu-giraud.fr; b=YA9rRJyLz4IbzbtU0xtTWDWN9mlJzo w+058y7Hf7RipizmOnxP5wcGjpnqkwlR2on8oETy4ox6kuuEjANGvaBQ== DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=rsa; bh=xgnFoI5ra1IzWXg9 wW3lM37JnIb0imC1d5XPqKycg8I=; h=date:references:in-reply-to:subject: cc:to:from; d=ledu-giraud.fr; b=dxZfz35YzKxnt4N9xHD4V8Z5Rrz+uk8+4/v2+y H2UO3Sr6bnIrdy6Z1cTQaExdgL2SFSVYup2PhwCj79bVCKVEthVEeh4e0Zxy0Rfa9loHoo 4p+Eh8DAyKoX0IWaRS/lLwDwKcKd79dHh6kC0ybxKBJngXFUJ2VdxqQvwvOxjhJa+f1Rx8 IffCKM5MLpyJaRfNW1y7AeYiZj3d5tNgKUNz7IuUXrHFp7pdT42Tvm9GfNeNPEqL8HmwYM qJQpBXJHxusTsjbpUwI8+jCFgeqVIjdL5I/jBvL3aUJBy/n3Fsiqt1RWhmfPvFQobsHGUO Su6YZFFhSPf3nxIcGiM3g3vA== Received: from computer ( [10.1.1.1]) by ledu-giraud.fr (OpenSMTPD) with ESMTPSA id 82d7bfe8 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Wed, 20 Dec 2023 17:41:03 +0100 (CET) From: Manuel Giraud In-Reply-To: <83h6kdgccu.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 20 Dec 2023 16:47:13 +0200") References: <871qbh9h90.fsf@ledu-giraud.fr> <83le9pgg0p.fsf@gnu.org> <87sf3x7z3i.fsf@ledu-giraud.fr> <83h6kdgccu.fsf@gnu.org> Date: Wed, 20 Dec 2023 17:41:01 +0100 Message-ID: <87le9o968y.fsf@ledu-giraud.fr> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" 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 (-) --=-=-= Content-Type: text/plain Eli Zaretskii writes: [...] >> I have set 'gdb-many-windows' to 't' but sometimes I like the simpler >> version provided by gud-gdb... But yes, this reason is not sufficient. >> Before closing this PR, could I modify this patch to, at least, isolate >> history loading into its own function? > > Yes, that's fine. Thanks. Here's this new version. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Function-to-load-GDB-history.patch >From 8de4866f59d88edbc480b1a150f7ceb9b5cd774b Mon Sep 17 00:00:00 2001 From: Manuel Giraud Date: Wed, 20 Dec 2023 12:08:30 +0100 Subject: [PATCH] Function to load GDB history * lisp/progmodes/gdb-mi.el (gud-gdb-load-history): New function to load GDB history. (gdb): Call it. --- lisp/progmodes/gdb-mi.el | 66 +++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 7ae4bcea1e1..cbb165a6a0c 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -817,6 +817,39 @@ gdb--check-interpreter (defvar gdb-control-level 0) +(defun gdb-load-history () + (when (ring-empty-p comint-input-ring) ; cf shell-mode + (let ((hfile (expand-file-name (or (getenv "GDBHISTFILE") + (if (eq system-type 'ms-dos) + "_gdb_history" + ".gdb_history")))) + ;; gdb defaults to 256, but we'll default to comint-input-ring-size. + (hsize (getenv "HISTSIZE"))) + (dolist (file (append '("~/.gdbinit") + (unless (string-equal (expand-file-name ".") + (expand-file-name "~")) + '(".gdbinit")))) + (if (file-readable-p (setq file (expand-file-name file))) + (with-temp-buffer + (insert-file-contents file) + ;; TODO? check for "set history save\\( *on\\)?" and do + ;; not use history otherwise? + (while (re-search-forward + "^ *set history \\(filename\\|size\\) *\\(.*\\)" nil t) + (cond ((string-equal (match-string 1) "filename") + (setq hfile (expand-file-name + (match-string 2) + (file-name-directory file)))) + ((string-equal (match-string 1) "size") + (setq hsize (match-string 2)))))))) + (and (stringp hsize) + (integerp (setq hsize (string-to-number hsize))) + (> hsize 0) + (setq-local comint-input-ring-size hsize)) + (if (stringp hfile) + (setq-local comint-input-ring-file-name hfile)) + (comint-read-input-ring t)))) + ;;;###autoload (defun gdb (command-line) "Run gdb passing it COMMAND-LINE as arguments. @@ -902,37 +935,8 @@ gdb (setq-local gud-minor-mode 'gdbmi) (setq-local gdb-control-level 0) (setq comint-input-sender 'gdb-send) - (when (ring-empty-p comint-input-ring) ; cf shell-mode - (let ((hfile (expand-file-name (or (getenv "GDBHISTFILE") - (if (eq system-type 'ms-dos) - "_gdb_history" - ".gdb_history")))) - ;; gdb defaults to 256, but we'll default to comint-input-ring-size. - (hsize (getenv "HISTSIZE"))) - (dolist (file (append '("~/.gdbinit") - (unless (string-equal (expand-file-name ".") - (expand-file-name "~")) - '(".gdbinit")))) - (if (file-readable-p (setq file (expand-file-name file))) - (with-temp-buffer - (insert-file-contents file) - ;; TODO? check for "set history save\\( *on\\)?" and do - ;; not use history otherwise? - (while (re-search-forward - "^ *set history \\(filename\\|size\\) *\\(.*\\)" nil t) - (cond ((string-equal (match-string 1) "filename") - (setq hfile (expand-file-name - (match-string 2) - (file-name-directory file)))) - ((string-equal (match-string 1) "size") - (setq hsize (match-string 2)))))))) - (and (stringp hsize) - (integerp (setq hsize (string-to-number hsize))) - (> hsize 0) - (setq-local comint-input-ring-size hsize)) - (if (stringp hfile) - (setq-local comint-input-ring-file-name hfile)) - (comint-read-input-ring t))) + (gdb-load-history) + (gud-def gud-tbreak "tbreak %f:%l" "\C-t" "Set temporary breakpoint at current line." t) (gud-def gud-jump -- 2.43.0 --=-=-= Content-Type: text/plain -- Manuel Giraud --=-=-=-- From unknown Sat Sep 20 13:35:36 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: Manuel Giraud Subject: bug#67928: closed (Re: bug#67928: 30.0.50; [PATCH] Load GDB history in gud-gdb) Message-ID: References: <83v88rg4bs.fsf@gnu.org> <871qbh9h90.fsf@ledu-giraud.fr> X-Gnu-PR-Message: they-closed 67928 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 67928@debbugs.gnu.org Date: Thu, 21 Dec 2023 11:54:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1703159642-30232-1" This is a multi-part message in MIME format... ------------=_1703159642-30232-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #67928: 30.0.50; [PATCH] Load GDB history in gud-gdb 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 67928@debbugs.gnu.org. --=20 67928: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D67928 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1703159642-30232-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 67928-done) by debbugs.gnu.org; 21 Dec 2023 11:53:21 +0000 Received: from localhost ([127.0.0.1]:42565 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGHc8-0007qf-V5 for submit@debbugs.gnu.org; Thu, 21 Dec 2023 06:53:21 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:59270) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGHc7-0007qO-3z for 67928-done@debbugs.gnu.org; Thu, 21 Dec 2023 06:53:19 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rGHbx-0007G0-Lo; Thu, 21 Dec 2023 06:53:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=je3G8NrdTBjkG5CWHn94yXAAUjPlMCWFBbWyh5KPqFY=; b=aykcG+BZDcrN QuWgDAFNi1zghizc/hkoVN+RhwCScX1L1SKOxfkMez+Z0cPojD73T9bj0gEVyrlxGcZO3vxUxkWX1 fy4UTMoq6rXBp7aT5W2rZvjH1JmvzVCTm1e1dYc77ML6RE+Ps88BoDnZWu8HJWtF4FsyOKV2Z6SKt r/txyZCnoBfhnC450RkooxiUAhWHXCXOjAx+F9sLLxIW698304BZIBw5dAjf7qr+ljxAoSQTchWty Dar0eHyV7j6qfwDLAwXPZ7c8jcwSa2mZsxqwzU1hcZ9FV0b2nOwbOZieL7qjMzhqYEct+RXjZe1fG KZ4Ti2bDSMbpAQt2sXAcAQ==; Date: Thu, 21 Dec 2023 13:52:55 +0200 Message-Id: <83v88rg4bs.fsf@gnu.org> From: Eli Zaretskii To: Manuel Giraud In-Reply-To: <87le9o968y.fsf@ledu-giraud.fr> (message from Manuel Giraud on Wed, 20 Dec 2023 17:41:01 +0100) Subject: Re: bug#67928: 30.0.50; [PATCH] Load GDB history in gud-gdb References: <871qbh9h90.fsf@ledu-giraud.fr> <83le9pgg0p.fsf@gnu.org> <87sf3x7z3i.fsf@ledu-giraud.fr> <83h6kdgccu.fsf@gnu.org> <87le9o968y.fsf@ledu-giraud.fr> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 67928-done Cc: 67928-done@debbugs.gnu.org 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: -3.3 (---) > From: Manuel Giraud > Cc: 67928@debbugs.gnu.org > Date: Wed, 20 Dec 2023 17:41:01 +0100 > > Eli Zaretskii writes: > > [...] > > >> I have set 'gdb-many-windows' to 't' but sometimes I like the simpler > >> version provided by gud-gdb... But yes, this reason is not sufficient. > >> Before closing this PR, could I modify this patch to, at least, isolate > >> history loading into its own function? > > > > Yes, that's fine. > > Thanks. Here's this new version. Thanks, installed on master and closing the bug. ------------=_1703159642-30232-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 20 Dec 2023 12:43:55 +0000 Received: from localhost ([127.0.0.1]:38853 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFvvW-0005un-GT for submit@debbugs.gnu.org; Wed, 20 Dec 2023 07:43:55 -0500 Received: from lists.gnu.org ([2001:470:142::17]:45064) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFvvR-0005uV-Cm for submit@debbugs.gnu.org; Wed, 20 Dec 2023 07:43:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rFvvG-0001nG-GY for bug-gnu-emacs@gnu.org; Wed, 20 Dec 2023 07:43:40 -0500 Received: from ledu-giraud.fr ([51.159.28.247]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rFvv8-0002nr-OR for bug-gnu-emacs@gnu.org; Wed, 20 Dec 2023 07:43:34 -0500 DKIM-Signature: v=1; a=ed25519-sha256; c=simple/simple; s=ed25519; bh=b7u4mqXJ KeRo2jJcjDnuUp8DnV0ACZ8Z37IFy2ahv0g=; h=date:subject:to:from; d=ledu-giraud.fr; b=o9hfPmLinhpGrvDiZ2gSQ/o9U0zRGJcn2rg5tHgrisvMZ1Iiaa zeZNX8+0UrZdmUZiTTsmYgig3Rp3LMe6MlCw== DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=rsa; bh=b7u4mqXJKeRo2jJc jDnuUp8DnV0ACZ8Z37IFy2ahv0g=; h=date:subject:to:from; d=ledu-giraud.fr; b=NMR7kuh5RK32vse4Dv7TuipUEDaMgBz2tvqqGUQmWCuIvgIfap GyZYomcsrG+TB7aXuOzzXCCynEM0ouGQPygDe6Pi+/ru8oO5Kq+ie587RrGOpHh2DFtvz/ MtlyJ75OdkbTs53Ho74Xz87NuzPoyupkiESHI4me9vIlsHmPAKqWjrIspoZI3ivRIPetI3 LJyC06MISRBdxv3i9Ta9kJgrpphnHK365WCGlue+OoGiop0cAid9Kpv69d0spZzn1ZAbqZ C9+wj8sA31pdvynhNSNrZ5gDINt/jr9SenupU6qplBasjugfia4okFBN92MOMIZlAeRm1u OepgS23tXFvg== Received: from computer (c2540-1_migr-78-240-14-207.fbx.proxad.net [78.240.14.207]) by ledu-giraud.fr (OpenSMTPD) with ESMTPSA id d5d33730 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 20 Dec 2023 13:43:25 +0100 (CET) From: Manuel Giraud To: bug-gnu-emacs@gnu.org Subject: 30.0.50; [PATCH] Load GDB history in gud-gdb X-Debbugs-Cc: Date: Wed, 20 Dec 2023 13:43:23 +0100 Message-ID: <871qbh9h90.fsf@ledu-giraud.fr> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=51.159.28.247; envelope-from=manuel@ledu-giraud.fr; helo=ledu-giraud.fr X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.9 (/) 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.1 (/) --=-=-= Content-Type: text/plain Hi, 'M-x gud-gdb' does not load GDB history by default. This patch fixes this. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Load-GDB-history-into-gud-gdb.patch >From 44fd88410c72432fd3e74e0af00e7ec617fc8fe9 Mon Sep 17 00:00:00 2001 From: Manuel Giraud Date: Wed, 20 Dec 2023 12:08:30 +0100 Subject: [PATCH] Load GDB history into gud-gdb * lisp/progmodes/gud.el (gud-gdb-load-history): New function to load GDB history into 'comint-input-ring'. (gud-gdb): Call it. * lisp/progmodes/gdb-mi.el (gdb): Call it. --- lisp/progmodes/gdb-mi.el | 33 ++------------------------------- lisp/progmodes/gud.el | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 7ae4bcea1e1..c14f2e2ba65 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -902,37 +902,8 @@ gdb (setq-local gud-minor-mode 'gdbmi) (setq-local gdb-control-level 0) (setq comint-input-sender 'gdb-send) - (when (ring-empty-p comint-input-ring) ; cf shell-mode - (let ((hfile (expand-file-name (or (getenv "GDBHISTFILE") - (if (eq system-type 'ms-dos) - "_gdb_history" - ".gdb_history")))) - ;; gdb defaults to 256, but we'll default to comint-input-ring-size. - (hsize (getenv "HISTSIZE"))) - (dolist (file (append '("~/.gdbinit") - (unless (string-equal (expand-file-name ".") - (expand-file-name "~")) - '(".gdbinit")))) - (if (file-readable-p (setq file (expand-file-name file))) - (with-temp-buffer - (insert-file-contents file) - ;; TODO? check for "set history save\\( *on\\)?" and do - ;; not use history otherwise? - (while (re-search-forward - "^ *set history \\(filename\\|size\\) *\\(.*\\)" nil t) - (cond ((string-equal (match-string 1) "filename") - (setq hfile (expand-file-name - (match-string 2) - (file-name-directory file)))) - ((string-equal (match-string 1) "size") - (setq hsize (match-string 2)))))))) - (and (stringp hsize) - (integerp (setq hsize (string-to-number hsize))) - (> hsize 0) - (setq-local comint-input-ring-size hsize)) - (if (stringp hfile) - (setq-local comint-input-ring-file-name hfile)) - (comint-read-input-ring t))) + (gud-gdb-load-history) + (gud-def gud-tbreak "tbreak %f:%l" "\C-t" "Set temporary breakpoint at current line." t) (gud-def gud-jump diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index 0f0bb73ae77..1fc0f1f5b6a 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -803,6 +803,39 @@ gud-gdb-completion-function ;; If in gdb mode, gdb-mi is loaded. (declare-function gdb-restore-windows "gdb-mi" ()) +(defun gud-gdb-load-history () + (when (ring-empty-p comint-input-ring) ; cf shell-mode + (let ((hfile (expand-file-name (or (getenv "GDBHISTFILE") + (if (eq system-type 'ms-dos) + "_gdb_history" + ".gdb_history")))) + ;; gdb defaults to 256, but we'll default to comint-input-ring-size. + (hsize (getenv "HISTSIZE"))) + (dolist (file (append '("~/.gdbinit") + (unless (string-equal (expand-file-name ".") + (expand-file-name "~")) + '(".gdbinit")))) + (if (file-readable-p (setq file (expand-file-name file))) + (with-temp-buffer + (insert-file-contents file) + ;; TODO? check for "set history save\\( *on\\)?" and do + ;; not use history otherwise? + (while (re-search-forward + "^ *set history \\(filename\\|size\\) *\\(.*\\)" nil t) + (cond ((string-equal (match-string 1) "filename") + (setq hfile (expand-file-name + (match-string 2) + (file-name-directory file)))) + ((string-equal (match-string 1) "size") + (setq hsize (match-string 2)))))))) + (and (stringp hsize) + (integerp (setq hsize (string-to-number hsize))) + (> hsize 0) + (setq-local comint-input-ring-size hsize)) + (if (stringp hfile) + (setq-local comint-input-ring-file-name hfile)) + (comint-read-input-ring t)))) + ;; The old gdb command (text command mode). The new one is in gdb-mi.el. ;;;###autoload (defun gud-gdb (command-line) @@ -832,6 +865,7 @@ gud-gdb (gud-common-init command-line nil 'gud-gdb-marker-filter) (setq-local gud-minor-mode 'gdb) + (gud-gdb-load-history) (gud-def gud-break "break %f:%l" "\C-b" "Set breakpoint at current line.") (gud-def gud-tbreak "tbreak %f:%l" "\C-t" -- 2.43.0 --=-=-= Content-Type: text/plain In GNU Emacs 30.0.50 (build 3, x86_64-unknown-openbsd7.4) of 2023-12-20 built on computer Repository revision: 44fd88410c72432fd3e74e0af00e7ec617fc8fe9 Repository branch: mgi/gud-gdb-history Windowing system distributor 'The X.Org Foundation', version 11.0.12101009 System Description: OpenBSD computer 7.4 GENERIC.MP#1523 amd64 Configured using: 'configure CC=egcc CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib MAKEINFO=gmakeinfo --prefix=/home/manuel/emacs --bindir=/home/manuel/bin --with-x-toolkit=no --without-cairo --without-dbus --without-gconf --without-gsettings --without-sound --without-compress-install' Configured features: FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBXML2 MODULES NOTIFY KQUEUE OLDXMENU PDUMPER PNG RSVG SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XDBE XFT XIM XINPUT2 XPM ZLIB Important settings: value of $LC_CTYPE: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Compilation Minor modes in effect: gdb-many-windows: t display-time-mode: t display-battery-mode: t desktop-save-mode: t server-mode: t override-global-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 minibuffer-regexp-mode: t buffer-read-only: t line-number-mode: t 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-1.4.1/theme-loaddefs hides /home/manuel/emacs/share/emacs/30.0.50/lisp/theme-loaddefs Features: (shadow emacsbug sh-script smie treesit pulse proced smerge-mode diff gdb-mi bindat gud help-fns radix-tree cl-print gnus-cite mail-extr textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check gnus-async gnus-bcklg qp gnus-ml gnus-topic mm-archive url-cache utf-7 imap rfc2104 nndoc nndraft nnmh network-stream nnfolder nnml gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache nnrss dabbrev magit-utils dash modus-vivendi-theme image-mode exif sort gnus-dired find-dired char-fold cus-edit cus-start misearch multi-isearch executable hi-lock mule-util jka-compr on-screen eww url-queue mm-url paredit vc-dir ewoc whitespace autorevert filenotify vc-git diff-mode vc vc-dispatcher bug-reference time battery cus-load desktop frameset exwm-randr xcb-randr exwm-config ido 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 server modus-operandi-theme modus-themes zone speed-type url-http url-auth url-gw nsm compat ytdious mingus libmpdee reporter edebug debug backtrace transmission color calc-bin calc-ext calc calc-loaddefs rect calc-macs 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 dbus xml 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 ebdb-mua ebdb-com crm ebdb-format ebdb mailabbrev eieio-opt speedbar ezimage dframe find-func eieio-base timezone icalendar gnus nnheader gnus-util mail-utils range mm-util mail-prsvr wid-edit web-mode derived disp-table erlang-start 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 rx trampver tramp-integration files-x tramp-message tramp-compat xdg shell pcomplete parse-time iso8601 time-date format-spec tramp-loaddefs 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 apropos 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 edmacro kmacro use-package-bind-key bind-key appt diary-lib diary-loaddefs cal-menu calendar cal-loaddefs pcase dired-x dired-aux dired dired-loaddefs cl-extra help-mode use-package-core repeat easy-mmode debbugs-autoloads ebdb-autoloads ef-themes-autoloads exwm-autoloads hyperbole-autoloads magit-autoloads git-commit-autoloads magit-section-autoloads dash-autoloads on-screen-autoloads osm-autoloads paredit-autoloads rust-mode-autoloads speed-type-autoloads transmission-autoloads with-editor-autoloads info compat-autoloads ytdious-autoloads 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 touch-screen 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 kqueue lcms2 dynamic-setting font-render-setting xinput2 x multi-tty move-toolbar make-network-process emacs) Memory information: ((conses 16 912166 365676) (symbols 48 51005 16) (strings 32 264144 8346) (string-bytes 1 8663487) (vectors 16 160434) (vector-slots 8 2123632 106671) (floats 8 593 3889) (intervals 56 21121 724) (buffers 992 44)) -- Manuel Giraud --=-=-=-- ------------=_1703159642-30232-1--