From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Manuel Giraud via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#67928: 30.0.50; [PATCH] Load GDB history in gud-gdb Date: Wed, 20 Dec 2023 13:43:23 +0100 Message-ID: <871qbh9h90.fsf@ledu-giraud.fr> Reply-To: Manuel Giraud Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33073"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: 67928@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Dec 20 13:44:18 2023 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 1rFvvu-0008Qf-1O for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 20 Dec 2023 13:44:18 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rFvvf-0001td-Gq; Wed, 20 Dec 2023 07:44:03 -0500 Original-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 1rFvvb-0001ry-6a for bug-gnu-emacs@gnu.org; Wed, 20 Dec 2023 07:43:59 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rFvva-0002qV-V3 for bug-gnu-emacs@gnu.org; Wed, 20 Dec 2023 07:43:58 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rFvve-0005vH-2x for bug-gnu-emacs@gnu.org; Wed, 20 Dec 2023 07:44:02 -0500 X-Loop: help-debbugs@gnu.org 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 X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.170307623522745 (code B ref -1); Wed, 20 Dec 2023 12:44:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 20 Dec 2023 12:43:55 +0000 Original-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 Original-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 Original-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 Original-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== Original-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) 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-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:276558 Archived-At: --=-=-= 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 --=-=-=--