From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Brian Leung Newsgroups: gmane.emacs.bugs Subject: bug#49632: [PATCH] Ensure that M-x gdb populates gud-repeat-map Date: Tue, 27 Jul 2021 08:46:34 +0200 (CEST) Message-ID: <1323685923.615297.1627368394536@ichabod.co-bxl> References: <89178870.2006793.1626665845848@ichabod.co-bxl> <87eebupi5k.fsf@gnus.org> <343742107.2068902.1626706305280@ichabod.co-bxl> <87k0lml3wt.fsf@mail.linkov.net> <874kcql2r8.fsf@gnus.org> <2097190220.304800.1627097630028@ichabod.co-bxl> <87sg02zz65.fsf@gnus.org> <8735s2ru7o.fsf@mail.linkov.net> <2138242899.459686.1627248504532@ichabod.co-bxl> <875ywwbth7.fsf@mail.linkov.net> <1340188632.606225.1627358954291@ichabod.co-bxl> Reply-To: Brian Leung Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_615291_1778393584.1627368390899" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="1047"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Lars Ingebrigtsen , 49632@debbugs.gnu.org To: Juri Linkov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Jul 27 08:47:11 2021 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 1m8Grv-000Ad2-Ak for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 27 Jul 2021 08:47:11 +0200 Original-Received: from localhost ([::1]:51682 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m8Grt-0005jM-TQ for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 27 Jul 2021 02:47:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54030) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m8Grm-0005io-Jh for bug-gnu-emacs@gnu.org; Tue, 27 Jul 2021 02:47:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:40724) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1m8Grm-0007VW-BD for bug-gnu-emacs@gnu.org; Tue, 27 Jul 2021 02:47:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1m8Grm-0005qu-6b for bug-gnu-emacs@gnu.org; Tue, 27 Jul 2021 02:47:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Brian Leung Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 27 Jul 2021 06:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 49632 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 49632-submit@debbugs.gnu.org id=B49632.162736840922475 (code B ref 49632); Tue, 27 Jul 2021 06:47:02 +0000 Original-Received: (at 49632) by debbugs.gnu.org; 27 Jul 2021 06:46:49 +0000 Original-Received: from localhost ([127.0.0.1]:52270 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m8GrY-0005qR-GB for submit@debbugs.gnu.org; Tue, 27 Jul 2021 02:46:49 -0400 Original-Received: from wilbur.contactoffice.com ([212.3.242.68]:50994) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m8GrV-0005qB-6u for 49632@debbugs.gnu.org; Tue, 27 Jul 2021 02:46:47 -0400 Original-Received: from ichabod.co-bxl (ichabod.co-bxl [10.2.0.36]) by wilbur.contactoffice.com (Postfix) with ESMTP id 65CB5AAE; Tue, 27 Jul 2021 08:46:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1627368398; s=20210208-e7xh; d=mailfence.com; i=leungbk@mailfence.com; h=Date:From:Reply-To:Cc:Message-ID:In-Reply-To:References:MIME-Version:Content-Type; l=16281; bh=O96uAZsn4gZvKKaJvolo0daXsCwqpvfwvwT7jGrrPmw=; b=dxjNHiAr/iu92HXsUc2+zqTvhI1m2Rvs6fZwvmj2RJmRepecuD1mYDJ6gB9HElG0 h581nr4YZ1wDsPunoK6HBbTzGXkj/kz46p0PGyu7AFGLpYw6UXfKJYoKvbscY+iJoqk Emzxcj27xHu8jHjNPZjoA/ojOkwbVzFWPv8NNABxfhtPn3+q4YavNlt8+xT0cQep8CH VUpxypCKpxKioNurxb+gqG4/oLphdn7aedtfWaXAh/ukRu7QgIJWQqi1T5WUwHuoOh4 br+O01+swnBr/05CKYketKNN5zuC6dBjd6NCkv3ZeuBlKVlpzdx1pRBHUbJIPrPPVVm Xc2UKXL/UQ== In-Reply-To: <1340188632.606225.1627358954291@ichabod.co-bxl> X-Priority: 3 X-Mailer: ContactOffice Mail X-ContactOffice-Account: com:225491745 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" Xref: news.gmane.io gmane.emacs.bugs:210782 Archived-At: ------=_Part_615291_1778393584.1627368390899 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable I found a way to make gud-set-repeat-map-property a function without having= to change repeat.el. See attached for an updated patch. > ---------------------------------------- > From: Brian Leung > Sent: Tue Jul 27 06:09:14 CEST 2021 > To: Juri Linkov > Cc: Lars Ingebrigtsen , <49632@debbugs.gnu.org> > Subject: Re: bug#49632: [PATCH] Ensure that M-x gdb populates gud-repeat-= map >=20 >=20 > > Is there a reason why gud-set-repeat-map-property should be a macro, > > but not a function? When it's a macro, there are problems such that > > when the user modifies the map, then the function that uses the macro > > needs to be recompiled. >=20 > When I wrote initially wrote gud-set-repeat-map-property, I couldn't figu= re out how to make gud-set-repeat-map-property work as a function since the= repeat-map property needed to be a symbol corresponding to a keymap, and n= ot an evaluated keymap. >=20 > I've updated the patch with a change to the repeat-post-hook function in = repeat.el to accept an evaluated keymap, which permits a function version o= f gud-set-repeat-map-property. >=20 > > ---------------------------------------- > > From: Juri Linkov > > Sent: Tue Jul 27 00:48:20 CEST 2021 > > To: Brian Leung > > Cc: Lars Ingebrigtsen , <49632@debbugs.gnu.org> > > Subject: Re: bug#49632: [PATCH] Ensure that M-x gdb populates gud-repea= t-map > >=20 > >=20 > > >> There is one thing that I don't understand: is the > > >> helper function gud-set-repeat-map-property really needed? > > >> > > >> If e.g. the defvar gud-gdb-repeat-map uses such symbols as 'gud-next= ', > > >> could it put the 'repeat-map' property on the same symbols > > >> with reference to the variable 'map' directly in these defvars? > > >> Then only defvars will be needed, and no changes in gud-gdb, gdb. > > > > > > If we assign the repeat-map property within the defvars and avoid doi= ng so > > > in the M-x gdb commands, then after gud.el gets loaded, the repeat-ma= p > > > property on (say) gud-next will be 'jdb, since jdb-repeat-map is the = last > > > such foo-repeat-map defvar appearing in gud.el. In that case, calling= M-x > > > perldb and then running gud-next when repeat-mode is on will bring up= the > > > jdb-repeat-map, which contains some commands that aren't defined for > > > perldb. So I think the gud-set-repeat-map-property macro (or somethin= g like > > > it) is necessary. > >=20 > > You are right. Then I have only minor comments: > >=20 > > 1. I thought that you want to create two separate maps for gud-gdb and = gdb. > > This is the reason why I suggested to rename gud-repeat-map to gud-gdb-= repeat-map. > > But since you use only one map for gbd and gud-gdb, then the name > > gud-repeat-map is fine. > >=20 > > 2. Is there a reason why gud-set-repeat-map-property should be a macro, > > but not a function? When it's a macro, there are problems such that > > when the user modifies the map, then the function that uses the macro > > needs to be recompiled. >=20 >=20 > --=C2=A0 > Sent with https://mailfence.com > Secure and private email >=20 > --=20 > Mailfence.com > Private and secure email --=C2=A0 Sent with https://mailfence.com Secure and private email --=20 Mailfence.com Private and secure email ------=_Part_615291_1778393584.1627368390899 Content-Type: text/x-diff; charset=us-ascii; name=0001-Ensure-that-gud-commands-for-M-x-gdb-are-handled-by-.patch Content-Transfer-Encoding: 7bit Content-Description: File Attachment: 0001-Ensure-that-gud-commands-for-M-x-gdb-are-handled-by-.patch Content-Disposition: attachment; filename=0001-Ensure-that-gud-commands-for-M-x-gdb-are-handled-by-.patch >From ed94f68fb2eb675a8f470f811cca838aacea0c59 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Mon, 19 Jul 2021 23:41:01 -0700 Subject: [PATCH 1/2] Ensure that gud commands for M-x gdb are handled by repeat-mode * lisp/progmodes/gud.el (gud-gdb-repeat-map): Rename from gud-repeat-map, and populate at the top-level. (gud-set-repeat-map-property): Introduce this helper function for setting the repeat-map property. (gud-gdb): Use the gud-set-repeat-map-property function to assign the repeat-map property. * lisp/progmodes/gdb-mi.el (gdb): Use the gud-set-repeat-map-property function to assign the repeat-map property. Because different debugging tools may not support all of the gud-foo functions, we reassign the repeat-map property within the respective commands, as opposed to the top level of the files, to ensure that the repeat-map property is reassigned each time to a symbol corresponding to the active debugging tool. --- lisp/progmodes/gdb-mi.el | 2 ++ lisp/progmodes/gud.el | 37 +++++++++++++++++++++++++------------ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 57c99abec6..b9c8305bed 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -996,6 +996,8 @@ gdb (define-key gud-minor-mode-map [left-margin C-mouse-3] 'gdb-mouse-jump) + (gud-set-repeat-map-property 'gud-gdb-repeat-map) + (setq-local gud-gdb-completion-function 'gud-gdbmi-completions) (add-hook 'completion-at-point-functions #'gud-gdb-completion-at-point diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index 740a6e2581..c4413b104b 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -320,10 +320,32 @@ gud-tool-bar-map (tool-bar-local-item-from-menu (car x) (cdr x) map gud-minor-mode-map)))) -(defvar gud-repeat-map (make-sparse-keymap) - "Keymap to repeat gud stepping instructions `C-x C-a C-n n n'. +(defvar gud-gdb-repeat-map + (let ((map (make-sparse-keymap))) + (pcase-dolist (`(,key . ,cmd) '(("n" . gud-next) + ("s" . gud-step) + ("i" . gud-stepi) + ("c" . gud-cont) + ("l" . gud-refresh) + ("f" . gud-finish) + ("<" . gud-up) + (">" . gud-down))) + (define-key map key cmd)) + map) + "Keymap to repeat `gud-gdb' stepping instructions `C-x C-a C-n n n'. Used in `repeat-mode'.") +(defun gud-set-repeat-map-property (keymap-symbol) + "Set the `repeat-map' property of relevant gud commands to KEYMAP-SYMBOL. + +KEYMAP-SYMBOL is a symbol corresponding to some +`-repeat-map', a keymap containing gud commands that may be +repeated when `repeat-mode' is on." + (map-keymap-internal (lambda (_ cmd) + (put cmd 'repeat-map keymap-symbol)) + (symbol-value keymap-symbol))) + + (defun gud-file-name (f) "Transform a relative file name to an absolute file name. Uses `gud--directories' to find the source files." @@ -814,16 +836,7 @@ gud-gdb (gud-def gud-until "until %l" "\C-u" "Continue to current line.") (gud-def gud-run "run" nil "Run the program.") - (dolist (cmd '(("n" . gud-next) - ("s" . gud-step) - ("i" . gud-stepi) - ("c" . gud-cont) - ("l" . gud-refresh) - ("f" . gud-finish) - ("<" . gud-up) - (">" . gud-down))) - (define-key gud-repeat-map (car cmd) (cdr cmd)) - (put (cdr cmd) 'repeat-map 'gud-repeat-map)) + (gud-set-repeat-map-property 'gud-gdb-repeat-map) (add-hook 'completion-at-point-functions #'gud-gdb-completion-at-point nil 'local) -- 2.32.0 ------=_Part_615291_1778393584.1627368390899 Content-Type: text/x-diff; charset=us-ascii; name=0002-Ensure-that-gud-commands-for-non-GDB-debuggers-are-h.patch Content-Transfer-Encoding: 7bit Content-Description: File Attachment: 0002-Ensure-that-gud-commands-for-non-GDB-debuggers-are-h.patch Content-Disposition: attachment; filename=0002-Ensure-that-gud-commands-for-non-GDB-debuggers-are-h.patch >From 05b59031397f577589bc7cfe66a6ba5abc2d621c Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 20 Jul 2021 00:32:34 -0700 Subject: [PATCH 2/2] Ensure that gud commands for non-GDB debuggers are handled by repeat-mode * lisp/progmodes/gud.el (sdb-repeat-map): Define. (sdb): Set repeat-mode property to the symbol corresponding to the repeat map. (dbx-repeat-map): Define. (dbx): Set repeat-mode property to the symbol corresponding to the repeat map. (xdb-repeat-map): Define. (xdb): Set repeat-mode property to the symbol corresponding to the repeat map. (perldb-repeat-map): Define. (perldb): Set repeat-mode property to the symbol corresponding to the repeat map. (pdb-repeat-map): Define. (pdb): Set repeat-mode property to the symbol corresponding to the repeat map. (guiler-repeat-map): Define. (guiler): Set repeat-mode property to the symbol corresponding to the repeat map. (jdb-repeat-map): Define. (jdb): Set repeat-mode property to the symbol corresponding to the repeat map. --- lisp/progmodes/gud.el | 110 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index c4413b104b..ba438d651b 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -1037,6 +1037,18 @@ gud-sdb-needs-tags (defvar gud-sdb-lastfile nil) +(defvar sdb-repeat-map + (let ((map (make-sparse-keymap))) + (pcase-dolist (`(,key . ,cmd) '(("n" . gud-next) + ("s" . gud-step) + ("i" . gud-stepi) + ("c" . gud-cont) + ("l" . gud-refresh))) + (define-key map key cmd)) + map) + "Keymap to repeat `sdb' stepping instructions `C-x C-a C-n n n'. +Used in `repeat-mode'.") + (defun gud-sdb-marker-filter (string) (setq gud-marker-acc (if gud-marker-acc (concat gud-marker-acc string) string)) @@ -1107,6 +1119,8 @@ sdb (gud-def gud-cont "c" "\C-r" "Continue with display.") (gud-def gud-print "%e/" "\C-p" "Evaluate C expression at point.") + (gud-set-repeat-map-property 'sdb-repeat-map) + (setq comint-prompt-regexp "\\(^\\|\n\\)\\*") (setq paragraph-start comint-prompt-regexp) (run-hooks 'sdb-mode-hook) @@ -1265,6 +1279,23 @@ gud-dbx-use-stopformat-p ;; whereby `set $stopformat=1' reportedly produces output compatible ;; with `gud-dbx-marker-filter', which we prefer. +(defvar dbx-repeat-map + (let ((map (make-sparse-keymap))) + (pcase-dolist (`(,key . ,cmd) '(("n" . gud-next) + ("s" . gud-step) + ("i" . gud-stepi) + ("c" . gud-cont) + ("l" . gud-refresh) + ("<" . gud-up) + (">" . gud-down))) + (define-key map key cmd)) + (when (or gud-mips-p + gud-irix-p) + (define-key map "f" 'gud-finish)) + map) + "Keymap to repeat `dbx' stepping instructions `C-x C-a C-n n n'. +Used in `repeat-mode'.") + ;; The process filter is also somewhat ;; unreliable, sometimes not spotting the markers; I don't know ;; whether there's anything that can be done about that.] @@ -1412,6 +1443,8 @@ dbx (gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.") (gud-def gud-run "run" nil "Run the program.") + (gud-set-repeat-map-property 'dbx-repeat-map) + (setq comint-prompt-regexp "^[^)\n]*dbx) *") (setq paragraph-start comint-prompt-regexp) (run-hooks 'dbx-mode-hook) @@ -1423,6 +1456,21 @@ dbx ;; History of argument lists passed to xdb. (defvar gud-xdb-history nil) +(defvar xdb-repeat-map + (let ((map (make-sparse-keymap))) + (pcase-dolist (`(,key . ,cmd) '(("n" . gud-next) + ("s" . gud-step) + ("i" . gud-stepi) + ("c" . gud-cont) + ("l" . gud-refresh) + ("f" . gud-finish) + ("<" . gud-up) + (">" . gud-down))) + (define-key map key cmd)) + map) + "Keymap to repeat `xdb' stepping instructions `C-x C-a C-n n n'. +Used in `repeat-mode'.") + (defcustom gud-xdb-directories nil "A list of directories that xdb should search for source code. If nil, only source files in the program directory @@ -1488,6 +1536,8 @@ xdb (gud-def gud-finish "bu\\t" "\C-f" "Finish executing current function.") (gud-def gud-print "p %e" "\C-p" "Evaluate C expression at point.") + (gud-set-repeat-map-property 'xdb-repeat-map) + (setq comint-prompt-regexp "^>") (setq paragraph-start comint-prompt-regexp) (run-hooks 'xdb-mode-hook)) @@ -1498,6 +1548,17 @@ xdb ;; History of argument lists passed to perldb. (defvar gud-perldb-history nil) +(defvar perldb-repeat-map + (let ((map (make-sparse-keymap))) + (pcase-dolist (`(,key . ,cmd) '(("n" . gud-next) + ("s" . gud-step) + ("c" . gud-cont) + ("l" . gud-refresh))) + (define-key map key cmd)) + map) + "Keymap to repeat `perldb' stepping instructions `C-x C-a C-n n n'. +Used in `repeat-mode'.") + (defun gud-perldb-massage-args (_file args) "Convert a command line as would be typed normally to run perldb into one that invokes an Emacs-enabled debugging session. @@ -1640,6 +1701,7 @@ perldb (gud-def gud-print "p %e" "\C-p" "Evaluate perl expression at point.") (gud-def gud-until "c %l" "\C-u" "Continue to current line.") + (gud-set-repeat-map-property 'perldb-repeat-map) (setq comint-prompt-regexp "^ DB<+[0-9]+>+ ") (setq paragraph-start comint-prompt-regexp) @@ -1668,6 +1730,20 @@ gud-pdb-marker-regexp-fnname-group (defvar gud-pdb-marker-regexp-start "^> ") +(defvar pdb-repeat-map + (let ((map (make-sparse-keymap))) + (pcase-dolist (`(,key . ,cmd) '(("n" . gud-next) + ("s" . gud-step) + ("c" . gud-cont) + ("l" . gud-refresh) + ("f" . gud-finish) + ("<" . gud-up) + (">" . gud-down))) + (define-key map key cmd)) + map) + "Keymap to repeat `pdb' stepping instructions `C-x C-a C-n n n'. +Used in `repeat-mode'.") + ;; There's no guarantee that Emacs will hand the filter the entire ;; marker at once; it could be broken up across several strings. We ;; might even receive a big chunk with several markers in it. If we @@ -1757,6 +1833,8 @@ pdb (gud-def gud-print "p %e" "\C-p" "Evaluate Python expression at point.") (gud-def gud-statement "!%e" "\C-e" "Execute Python statement at point.") + (gud-set-repeat-map-property 'pdb-repeat-map) + ;; (setq comint-prompt-regexp "^(.*pdb[+]?) *") (setq comint-prompt-regexp "^(Pdb) *") (setq paragraph-start comint-prompt-regexp) @@ -1770,6 +1848,19 @@ gud-guiler-history (defvar gud-guiler-lastfile nil) +(defvar guiler-repeat-map + (let ((map (make-sparse-keymap))) + (pcase-dolist (`(,key . ,cmd) '(("n" . gud-next) + ("s" . gud-step) + ("l" . gud-refresh) + ("f" . gud-finish) + ("<" . gud-up) + (">" . gud-down))) + (define-key map key cmd)) + map) + "Keymap to repeat `guiler' stepping instructions `C-x C-a C-n n n'. +Used in `repeat-mode'.") + (defun gud-guiler-marker-filter (string) (setq gud-marker-acc (if gud-marker-acc (concat gud-marker-acc string) string)) @@ -1835,6 +1926,8 @@ guiler (gud-def gud-down ",down" ">" "Down one stack frame.") (gud-def gud-print "%e" "\C-p" "Evaluate Guile expression at point.") + (gud-set-repeat-map-property 'guiler-repeat-map) + (setq comint-prompt-regexp "^scheme@([^>]+> ") (setq paragraph-start comint-prompt-regexp) (run-hooks 'guiler-mode-hook)) @@ -2280,6 +2373,21 @@ gud-jdb-find-source-file ;; Note: Reset to this value every time a prompt is seen (defvar gud-jdb-lowest-stack-level 999) +(defvar jdb-repeat-map + (let ((map (make-sparse-keymap))) + (pcase-dolist (`(,key . ,cmd) '(("n" . gud-next) + ("s" . gud-step) + ("i" . gud-stepi) + ("c" . gud-cont) + ("f" . gud-finish) + ("<" . gud-up) + (">" . gud-down) + ("l" . gud-refresh))) + (define-key map key cmd)) + map) + "Keymap to repeat `jdb' stepping instructions `C-x C-a C-n n n'. +Used in `repeat-mode'.") + (defun gud-jdb-find-source-using-classpath (p) "Find source file corresponding to fully qualified class P. Convert P from jdb's output, converted to a pathname @@ -2488,6 +2596,8 @@ jdb (gud-def gud-print "print %e" "\C-p" "Print value of expression at point.") (gud-def gud-pstar "dump %e" nil "Print all object information at point.") + (gud-set-repeat-map-property 'jdb-repeat-map) + (setq comint-prompt-regexp "^> \\|^[^ ]+\\[[0-9]+\\] ") (setq paragraph-start comint-prompt-regexp) (run-hooks 'jdb-mode-hook) -- 2.32.0 ------=_Part_615291_1778393584.1627368390899--