annotate lisp/gud.el @ 49583:ffebff40964c

(dired-find-buffer-nocreate): Avoid error if dired-directory is nil.
author Richard M. Stallman <rms@gnu.org>
date Tue, 04 Feb 2003 10:39:35 +0000
parents cea1991cf560
children 37645a051842
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1 ;;; gud.el --- Grand Unified Debugger mode for running GDB and other debuggers
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
2
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
3 ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
4818
15dd7db2ab6c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 4732
diff changeset
4 ;; Maintainer: FSF
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
5 ;; Keywords: unix, tools
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
6
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
7 ;; Copyright (C) 1992,93,94,95,96,1998,2000,2002 Free Software Foundation, Inc.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
8
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; any later version.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; GNU General Public License for more details.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13797
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13797
diff changeset
24 ;; Boston, MA 02111-1307, USA.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
25
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
26 ;;; Commentary:
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
27
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
28 ;; The ancestral gdb.el was by W. Schelter <wfs@rascal.ics.utexas.edu>
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
29 ;; It was later rewritten by rms. Some ideas were due to Masanobu.
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
30 ;; Grand Unification (sdb/dbx support) by Eric S. Raymond <esr@thyrsus.com>
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31 ;; The overloading code was then rewritten by Barry Warsaw <bwarsaw@cen.com>,
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
32 ;; who also hacked the mode to use comint.el. Shane Hartman <shane@spr.com>
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
33 ;; added support for xdb (HPUX debugger). Rick Sladkey <jrs@world.std.com>
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
34 ;; wrote the GDB command completion code. Dave Love <d.love@dl.ac.uk>
10217
d112e49af18b (gdb): Correct tbreak doc string.
Richard M. Stallman <rms@gnu.org>
parents: 10203
diff changeset
35 ;; added the IRIX kluge, re-implemented the Mips-ish variant and added
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
36 ;; a menu. Brian D. Carlstrom <bdc@ai.mit.edu> combined the IRIX kluge with
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
37 ;; the gud-xdb-directories hack producing gud-dbx-directories. Derek L. Davies
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
38 ;; <ddavies@world.std.com> added support for jdb (Java debugger.)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
39
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
40 ;;; Code:
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
41
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
42 (require 'comint)
923
9f3cc03dae67 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 914
diff changeset
43 (require 'etags)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
44
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
45 ;; ======================================================================
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
46 ;; GUD commands must be visible in C buffers visited by GUD
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
47
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
48 (defgroup gud nil
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
49 "Grand Unified Debugger mode for gdb and other debuggers under Emacs.
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
50 Supported debuggers include gdb, sdb, dbx, xdb, perldb, pdb (Python), jdb, and bash."
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
51 :group 'unix
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
52 :group 'tools)
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
53
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
54
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
55 (defcustom gud-key-prefix "\C-x\C-a"
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
56 "Prefix of all GUD commands valid in C buffers."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
57 :type 'string
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
58 :group 'gud)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
59
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
60 (global-set-key (concat gud-key-prefix "\C-l") 'gud-refresh)
7741
347191d7ca7d Use ctl-x-map to bind C-x SPC.
Richard M. Stallman <rms@gnu.org>
parents: 7461
diff changeset
61 (define-key ctl-x-map " " 'gud-break) ;; backward compatibility hack
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
62
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
63 (defvar gud-marker-filter nil)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
64 (put 'gud-marker-filter 'permanent-local t)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
65 (defvar gud-find-file nil)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
66 (put 'gud-find-file 'permanent-local t)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
67
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
68 (defun gud-marker-filter (&rest args)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
69 (apply gud-marker-filter args))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
71 (defvar gud-minor-mode nil)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
72 (put 'gud-minor-mode 'permanent-local t)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
73
49354
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
74 (defvar gud-keep-buffer nil)
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
75
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
76 (defun gud-symbol (sym &optional soft minor-mode)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
77 "Return the symbol used for SYM in MINOR-MODE.
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
78 MINOR-MODE defaults to `gud-minor-mode.
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
79 The symbol returned is `gud-<MINOR-MODE>-<SYM>'.
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
80 If SOFT is non-nil, returns nil if the symbol doesn't already exist."
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
81 (unless (or minor-mode gud-minor-mode) (error "Gud internal error"))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
82 (funcall (if soft 'intern-soft 'intern)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
83 (format "gud-%s-%s" (or minor-mode gud-minor-mode) sym)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
84
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
85 (defun gud-val (sym &optional minor-mode)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
86 "Return the value of `gud-symbol' SYM. Default to nil."
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
87 (let ((sym (gud-symbol sym t minor-mode)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
88 (if (boundp sym) (symbol-value sym))))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
89
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
90 (defvar gud-running nil
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
91 "Non-nil if debuggee is running.
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
92 Used to grey out relevant toolbar icons.")
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
93
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
94 (easy-mmode-defmap gud-menu-map
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
95 '(([refresh] "Refresh" . gud-refresh)
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
96 ([run] menu-item "Run" gud-run
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
97 :enable (and (not gud-running)
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
98 (memq gud-minor-mode '(gdba gdb jdb))))
49150
7ae18fc8cd2f (gud-menu-map, gud-tool-bar-map, gdb): Change gud-goto to gud-until.
Nick Roberts <nickrob@snap.net.nz>
parents: 49146
diff changeset
99 ([goto] menu-item "Continue to selection" gud-until
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
100 :enable (and (not gud-running)
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
101 (memq gud-minor-mode '(gdba gdb))))
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
102 ([remove] menu-item "Remove Breakpoint" gud-remove
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
103 :enable (not gud-running))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
104 ([tbreak] menu-item "Temporary Breakpoint" gud-tbreak
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
105 :enable (memq gud-minor-mode '(gdba gdb sdb xdb bashdb)))
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
106 ([break] menu-item "Set Breakpoint" gud-break
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
107 :enable (not gud-running))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
108 ([up] menu-item "Up Stack" gud-up
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
109 :enable (and (not gud-running)
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
110 (memq gud-minor-mode
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
111 '(gdba gdb dbx xdb jdb pdb bashdb))))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
112 ([down] menu-item "Down Stack" gud-down
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
113 :enable (and (not gud-running)
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
114 (memq gud-minor-mode
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
115 '(gdba gdb dbx xdb jdb pdb bashdb))))
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
116 ([print] menu-item "Print Expression" gud-print
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
117 :enable (not gud-running))
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
118 ([display] menu-item "Display Expression" gud-display
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
119 :enable (and (not gud-running)
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
120 (eq gud-minor-mode 'gdba)))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
121 ([finish] menu-item "Finish Function" gud-finish
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
122 :enable (and (not gud-running)
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
123 (memq gud-minor-mode
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
124 '(gdba gdb xdb jdb pdb bashdb))))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
125 ([stepi] "Step Instruction" . gud-stepi)
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
126 ([step] menu-item "Step Line" gud-step
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
127 :enable (not gud-running))
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
128 ([next] menu-item "Next Line" gud-next
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
129 :enable (not gud-running))
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
130 ([cont] menu-item "Continue" gud-cont
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
131 :enable (not gud-running)))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
132 "Menu for `gud-mode'."
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
133 :name "Gud")
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
134
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
135 (easy-mmode-defmap gud-minor-mode-map
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
136 `(([menu-bar debug] . ("Gud" . ,gud-menu-map)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
137 "Map used in visited files.")
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
138
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
139 (let ((m (assq 'gud-minor-mode minor-mode-map-alist)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
140 (if m (setcdr m gud-minor-mode-map)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
141 (push (cons 'gud-minor-mode gud-minor-mode-map) minor-mode-map-alist)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
142
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
143 (defvar gud-mode-map
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
144 ;; Will inherit from comint-mode via define-derived-mode.
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
145 (make-sparse-keymap)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
146 "`gud-mode' keymap.")
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
147
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
148 (defvar gud-tool-bar-map
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
149 (if (display-graphic-p)
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
150 (let ((map (make-sparse-keymap)))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
151 (dolist (x '((gud-break . "gud-break")
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
152 (gud-remove . "gud-remove")
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
153 (gud-print . "gud-print")
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
154 (gud-display . "gud-display")
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
155 (gud-run . "gud-run")
49150
7ae18fc8cd2f (gud-menu-map, gud-tool-bar-map, gdb): Change gud-goto to gud-until.
Nick Roberts <nickrob@snap.net.nz>
parents: 49146
diff changeset
156 (gud-until . "gud-until")
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
157 (gud-cont . "gud-cont")
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
158 (gud-step . "gud-step")
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
159 (gud-next . "gud-next")
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
160 (gud-finish . "gud-finish")
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
161 (gud-up . "gud-up")
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
162 (gud-down . "gud-down"))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
163 map)
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
164 (tool-bar-local-item-from-menu
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
165 (car x) (cdr x) map gud-minor-mode-map)))))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
166
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
167 (defun gud-file-name (f)
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
168 "Transform a relative file name to an absolute file name.
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
169 Uses `gud-<MINOR-MODE>-directories' to find the source files."
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
170 (if (file-exists-p f) (expand-file-name f)
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
171 (let ((directories (gud-val 'directories))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
172 (result nil))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
173 (while directories
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
174 (let ((path (expand-file-name f (car directories))))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
175 (if (file-exists-p path)
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
176 (setq result path
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
177 directories nil)))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
178 (setq directories (cdr directories)))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
179 result)))
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
180
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
181 (defun gud-find-file (file)
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
182 ;; Don't get confused by double slashes in the name that comes from GDB.
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
183 (while (string-match "//+" file)
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
184 (setq file (replace-match "/" t t file)))
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
185 (let ((minor-mode gud-minor-mode)
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
186 (buf (funcall (or gud-find-file 'gud-file-name) file)))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
187 (when (stringp buf)
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
188 (setq buf (and (file-readable-p buf) (find-file-noselect buf 'nowarn))))
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
189 (when buf
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
190 ;; Copy `gud-minor-mode' to the found buffer to turn on the menu.
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
191 (with-current-buffer buf
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
192 (set (make-local-variable 'gud-minor-mode) minor-mode)
49354
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
193 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
194 (make-local-variable 'gud-keep-buffer))
48571
0513d8116258 (gdb-running): New variable.
Nick Roberts <nickrob@snap.net.nz>
parents: 48299
diff changeset
195 buf)))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
196
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
197 ;; ======================================================================
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
198 ;; command definition
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
199
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
200 ;; This macro is used below to define some basic debugger interface commands.
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
201 ;; Of course you may use `gud-def' with any other debugger command, including
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
202 ;; user defined ones.
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
203
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
204 ;; A macro call like (gud-def FUNC NAME KEY DOC) expands to a form
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
205 ;; which defines FUNC to send the command NAME to the debugger, gives
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
206 ;; it the docstring DOC, and binds that function to KEY in the GUD
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
207 ;; major mode. The function is also bound in the global keymap with the
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
208 ;; GUD prefix.
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
209
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
210 (defmacro gud-def (func cmd key &optional doc)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
211 "Define FUNC to be a command sending STR and bound to KEY, with
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
212 optional doc string DOC. Certain %-escapes in the string arguments
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
213 are interpreted specially if present. These are:
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
214
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
215 %f name (without directory) of current source file.
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
216 %F name (without directory or extension) of current source file.
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
217 %d directory of current source file.
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
218 %l number of current source line
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
219 %e text of the C lvalue or function-call expression surrounding point.
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
220 %a text of the hexadecimal address surrounding point
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
221 %p prefix argument to the command (if any) as a number
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
222
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
223 The `current' source file is the file of the current buffer (if
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
224 we're in a C file) or the source file current at the last break or
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
225 step (if we're in the GUD buffer).
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
226 The `current' line is that of the current buffer (if we're in a
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
227 source file) or the source line number at the last break or step (if
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
228 we're in the GUD buffer)."
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
229 `(progn
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
230 (defun ,func (arg)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
231 ,@(if doc (list doc))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
232 (interactive "p")
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
233 ,(if (stringp cmd)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
234 `(gud-call ,cmd arg)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
235 cmd))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
236 ,(if key `(local-set-key ,(concat "\C-c" key) ',func))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
237 ,(if key `(global-set-key (vconcat gud-key-prefix ,key) ',func))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
238
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
239 ;; Where gud-display-frame should put the debugging arrow; a cons of
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
240 ;; (filename . line-number). This is set by the marker-filter, which scans
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
241 ;; the debugger's output for indications of the current program counter.
1275
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
242 (defvar gud-last-frame nil)
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
243
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
244 ;; Used by gud-refresh, which should cause gud-display-frame to redisplay
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
245 ;; the last frame, even if it's been called before and gud-last-frame has
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
246 ;; been set to nil.
4335
907bf380e92e * gud.el (gud-last-last-frame): Specify initial value. `dbx'
Jim Blandy <jimb@redhat.com>
parents: 4298
diff changeset
247 (defvar gud-last-last-frame nil)
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
248
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
249 ;; All debugger-specific information is collected here.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
250 ;; Here's how it works, in case you ever need to add a debugger to the mode.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
251 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
252 ;; Each entry must define the following at startup:
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
253 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
254 ;;<name>
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
255 ;; comint-prompt-regexp
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
256 ;; gud-<name>-massage-args
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
257 ;; gud-<name>-marker-filter
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
258 ;; gud-<name>-find-file
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
259 ;;
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
260 ;; The job of the massage-args method is to modify the given list of
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
261 ;; debugger arguments before running the debugger.
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
262 ;;
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
263 ;; The job of the marker-filter method is to detect file/line markers in
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
264 ;; strings and set the global gud-last-frame to indicate what display
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
265 ;; action (if any) should be triggered by the marker. Note that only
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3551
diff changeset
266 ;; whatever the method *returns* is displayed in the buffer; thus, you
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
267 ;; can filter the debugger's output, interpreting some and passing on
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
268 ;; the rest.
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
269 ;;
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
270 ;; The job of the find-file method is to visit and return the buffer indicated
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
271 ;; by the car of gud-tag-frame. This may be a file name, a tag name, or
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
272 ;; something else.
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
273
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
274 ;; ======================================================================
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
275 ;; speedbar support functions and variables.
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
276 (eval-when-compile (require 'speedbar)) ;For speedbar-with-attached-buffer.
22734
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
277
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
278 (defvar gud-last-speedbar-buffer nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
279 "The last GUD buffer used.")
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
280
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
281 (defvar gud-last-speedbar-stackframe nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
282 "Description of the currently displayed GUD stack.
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
283 t means that there is no stack, and we are in display-file mode.")
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
284
22734
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
285 (defvar gud-speedbar-key-map nil
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
286 "Keymap used when in the buffers display mode.")
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
287
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
288 (defun gud-install-speedbar-variables ()
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
289 "Install those variables used by speedbar to enhance gud/gdb."
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
290 (if gud-speedbar-key-map
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
291 nil
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
292 (setq gud-speedbar-key-map (speedbar-make-specialized-keymap))
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
293
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
294 (define-key gud-speedbar-key-map "j" 'speedbar-edit-line)
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
295 (define-key gud-speedbar-key-map "e" 'speedbar-edit-line)
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
296 (define-key gud-speedbar-key-map "\C-m" 'speedbar-edit-line)))
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
297
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
298 (defvar gud-speedbar-menu-items
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
299 ;; Note to self. Add expand, and turn off items when not available.
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
300 '(["Jump to stack frame" speedbar-edit-line t])
42706
be541feb06cc Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 41952
diff changeset
301 "Additional menu items to add to the speedbar frame.")
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
302
22734
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
303 ;; Make sure our special speedbar mode is loaded
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
304 (if (featurep 'speedbar)
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
305 (gud-install-speedbar-variables)
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
306 (add-hook 'speedbar-load-hook 'gud-install-speedbar-variables))
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
307
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
308 (defun gud-speedbar-buttons (buffer)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
309 "Create a speedbar display based on the current state of GUD.
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
310 If the GUD BUFFER is not running a supported debugger, then turn
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
311 off the specialized speedbar mode."
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
312 (if (and (save-excursion (goto-char (point-min))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
313 (looking-at "Current Stack"))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
314 (equal gud-last-last-frame gud-last-speedbar-stackframe))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
315 nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
316 (setq gud-last-speedbar-buffer buffer)
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
317 (let* ((minor-mode (with-current-buffer buffer gud-minor-mode))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
318 (frames
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
319 (cond ((memq minor-mode '(gdba gdb))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
320 (gud-gdb-get-stackframe buffer))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
321 ;; Add more debuggers here!
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
322 (t
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
323 (speedbar-remove-localized-speedbar-support buffer)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
324 nil))))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
325 (erase-buffer)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
326 (if (not frames)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
327 (insert "No Stack frames\n")
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
328 (insert "Current Stack:\n"))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
329 (while frames
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
330 (insert (nth 1 (car frames)) ":\n")
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
331 (if (= (length (car frames)) 2)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
332 (progn
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
333 ; (speedbar-insert-button "[?]"
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
334 ; 'speedbar-button-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
335 ; nil nil nil t)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
336 (speedbar-insert-button (car (car frames))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
337 'speedbar-directory-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
338 nil nil nil t))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
339 ; (speedbar-insert-button "[+]"
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
340 ; 'speedbar-button-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
341 ; 'speedbar-highlight-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
342 ; 'gud-gdb-get-scope-data
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
343 ; (car frames) t)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
344 (speedbar-insert-button (car (car frames))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
345 'speedbar-file-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
346 'speedbar-highlight-face
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
347 (cond ((memq minor-mode '(gdba gdb))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
348 'gud-gdb-goto-stackframe)
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 37878
diff changeset
349 (t (error "Should never be here")))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
350 (car frames) t))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
351 (setq frames (cdr frames)))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
352 ; (let ((selected-frame
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
353 ; (cond ((eq ff 'gud-gdb-find-file)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
354 ; (gud-gdb-selected-frame-info buffer))
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 37878
diff changeset
355 ; (t (error "Should never be here"))))))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
356 )
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
357 (setq gud-last-speedbar-stackframe gud-last-last-frame)))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
358
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
359
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
360 ;; ======================================================================
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
361 ;; gdb functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
362
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
363 ;; History of argument lists passed to gdb.
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
364 (defvar gud-gdb-history nil)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
365
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
366 (defcustom gud-gdb-command-name "gdb --fullname"
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
367 "Default command to execute an executable under the GDB debugger."
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
368 :type 'string
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
369 :group 'gud)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
370
11960
5d3f2639cf3a (gud-gdb-marker-regexp): New var. Use path-separator.
Karl Heuer <kwzh@gnu.org>
parents: 11930
diff changeset
371 (defvar gud-gdb-marker-regexp
16843
a94faa952a55 (gud-gdb-marker-regexp): Use colon always, not path-separator.
Richard M. Stallman <rms@gnu.org>
parents: 16405
diff changeset
372 ;; This used to use path-separator instead of ":";
a94faa952a55 (gud-gdb-marker-regexp): Use colon always, not path-separator.
Richard M. Stallman <rms@gnu.org>
parents: 16405
diff changeset
373 ;; however, we found that on both Windows 32 and MSDOS
a94faa952a55 (gud-gdb-marker-regexp): Use colon always, not path-separator.
Richard M. Stallman <rms@gnu.org>
parents: 16405
diff changeset
374 ;; a colon is correct here.
19682
9bf29ac182b4 (gud-gdb-marker-regexp): Allow for drive letter and colon.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19174
diff changeset
375 (concat "\032\032\\(.:?[^" ":" "\n]*\\)" ":"
16843
a94faa952a55 (gud-gdb-marker-regexp): Use colon always, not path-separator.
Richard M. Stallman <rms@gnu.org>
parents: 16405
diff changeset
376 "\\([0-9]*\\)" ":" ".*\n"))
11960
5d3f2639cf3a (gud-gdb-marker-regexp): New var. Use path-separator.
Karl Heuer <kwzh@gnu.org>
parents: 11930
diff changeset
377
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
378 ;; There's no guarantee that Emacs will hand the filter the entire
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
379 ;; marker at once; it could be broken up across several strings. We
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
380 ;; might even receive a big chunk with several markers in it. If we
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
381 ;; receive a chunk of text which looks like it might contain the
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
382 ;; beginning of a marker, we save it here between calls to the
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
383 ;; filter.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
384 (defvar gud-marker-acc "")
7317
ce56b572b5c8 (gud-marker-acc): Use make-variable-buffer-local.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
385 (make-variable-buffer-local 'gud-marker-acc)
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
386
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
387 (defun gud-gdb-marker-filter (string)
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
388 (setq gud-marker-acc (concat gud-marker-acc string))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
389 (let ((output ""))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
390
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
391 ;; Process all the complete markers in this chunk.
11960
5d3f2639cf3a (gud-gdb-marker-regexp): New var. Use path-separator.
Karl Heuer <kwzh@gnu.org>
parents: 11930
diff changeset
392 (while (string-match gud-gdb-marker-regexp gud-marker-acc)
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
393 (setq
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
394
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
395 ;; Extract the frame position from the marker.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
396 gud-last-frame (cons (match-string 1 gud-marker-acc)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
397 (string-to-int (match-string 2 gud-marker-acc)))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
398
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
399 ;; Append any text before the marker to the output we're going
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
400 ;; to return - we don't include the marker in this text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
401 output (concat output
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
402 (substring gud-marker-acc 0 (match-beginning 0)))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
403
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
404 ;; Set the accumulator to the remaining text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
405 gud-marker-acc (substring gud-marker-acc (match-end 0))))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
406
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
407 ;; Does the remaining text look like it might end with the
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
408 ;; beginning of another marker? If it does, then keep it in
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
409 ;; gud-marker-acc until we receive the rest of it. Since we
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
410 ;; know the full marker regexp above failed, it's pretty simple to
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
411 ;; test for marker starts.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
412 (if (string-match "\032.*\\'" gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
413 (progn
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
414 ;; Everything before the potential marker start can be output.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
415 (setq output (concat output (substring gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
416 0 (match-beginning 0))))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
417
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
418 ;; Everything after, we save, to combine with later input.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
419 (setq gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
420 (substring gud-marker-acc (match-beginning 0))))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
421
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
422 (setq output (concat output gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
423 gud-marker-acc ""))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
424
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
425 output))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
426
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
427 (easy-mmode-defmap gud-minibuffer-local-map
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
428 '(("\C-i" . comint-dynamic-complete-filename))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
429 "Keymap for minibuffer prompting of gud startup command."
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
430 :inherit minibuffer-local-map)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
431
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
432 (defun gud-query-cmdline (minor-mode &optional init)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
433 (let* ((hist-sym (gud-symbol 'history nil minor-mode))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
434 (cmd-name (gud-val 'command-name minor-mode)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
435 (unless (boundp hist-sym) (set hist-sym nil))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
436 (read-from-minibuffer
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
437 (format "Run %s (like this): " minor-mode)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
438 (or (car-safe (symbol-value hist-sym))
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
439 (concat (or cmd-name (symbol-name minor-mode))
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
440 " "
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
441 (or init
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
442 (let ((file nil))
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
443 (dolist (f (directory-files default-directory) file)
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
444 (if (and (file-executable-p f)
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
445 (not (file-directory-p f))
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
446 (or (not file)
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
447 (file-newer-than-file-p f file)))
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
448 (setq file f)))))))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
449 gud-minibuffer-local-map nil
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
450 hist-sym)))
6238
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
451
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
452 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
453 (defun gdb (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
454 "Run gdb on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
455 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
456 and source-file directory for your debugger."
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
457 (interactive (list (gud-query-cmdline 'gdb)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
458
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
459 (gud-common-init command-line nil 'gud-gdb-marker-filter)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
460 (set (make-local-variable 'gud-minor-mode) 'gdb)
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
461
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
462 (gud-def gud-break "break %f:%l" "\C-b" "Set breakpoint at current line.")
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
463 (gud-def gud-tbreak "tbreak %f:%l" "\C-t" "Set temporary breakpoint at current line.")
10518
d291152ebe20 (gdb): In gud-remove, specify the source file.
Richard M. Stallman <rms@gnu.org>
parents: 10448
diff changeset
464 (gud-def gud-remove "clear %f:%l" "\C-d" "Remove breakpoint at current line")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
465 (gud-def gud-step "step %p" "\C-s" "Step one source line with display.")
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
466 (gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
467 (gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
468 (gud-def gud-cont "cont" "\C-r" "Continue with display.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
469 (gud-def gud-finish "finish" "\C-f" "Finish executing current function.")
41935
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
470 (gud-def gud-jump "tbreak %f:%l\njump %f:%l" "\C-j" "Relocate execution address to line at point in source buffer.")
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
471
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
472 (gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
473 (gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).")
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
474 (gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.")
49150
7ae18fc8cd2f (gud-menu-map, gud-tool-bar-map, gdb): Change gud-goto to gud-until.
Nick Roberts <nickrob@snap.net.nz>
parents: 49146
diff changeset
475 (gud-def gud-until "until %l" "\C-u" "Continue up to current line.")
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
476 (gud-def gud-run "run" nil "Run the program.")
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
477
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
478 (local-set-key "\C-i" 'gud-gdb-complete-command)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
479 (setq comint-prompt-regexp "^(.*gdb[+]?) *")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
480 (setq paragraph-start comint-prompt-regexp)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
481 (run-hooks 'gdb-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
482 )
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
483
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
484 ;; One of the nice features of GDB is its impressive support for
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
485 ;; context-sensitive command completion. We preserve that feature
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
486 ;; in the GUD buffer by using a GDB command designed just for Emacs.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
487
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
488 ;; The completion process filter indicates when it is finished.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
489 (defvar gud-gdb-fetch-lines-in-progress)
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
490
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
491 ;; Since output may arrive in fragments we accumulate partials strings here.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
492 (defvar gud-gdb-fetch-lines-string)
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
493
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
494 ;; We need to know how much of the completion to chop off.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
495 (defvar gud-gdb-fetch-lines-break)
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
496
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
497 ;; The completion list is constructed by the process filter.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
498 (defvar gud-gdb-fetched-lines)
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
499
6535
01db0be5fec8 (gud-comint-buffer): Move defvar up.
Richard M. Stallman <rms@gnu.org>
parents: 6531
diff changeset
500 (defvar gud-comint-buffer nil)
01db0be5fec8 (gud-comint-buffer): Move defvar up.
Richard M. Stallman <rms@gnu.org>
parents: 6531
diff changeset
501
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
502 (defun gud-gdb-complete-command ()
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
503 "Perform completion on the GDB command preceding point.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
504 This is implemented using the GDB `complete' command which isn't
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
505 available with older versions of GDB."
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
506 (interactive)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
507 (let* ((end (point))
30643
4a6ff467897e (gud-gdb-complete-command): Use comint-line-beginning-position.
Miles Bader <miles@gnu.org>
parents: 28992
diff changeset
508 (command (buffer-substring (comint-line-beginning-position) end))
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
509 (command-word
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
510 ;; Find the word break. This match will always succeed.
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
511 (and (string-match "\\(\\`\\| \\)\\([^ ]*\\)\\'" command)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
512 (substring command (match-beginning 2))))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
513 (complete-list
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
514 (gud-gdb-run-command-fetch-lines (concat "complete " command)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
515 (current-buffer)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
516 ;; From string-match above.
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
517 (match-beginning 2))))
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
518 ;; Protect against old versions of GDB.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
519 (and complete-list
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
520 (string-match "^Undefined command: \"complete\"" (car complete-list))
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 37878
diff changeset
521 (error "This version of GDB doesn't support the `complete' command"))
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
522 ;; Sort the list like readline.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
523 (setq complete-list (sort complete-list (function string-lessp)))
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
524 ;; Remove duplicates.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
525 (let ((first complete-list)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
526 (second (cdr complete-list)))
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
527 (while second
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
528 (if (string-equal (car first) (car second))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
529 (setcdr first (setq second (cdr second)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
530 (setq first second
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
531 second (cdr second)))))
9816
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
532 ;; Add a trailing single quote if there is a unique completion
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
533 ;; and it contains an odd number of unquoted single quotes.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
534 (and (= (length complete-list) 1)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
535 (let ((str (car complete-list))
9816
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
536 (pos 0)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
537 (count 0))
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
538 (while (string-match "\\([^'\\]\\|\\\\'\\)*'" str pos)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
539 (setq count (1+ count)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
540 pos (match-end 0)))
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
541 (and (= (mod count 2) 1)
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
542 (setq complete-list (list (concat str "'"))))))
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
543 ;; Let comint handle the rest.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
544 (comint-dynamic-simple-complete command-word complete-list)))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
545
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
546 ;; The completion process filter is installed temporarily to slurp the
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
547 ;; output of GDB up to the next prompt and build the completion list.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
548 (defun gud-gdb-fetch-lines-filter (string filter)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
549 "Filter used to read the list of lines output by a command.
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
550 STRING is the output to filter.
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
551 It is passed through FILTER before we look at it."
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
552 (setq string (funcall filter string))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
553 (setq string (concat gud-gdb-fetch-lines-string string))
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
554 (while (string-match "\n" string)
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
555 (push (substring string gud-gdb-fetch-lines-break (match-beginning 0))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
556 gud-gdb-fetched-lines)
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
557 (setq string (substring string (match-end 0))))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
558 (if (string-match comint-prompt-regexp string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
559 (progn
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
560 (setq gud-gdb-fetch-lines-in-progress nil)
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
561 string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
562 (progn
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
563 (setq gud-gdb-fetch-lines-string string)
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
564 "")))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
565
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
566 ;; gdb speedbar functions
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
567
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
568 (defun gud-gdb-goto-stackframe (text token indent)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
569 "Goto the stackframe described by TEXT, TOKEN, and INDENT."
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
570 (speedbar-with-attached-buffer
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
571 (gud-basic-call (concat "frame " (nth 1 token)))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
572 (sit-for 1)))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
573
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
574 (defvar gud-gdb-fetched-stack-frame nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
575 "Stack frames we are fetching from GDB.")
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
576
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
577 ;(defun gud-gdb-get-scope-data (text token indent)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
578 ; ;; checkdoc-params: (indent)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
579 ; "Fetch data associated with a stack frame, and expand/contract it.
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
580 ;Data to do this is retrieved from TEXT and TOKEN."
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
581 ; (let ((args nil) (scope nil))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
582 ; (gud-gdb-run-command-fetch-lines "info args")
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
583 ;
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
584 ; (gud-gdb-run-command-fetch-lines "info local")
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
585 ;
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
586 ; ))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
587
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
588 (defun gud-gdb-get-stackframe (buffer)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
589 "Extract the current stack frame out of the GUD GDB BUFFER."
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
590 (let ((newlst nil)
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
591 (fetched-stack-frame-list
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
592 (gud-gdb-run-command-fetch-lines "backtrace" buffer)))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
593 (if (and (car fetched-stack-frame-list)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
594 (string-match "No stack" (car fetched-stack-frame-list)))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
595 ;; Go into some other mode???
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
596 nil
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
597 (dolist (e fetched-stack-frame-list)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
598 (let ((name nil) (num nil))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
599 (if (not (or
22734
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
600 (string-match "^#\\([0-9]+\\) +[0-9a-fx]+ in \\([:0-9a-zA-Z_]+\\) (" e)
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
601 (string-match "^#\\([0-9]+\\) +\\([:0-9a-zA-Z_]+\\) (" e)))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
602 (if (not (string-match
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
603 "at \\([-0-9a-zA-Z_.]+\\):\\([0-9]+\\)$" e))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
604 nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
605 (setcar newlst
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
606 (list (nth 0 (car newlst))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
607 (nth 1 (car newlst))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
608 (match-string 1 e)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
609 (match-string 2 e))))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
610 (setq num (match-string 1 e)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
611 name (match-string 2 e))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
612 (setq newlst
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
613 (cons
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
614 (if (string-match
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
615 "at \\([-0-9a-zA-Z_.]+\\):\\([0-9]+\\)$" e)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
616 (list name num (match-string 1 e)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
617 (match-string 2 e))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
618 (list name num))
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
619 newlst)))))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
620 (nreverse newlst))))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
621
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
622 ;(defun gud-gdb-selected-frame-info (buffer)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
623 ; "Learn GDB information for the currently selected stack frame in BUFFER."
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
624 ; )
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
625
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
626 (defun gud-gdb-run-command-fetch-lines (command buffer &optional skip)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
627 "Run COMMAND, and return the list of lines it outputs.
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
628 BUFFER is the GUD buffer in which to run the command.
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
629 SKIP is the number of chars to skip on each lines, it defaults to 0."
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
630 (save-excursion
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
631 (set-buffer buffer)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
632 (if (save-excursion
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
633 (goto-char (point-max))
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
634 (forward-line 0)
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
635 (not (looking-at comint-prompt-regexp)))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
636 nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
637 ;; Much of this copied from GDB complete, but I'm grabbing the stack
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
638 ;; frame instead.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
639 (let ((gud-gdb-fetch-lines-in-progress t)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
640 (gud-gdb-fetched-lines nil)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
641 (gud-gdb-fetch-lines-string nil)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
642 (gud-gdb-fetch-lines-break (or skip 0))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
643 (gud-marker-filter
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
644 `(lambda (string) (gud-gdb-fetch-lines-filter string ',gud-marker-filter))))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
645 ;; Issue the command to GDB.
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
646 (gud-basic-call command)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
647 ;; Slurp the output.
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
648 (while gud-gdb-fetch-lines-in-progress
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
649 (accept-process-output (get-buffer-process buffer)))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
650 (nreverse gud-gdb-fetched-lines)))))
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
651
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
652
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
653 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
654 ;; sdb functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
655
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
656 ;; History of argument lists passed to sdb.
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
657 (defvar gud-sdb-history nil)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
658
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
659 (defvar gud-sdb-needs-tags (not (file-exists-p "/var"))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
660 "If nil, we're on a System V Release 4 and don't need the tags hack.")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
661
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
662 (defvar gud-sdb-lastfile nil)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
663
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
664 (defun gud-sdb-marker-filter (string)
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
665 (setq gud-marker-acc
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
666 (if gud-marker-acc (concat gud-marker-acc string) string))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
667 (let (start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
668 ;; Process all complete markers in this chunk
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
669 (while
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
670 (cond
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
671 ;; System V Release 3.2 uses this format
13797
d00c8f107a39 (gud-sdb-marker-filter): Modify the regexp for sysVR3 to
Karl Heuer <kwzh@gnu.org>
parents: 13681
diff changeset
672 ((string-match "\\(^\\|\n\\)\\*?\\(0x\\w* in \\)?\\([^:\n]*\\):\\([0-9]*\\):.*\n"
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
673 gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
674 (setq gud-last-frame
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
675 (cons (match-string 3 gud-marker-acc)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
676 (string-to-int (match-string 4 gud-marker-acc)))))
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
677 ;; System V Release 4.0 quite often clumps two lines together
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
678 ((string-match "^\\(BREAKPOINT\\|STEPPED\\) process [0-9]+ function [^ ]+ in \\(.+\\)\n\\([0-9]+\\):"
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
679 gud-marker-acc start)
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
680 (setq gud-sdb-lastfile (match-string 2 gud-marker-acc))
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
681 (setq gud-last-frame
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
682 (cons gud-sdb-lastfile
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
683 (string-to-int (match-string 3 gud-marker-acc)))))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
684 ;; System V Release 4.0
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
685 ((string-match "^\\(BREAKPOINT\\|STEPPED\\) process [0-9]+ function [^ ]+ in \\(.+\\)\n"
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
686 gud-marker-acc start)
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
687 (setq gud-sdb-lastfile (match-string 2 gud-marker-acc)))
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
688 ((and gud-sdb-lastfile (string-match "^\\([0-9]+\\):"
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
689 gud-marker-acc start))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
690 (setq gud-last-frame
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
691 (cons gud-sdb-lastfile
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
692 (string-to-int (match-string 1 gud-marker-acc)))))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
693 (t
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
694 (setq gud-sdb-lastfile nil)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
695 (setq start (match-end 0)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
696
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
697 ;; Search for the last incomplete line in this chunk
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
698 (while (string-match "\n" gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
699 (setq start (match-end 0)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
700
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
701 ;; If we have an incomplete line, store it in gud-marker-acc.
13797
d00c8f107a39 (gud-sdb-marker-filter): Modify the regexp for sysVR3 to
Karl Heuer <kwzh@gnu.org>
parents: 13681
diff changeset
702 (setq gud-marker-acc (substring gud-marker-acc (or start 0))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
703 string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
704
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
705 (defun gud-sdb-find-file (f)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
706 (if gud-sdb-needs-tags (find-tag-noselect f) (find-file-noselect f)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
707
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
708 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
709 (defun sdb (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
710 "Run sdb on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
711 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
712 and source-file directory for your debugger."
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
713 (interactive (list (gud-query-cmdline 'sdb)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
714
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
715 (if (and gud-sdb-needs-tags
7461
1ce5d720b347 (sdb): Handle tags-file-name as nil.
Richard M. Stallman <rms@gnu.org>
parents: 7429
diff changeset
716 (not (and (boundp 'tags-file-name)
1ce5d720b347 (sdb): Handle tags-file-name as nil.
Richard M. Stallman <rms@gnu.org>
parents: 7429
diff changeset
717 (stringp tags-file-name)
1ce5d720b347 (sdb): Handle tags-file-name as nil.
Richard M. Stallman <rms@gnu.org>
parents: 7429
diff changeset
718 (file-exists-p tags-file-name))))
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 37878
diff changeset
719 (error "The sdb support requires a valid tags table to work"))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
720
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
721 (gud-common-init command-line nil 'gud-sdb-marker-filter 'gud-sdb-find-file)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
722 (set (make-local-variable 'gud-minor-mode) 'sdb)
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
723
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
724 (gud-def gud-break "%l b" "\C-b" "Set breakpoint at current line.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
725 (gud-def gud-tbreak "%l c" "\C-t" "Set temporary breakpoint at current line.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
726 (gud-def gud-remove "%l d" "\C-d" "Remove breakpoint at current line")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
727 (gud-def gud-step "s %p" "\C-s" "Step one source line with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
728 (gud-def gud-stepi "i %p" "\C-i" "Step one instruction with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
729 (gud-def gud-next "S %p" "\C-n" "Step one line (skip functions).")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
730 (gud-def gud-cont "c" "\C-r" "Continue with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
731 (gud-def gud-print "%e/" "\C-p" "Evaluate C expression at point.")
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
732
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
733 (setq comint-prompt-regexp "\\(^\\|\n\\)\\*")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
734 (setq paragraph-start comint-prompt-regexp)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
735 (run-hooks 'sdb-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
736 )
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
737
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
738 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
739 ;; dbx functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
740
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
741 ;; History of argument lists passed to dbx.
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
742 (defvar gud-dbx-history nil)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
743
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
744 (defcustom gud-dbx-directories nil
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
745 "*A list of directories that dbx should search for source code.
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
746 If nil, only source files in the program directory
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
747 will be known to dbx.
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
748
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
749 The file names should be absolute, or relative to the directory
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
750 containing the executable being debugged."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
751 :type '(choice (const :tag "Current Directory" nil)
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
752 (repeat :value ("")
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
753 directory))
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
754 :group 'gud)
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
755
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
756 (defun gud-dbx-massage-args (file args)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
757 (nconc (let ((directories gud-dbx-directories)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
758 (result nil))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
759 (while directories
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
760 (setq result (cons (car directories) (cons "-I" result)))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
761 (setq directories (cdr directories)))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
762 (nreverse result))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
763 args))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
764
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
765 (defun gud-dbx-marker-filter (string)
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
766 (setq gud-marker-acc (if gud-marker-acc (concat gud-marker-acc string) string))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
767
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
768 (let (start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
769 ;; Process all complete markers in this chunk.
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
770 (while (or (string-match
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
771 "stopped in .* at line \\([0-9]*\\) in file \"\\([^\"]*\\)\""
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
772 gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
773 (string-match
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
774 "signal .* in .* at line \\([0-9]*\\) in file \"\\([^\"]*\\)\""
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
775 gud-marker-acc start))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
776 (setq gud-last-frame
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
777 (cons (match-string 2 gud-marker-acc)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
778 (string-to-int (match-string 1 gud-marker-acc)))
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
779 start (match-end 0)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
780
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
781 ;; Search for the last incomplete line in this chunk
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
782 (while (string-match "\n" gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
783 (setq start (match-end 0)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
784
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
785 ;; If the incomplete line APPEARS to begin with another marker, keep it
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
786 ;; in the accumulator. Otherwise, clear the accumulator to avoid an
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
787 ;; unnecessary concat during the next call.
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
788 (setq gud-marker-acc
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
789 (if (string-match "\\(stopped\\|signal\\)" gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
790 (substring gud-marker-acc (match-beginning 0))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
791 nil)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
792 string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
793
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
794 ;; Functions for Mips-style dbx. Given the option `-emacs', documented in
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
795 ;; OSF1, not necessarily elsewhere, it produces markers similar to gdb's.
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
796 (defvar gud-mips-p
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
797 (or (string-match "^mips-[^-]*-ultrix" system-configuration)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
798 ;; We haven't tested gud on this system:
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
799 (string-match "^mips-[^-]*-riscos" system-configuration)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
800 ;; It's documented on OSF/1.3
8172
1eb5638ab4b5 (gud-mips-p): Check for OSF system on Alpha also.
Richard M. Stallman <rms@gnu.org>
parents: 7910
diff changeset
801 (string-match "^mips-[^-]*-osf1" system-configuration)
20425
6bbf4a411f07 (gud-mips-p): Fix regexp so it will match alphaev56-* too.
Karl Heuer <kwzh@gnu.org>
parents: 20296
diff changeset
802 (string-match "^alpha[^-]*-[^-]*-osf" system-configuration))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
803 "Non-nil to assume the MIPS/OSF dbx conventions (argument `-emacs').")
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
804
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
805 (defvar gud-dbx-command-name
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
806 (concat "dbx" (if gud-mips-p " -emacs")))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
807
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
808 ;; This is just like the gdb one except for the regexps since we need to cope
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
809 ;; with an optional breakpoint number in [] before the ^Z^Z
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
810 (defun gud-mipsdbx-marker-filter (string)
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
811 (setq gud-marker-acc (concat gud-marker-acc string))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
812 (let ((output ""))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
813
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
814 ;; Process all the complete markers in this chunk.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
815 (while (string-match
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
816 ;; This is like th gdb marker but with an optional
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
817 ;; leading break point number like `[1] '
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
818 "[][ 0-9]*\032\032\\([^:\n]*\\):\\([0-9]*\\):.*\n"
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
819 gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
820 (setq
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
821
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
822 ;; Extract the frame position from the marker.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
823 gud-last-frame
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
824 (cons (match-string 1 gud-marker-acc)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
825 (string-to-int (match-string 2 gud-marker-acc)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
826
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
827 ;; Append any text before the marker to the output we're going
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
828 ;; to return - we don't include the marker in this text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
829 output (concat output
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
830 (substring gud-marker-acc 0 (match-beginning 0)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
831
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
832 ;; Set the accumulator to the remaining text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
833 gud-marker-acc (substring gud-marker-acc (match-end 0))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
834
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
835 ;; Does the remaining text look like it might end with the
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
836 ;; beginning of another marker? If it does, then keep it in
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
837 ;; gud-marker-acc until we receive the rest of it. Since we
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
838 ;; know the full marker regexp above failed, it's pretty simple to
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
839 ;; test for marker starts.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
840 (if (string-match "[][ 0-9]*\032.*\\'" gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
841 (progn
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
842 ;; Everything before the potential marker start can be output.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
843 (setq output (concat output (substring gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
844 0 (match-beginning 0))))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
845
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
846 ;; Everything after, we save, to combine with later input.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
847 (setq gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
848 (substring gud-marker-acc (match-beginning 0))))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
849
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
850 (setq output (concat output gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
851 gud-marker-acc ""))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
852
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
853 output))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
854
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
855 ;; The dbx in IRIX is a pain. It doesn't print the file name when
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
856 ;; stopping at a breakpoint (but you do get it from the `up' and
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
857 ;; `down' commands...). The only way to extract the information seems
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
858 ;; to be with a `file' command, although the current line number is
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
859 ;; available in $curline. Thus we have to look for output which
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
860 ;; appears to indicate a breakpoint. Then we prod the dbx sub-process
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
861 ;; to output the information we want with a combination of the
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
862 ;; `printf' and `file' commands as a pseudo marker which we can
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
863 ;; recognise next time through the marker-filter. This would be like
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
864 ;; the gdb marker but you can't get the file name without a newline...
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
865 ;; Note that gud-remove won't work since Irix dbx expects a breakpoint
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
866 ;; number rather than a line number etc. Maybe this could be made to
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
867 ;; work by listing all the breakpoints and picking the one(s) with the
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
868 ;; correct line number, but life's too short.
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
869 ;; d.love@dl.ac.uk (Dave Love) can be blamed for this
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
870
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
871 (defvar gud-irix-p
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
872 (and (string-match "^mips-[^-]*-irix" system-configuration)
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
873 (not (string-match "irix[6-9]\\.[1-9]" system-configuration)))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
874 "Non-nil to assume the interface appropriate for IRIX dbx.
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
875 This works in IRIX 4, 5 and 6, but `gud-dbx-use-stopformat-p' provides
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
876 a better solution in 6.1 upwards.")
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
877 (defvar gud-dbx-use-stopformat-p
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
878 (string-match "irix[6-9]\\.[1-9]" system-configuration)
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
879 "Non-nil to use the dbx feature present at least from Irix 6.1
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
880 whereby $stopformat=1 produces an output format compatiable with
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
881 `gud-dbx-marker-filter'.")
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
882 ;; [Irix dbx seems to be a moving target. The dbx output changed
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
883 ;; subtly sometime between OS v4.0.5 and v5.2 so that, for instance,
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
884 ;; the output from `up' is no longer spotted by gud (and it's probably
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
885 ;; not distinctive enough to try to match it -- use C-<, C->
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
886 ;; exclusively) . For 5.3 and 6.0, the $curline variable changed to
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
887 ;; `long long'(why?!), so the printf stuff needed changing. The line
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
888 ;; number was cast to `long' as a compromise between the new `long
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
889 ;; long' and the original `int'. This is reported not to work in 6.2,
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
890 ;; so it's changed back to int -- don't make your sources too long.
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
891 ;; From Irix6.1 (but not 6.0?) dbx supports an undocumented feature
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
892 ;; whereby `set $stopformat=1' reportedly produces output compatible
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
893 ;; with `gud-dbx-marker-filter', which we prefer.
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
894
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
895 ;; The process filter is also somewhat
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
896 ;; unreliable, sometimes not spotting the markers; I don't know
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
897 ;; whether there's anything that can be done about that. It would be
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
898 ;; much better if SGI could be persuaded to (re?)instate the MIPS
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
899 ;; -emacs flag for gdb-like output (which ought to be possible as most
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
900 ;; of the communication I've had over it has been from sgi.com).]
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
901
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
902 ;; this filter is influenced by the xdb one rather than the gdb one
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
903 (defun gud-irixdbx-marker-filter (string)
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
904 (let (result (case-fold-search nil))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
905 (if (or (string-match comint-prompt-regexp string)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
906 (string-match ".*\012" string))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
907 (setq result (concat gud-marker-acc string)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
908 gud-marker-acc "")
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
909 (setq gud-marker-acc (concat gud-marker-acc string)))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
910 (if result
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
911 (cond
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
912 ;; look for breakpoint or signal indication e.g.:
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
913 ;; [2] Process 1267 (pplot) stopped at [params:338 ,0x400ec0]
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
914 ;; Process 1281 (pplot) stopped at [params:339 ,0x400ec8]
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
915 ;; Process 1270 (pplot) Floating point exception [._read._read:16 ,0x452188]
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
916 ((string-match
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
917 "^\\(\\[[0-9]+] \\)?Process +[0-9]+ ([^)]*) [^[]+\\[[^]\n]*]\n"
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
918 result)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
919 ;; prod dbx into printing out the line number and file
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
920 ;; name in a form we can grok as below
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
921 (process-send-string (get-buffer-process gud-comint-buffer)
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
922 "printf \"\032\032%1d:\",(int)$curline;file\n"))
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
923 ;; look for result of, say, "up" e.g.:
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
924 ;; .pplot.pplot(0x800) ["src/pplot.f":261, 0x400c7c]
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
925 ;; (this will also catch one of the lines printed by "where")
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
926 ((string-match
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
927 "^[^ ][^[]*\\[\"\\([^\"]+\\)\":\\([0-9]+\\), [^]]+]\n"
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
928 result)
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
929 (let ((file (match-string 1 result)))
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
930 (if (file-exists-p file)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
931 (setq gud-last-frame
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
932 (cons (match-string 1 result)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
933 (string-to-int (match-string 2 result))))))
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
934 result)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
935 ((string-match ; kluged-up marker as above
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
936 "\032\032\\([0-9]*\\):\\(.*\\)\n" result)
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
937 (let ((file (gud-file-name (match-string 2 result))))
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
938 (if (and file (file-exists-p file))
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
939 (setq gud-last-frame
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
940 (cons file
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
941 (string-to-int (match-string 1 result))))))
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
942 (setq result (substring result 0 (match-beginning 0))))))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
943 (or result "")))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
944
18098
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
945 (defvar gud-dgux-p (string-match "-dgux" system-configuration)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
946 "Non-nil means to assume the interface approriate for DG/UX dbx.
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
947 This was tested using R4.11.")
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
948
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
949 ;; There are a couple of differences between DG's dbx output and normal
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
950 ;; dbx output which make it nontrivial to integrate this into the
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
951 ;; standard dbx-marker-filter (mainly, there are a different number of
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
952 ;; backreferences). The markers look like:
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
953 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
954 ;; (0) Stopped at line 10, routine main(argc=1, argv=0xeffff0e0), file t.c
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
955 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
956 ;; from breakpoints (the `(0)' there isn't constant, it's the breakpoint
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
957 ;; number), and
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
958 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
959 ;; Stopped at line 13, routine main(argc=1, argv=0xeffff0e0), file t.c
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
960 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
961 ;; from signals and
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
962 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
963 ;; Frame 21, line 974, routine command_loop(), file keyboard.c
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
964 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
965 ;; from up/down/where.
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
966
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
967 (defun gud-dguxdbx-marker-filter (string)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
968 (setq gud-marker-acc (if gud-marker-acc
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
969 (concat gud-marker-acc string)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
970 string))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
971 (let ((re (concat "^\\(\\(([0-9]+) \\)?Stopped at\\|Frame [0-9]+,\\)"
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
972 " line \\([0-9]+\\), routine .*, file \\([^ \t\n]+\\)"))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
973 start)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
974 ;; Process all complete markers in this chunk.
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
975 (while (string-match re gud-marker-acc start)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
976 (setq gud-last-frame
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
977 (cons (match-string 4 gud-marker-acc)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
978 (string-to-int (match-string 3 gud-marker-acc)))
18098
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
979 start (match-end 0)))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
980
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
981 ;; Search for the last incomplete line in this chunk
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
982 (while (string-match "\n" gud-marker-acc start)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
983 (setq start (match-end 0)))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
984
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
985 ;; If the incomplete line APPEARS to begin with another marker, keep it
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
986 ;; in the accumulator. Otherwise, clear the accumulator to avoid an
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
987 ;; unnecessary concat during the next call.
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
988 (setq gud-marker-acc
18098
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
989 (if (string-match "Stopped\\|Frame" gud-marker-acc start)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
990 (substring gud-marker-acc (match-beginning 0))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
991 nil)))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
992 string)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
993
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
994 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
995 (defun dbx (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
996 "Run dbx on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
997 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
998 and source-file directory for your debugger."
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
999 (interactive (list (gud-query-cmdline 'dbx)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1000
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1001 (cond
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1002 (gud-mips-p
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1003 (gud-common-init command-line nil 'gud-mipsdbx-marker-filter))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1004 (gud-irix-p
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1005 (gud-common-init command-line 'gud-dbx-massage-args
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1006 'gud-irixdbx-marker-filter))
18098
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1007 (gud-dgux-p
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1008 (gud-common-init command-line 'gud-dbx-massage-args
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1009 'gud-dguxdbx-marker-filter))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1010 (t
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1011 (gud-common-init command-line 'gud-dbx-massage-args
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1012 'gud-dbx-marker-filter)))
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
1013
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1014 (set (make-local-variable 'gud-minor-mode) 'dbx)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1015
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1016 (cond
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
1017 (gud-mips-p
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1018 (gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.")
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1019 (gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1020 (gud-def gud-break "stop at \"%f\":%l"
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1021 "\C-b" "Set breakpoint at current line.")
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1022 (gud-def gud-finish "return" "\C-f" "Finish executing current function."))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
1023 (gud-irix-p
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1024 (gud-def gud-break "stop at \"%d%f\":%l"
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
1025 "\C-b" "Set breakpoint at current line.")
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
1026 (gud-def gud-finish "return" "\C-f" "Finish executing current function.")
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1027 (gud-def gud-up "up %p; printf \"\032\032%1d:\",(int)$curline;file\n"
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
1028 "<" "Up (numeric arg) stack frames.")
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
1029 (gud-def gud-down "down %p; printf \"\032\032%1d:\",(int)$curline;file\n"
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
1030 ">" "Down (numeric arg) stack frames.")
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
1031 ;; Make dbx give out the source location info that we need.
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
1032 (process-send-string (get-buffer-process gud-comint-buffer)
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
1033 "printf \"\032\032%1d:\",(int)$curline;file\n"))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1034 (t
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1035 (gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.")
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1036 (gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.")
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1037 (gud-def gud-break "file \"%d%f\"\nstop at %l"
39252
8bf84df37c90 (dbx) <gud-dbx-use-stopformat-p>: Move this case into the
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
1038 "\C-b" "Set breakpoint at current line.")
8bf84df37c90 (dbx) <gud-dbx-use-stopformat-p>: Move this case into the
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
1039 (if gud-dbx-use-stopformat-p
8bf84df37c90 (dbx) <gud-dbx-use-stopformat-p>: Move this case into the
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
1040 (process-send-string (get-buffer-process gud-comint-buffer)
8bf84df37c90 (dbx) <gud-dbx-use-stopformat-p>: Move this case into the
Eli Zaretskii <eliz@gnu.org>
parents: 38412
diff changeset
1041 "set $stopformat=1\n"))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1042
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
1043 (gud-def gud-remove "clear %l" "\C-d" "Remove breakpoint at current line")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1044 (gud-def gud-step "step %p" "\C-s" "Step one line with display.")
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
1045 (gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1046 (gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1047 (gud-def gud-cont "cont" "\C-r" "Continue with display.")
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
1048 (gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.")
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1049
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1050 (setq comint-prompt-regexp "^[^)\n]*dbx) *")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
1051 (setq paragraph-start comint-prompt-regexp)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1052 (run-hooks 'dbx-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1053 )
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1054
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1055 ;; ======================================================================
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1056 ;; xdb (HP PARISC debugger) functions
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1057
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1058 ;; History of argument lists passed to xdb.
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
1059 (defvar gud-xdb-history nil)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
1060
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1061 (defcustom gud-xdb-directories nil
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1062 "*A list of directories that xdb should search for source code.
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1063 If nil, only source files in the program directory
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1064 will be known to xdb.
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1065
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1066 The file names should be absolute, or relative to the directory
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1067 containing the executable being debugged."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1068 :type '(choice (const :tag "Current Directory" nil)
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1069 (repeat :value ("")
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1070 directory))
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1071 :group 'gud)
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1072
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1073 (defun gud-xdb-massage-args (file args)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1074 (nconc (let ((directories gud-xdb-directories)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1075 (result nil))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1076 (while directories
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1077 (setq result (cons (car directories) (cons "-d" result)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1078 (setq directories (cdr directories)))
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
1079 (nreverse result))
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1080 args))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1081
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1082 ;; xdb does not print the lines all at once, so we have to accumulate them
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1083 (defun gud-xdb-marker-filter (string)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1084 (let (result)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1085 (if (or (string-match comint-prompt-regexp string)
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1086 (string-match ".*\012" string))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1087 (setq result (concat gud-marker-acc string)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1088 gud-marker-acc "")
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
1089 (setq gud-marker-acc (concat gud-marker-acc string)))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1090 (if result
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1091 (if (or (string-match "\\([^\n \t:]+\\): [^:]+: \\([0-9]+\\)[: ]"
12743
d9dc148cd8ac (gud-xdb-marker-filter): Change pattern to accept spc at end.
Richard M. Stallman <rms@gnu.org>
parents: 12340
diff changeset
1092 result)
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1093 (string-match "[^: \t]+:[ \t]+\\([^:]+\\): [^:]+: \\([0-9]+\\):"
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1094 result))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1095 (let ((line (string-to-int (match-string 2 result)))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1096 (file (gud-file-name (match-string 1 result))))
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1097 (if file
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1098 (setq gud-last-frame (cons file line))))))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1099 (or result "")))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1100
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1101 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1102 (defun xdb (command-line)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1103 "Run xdb on program FILE in buffer *gud-FILE*.
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1104 The directory containing FILE becomes the initial working directory
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1105 and source-file directory for your debugger.
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1106
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1107 You can set the variable 'gud-xdb-directories' to a list of program source
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1108 directories if your program contains sources from more than one directory."
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1109 (interactive (list (gud-query-cmdline 'xdb)))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1110
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1111 (gud-common-init command-line 'gud-xdb-massage-args
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1112 'gud-xdb-marker-filter)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1113 (set (make-local-variable 'gud-minor-mode) 'xdb)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1114
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1115 (gud-def gud-break "b %f:%l" "\C-b" "Set breakpoint at current line.")
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1116 (gud-def gud-tbreak "b %f:%l\\t" "\C-t"
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1117 "Set temporary breakpoint at current line.")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1118 (gud-def gud-remove "db" "\C-d" "Remove breakpoint at current line")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1119 (gud-def gud-step "s %p" "\C-s" "Step one line with display.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1120 (gud-def gud-next "S %p" "\C-n" "Step one line (skip functions).")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1121 (gud-def gud-cont "c" "\C-r" "Continue with display.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1122 (gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1123 (gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1124 (gud-def gud-finish "bu\\t" "\C-f" "Finish executing current function.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1125 (gud-def gud-print "p %e" "\C-p" "Evaluate C expression at point.")
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1126
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1127 (setq comint-prompt-regexp "^>")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
1128 (setq paragraph-start comint-prompt-regexp)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1129 (run-hooks 'xdb-mode-hook))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1130
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1131 ;; ======================================================================
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1132 ;; perldb functions
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1133
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1134 ;; History of argument lists passed to perldb.
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1135 (defvar gud-perldb-history nil)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1136
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1137 (defun gud-perldb-massage-args (file args)
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1138 "Convert a command line as would be typed normally to run perldb
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1139 into one that invokes an Emacs-enabled debugging session.
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1140 \"-emacs\" is inserted where it will be $ARGV[0] (see perl5db.pl)."
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1141 ;; FIXME: what if the command is `make perldb' and doesn't accept those extra
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1142 ;; arguments ?
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1143 (let* ((new-args nil)
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1144 (seen-e nil)
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1145 (shift (lambda () (push (pop args) new-args))))
26294
b1d85e2a1cae (gud-perldb-massage-args): Massage correctly in the
Gerd Moellmann <gerd@gnu.org>
parents: 25601
diff changeset
1146
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1147 ;; Pass all switches and -e scripts through.
26294
b1d85e2a1cae (gud-perldb-massage-args): Massage correctly in the
Gerd Moellmann <gerd@gnu.org>
parents: 25601
diff changeset
1148 (while (and args
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1149 (string-match "^-" (car args))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1150 (not (equal "-" (car args)))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1151 (not (equal "--" (car args))))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1152 (when (equal "-e" (car args))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1153 ;; -e goes with the next arg, so shift one extra.
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1154 (or (funcall shift)
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1155 ;; -e as the last arg is an error in Perl.
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 37878
diff changeset
1156 (error "No code specified for -e"))
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1157 (setq seen-e t))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1158 (funcall shift))
26294
b1d85e2a1cae (gud-perldb-massage-args): Massage correctly in the
Gerd Moellmann <gerd@gnu.org>
parents: 25601
diff changeset
1159
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
1160 (unless seen-e
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1161 (if (or (not args)
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1162 (string-match "^-" (car args)))
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 37878
diff changeset
1163 (error "Can't use stdin as the script to debug"))
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1164 ;; This is the program name.
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1165 (funcall shift))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1166
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1167 ;; If -e specified, make sure there is a -- so -emacs is not taken
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1168 ;; as -e macs.
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1169 (if (and args (equal "--" (car args)))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1170 (funcall shift)
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
1171 (and seen-e (push "--" new-args)))
26294
b1d85e2a1cae (gud-perldb-massage-args): Massage correctly in the
Gerd Moellmann <gerd@gnu.org>
parents: 25601
diff changeset
1172
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
1173 (push "-emacs" new-args)
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1174 (while args
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1175 (funcall shift))
26294
b1d85e2a1cae (gud-perldb-massage-args): Massage correctly in the
Gerd Moellmann <gerd@gnu.org>
parents: 25601
diff changeset
1176
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1177 (nreverse new-args)))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1178
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1179 ;; There's no guarantee that Emacs will hand the filter the entire
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1180 ;; marker at once; it could be broken up across several strings. We
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1181 ;; might even receive a big chunk with several markers in it. If we
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1182 ;; receive a chunk of text which looks like it might contain the
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1183 ;; beginning of a marker, we save it here between calls to the
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1184 ;; filter.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1185 (defun gud-perldb-marker-filter (string)
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1186 (setq gud-marker-acc (concat gud-marker-acc string))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1187 (let ((output ""))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1188
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1189 ;; Process all the complete markers in this chunk.
16327
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
1190 (while (string-match "\032\032\\(\\([a-zA-Z]:\\)?[^:\n]*\\):\\([0-9]*\\):.*\n"
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1191 gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1192 (setq
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1193
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1194 ;; Extract the frame position from the marker.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1195 gud-last-frame
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
1196 (cons (match-string 1 gud-marker-acc)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
1197 (string-to-int (match-string 3 gud-marker-acc)))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1198
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1199 ;; Append any text before the marker to the output we're going
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1200 ;; to return - we don't include the marker in this text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1201 output (concat output
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1202 (substring gud-marker-acc 0 (match-beginning 0)))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1203
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1204 ;; Set the accumulator to the remaining text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1205 gud-marker-acc (substring gud-marker-acc (match-end 0))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1206
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1207 ;; Does the remaining text look like it might end with the
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1208 ;; beginning of another marker? If it does, then keep it in
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1209 ;; gud-marker-acc until we receive the rest of it. Since we
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1210 ;; know the full marker regexp above failed, it's pretty simple to
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1211 ;; test for marker starts.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1212 (if (string-match "\032.*\\'" gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1213 (progn
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1214 ;; Everything before the potential marker start can be output.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1215 (setq output (concat output (substring gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1216 0 (match-beginning 0))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1217
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1218 ;; Everything after, we save, to combine with later input.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1219 (setq gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1220 (substring gud-marker-acc (match-beginning 0))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1221
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1222 (setq output (concat output gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1223 gud-marker-acc ""))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1224
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1225 output))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1226
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1227 (defcustom gud-perldb-command-name "perl -d"
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1228 "Default command to execute a Perl script under debugger."
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1229 :type 'string
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1230 :group 'gud)
15755
95be49f33453 (perldb-command-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15624
diff changeset
1231
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1232 ;;;###autoload
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1233 (defun perldb (command-line)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1234 "Run perldb on program FILE in buffer *gud-FILE*.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1235 The directory containing FILE becomes the initial working directory
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1236 and source-file directory for your debugger."
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1237 (interactive
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1238 (list (gud-query-cmdline 'perldb
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1239 (concat (or (buffer-file-name) "-e 0") " "))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1240
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1241 (gud-common-init command-line 'gud-perldb-massage-args
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1242 'gud-perldb-marker-filter)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1243 (set (make-local-variable 'gud-minor-mode) 'perldb)
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1244
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1245 (gud-def gud-break "b %l" "\C-b" "Set breakpoint at current line.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1246 (gud-def gud-remove "d %l" "\C-d" "Remove breakpoint at current line")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1247 (gud-def gud-step "s" "\C-s" "Step one source line with display.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1248 (gud-def gud-next "n" "\C-n" "Step one line (skip functions).")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1249 (gud-def gud-cont "c" "\C-r" "Continue with display.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1250 ; (gud-def gud-finish "finish" "\C-f" "Finish executing current function.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1251 ; (gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).")
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1252 ; (gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1253 (gud-def gud-print "%e" "\C-p" "Evaluate perl expression at point.")
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1254
48795
480e8dc8fc37 (bashdb): Prompt now included parenthesis for subshell
Richard M. Stallman <rms@gnu.org>
parents: 48679
diff changeset
1255 (setq comint-prompt-regexp "^ DB<+[0-9]+>+ ")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
1256 (setq paragraph-start comint-prompt-regexp)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1257 (run-hooks 'perldb-mode-hook))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1258
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1259 ;; ======================================================================
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1260 ;; pdb (Python debugger) functions
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1261
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1262 ;; History of argument lists passed to pdb.
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1263 (defvar gud-pdb-history nil)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1264
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1265 ;; Last group is for return value, e.g. "> test.py(2)foo()->None"
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1266 ;; Either file or function name may be omitted: "> <string>(0)?()"
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1267 (defvar gud-pdb-marker-regexp
47530
cfea5643ff62 (gud-pdb-marker-regexp): Allow : and \ in file name.
Richard M. Stallman <rms@gnu.org>
parents: 47443
diff changeset
1268 "^> \\([-a-zA-Z0-9_/.:\\]*\\|<string>\\)(\\([0-9]+\\))\\([a-zA-Z0-9_]*\\|\\?\\)()\\(->[^\n]*\\)?\n")
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1269 (defvar gud-pdb-marker-regexp-file-group 1)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1270 (defvar gud-pdb-marker-regexp-line-group 2)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1271 (defvar gud-pdb-marker-regexp-fnname-group 3)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1272
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1273 (defvar gud-pdb-marker-regexp-start "^> ")
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1274
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1275 ;; There's no guarantee that Emacs will hand the filter the entire
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1276 ;; marker at once; it could be broken up across several strings. We
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1277 ;; might even receive a big chunk with several markers in it. If we
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1278 ;; receive a chunk of text which looks like it might contain the
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1279 ;; beginning of a marker, we save it here between calls to the
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1280 ;; filter.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1281 (defun gud-pdb-marker-filter (string)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1282 (setq gud-marker-acc (concat gud-marker-acc string))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1283 (let ((output ""))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1284
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1285 ;; Process all the complete markers in this chunk.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1286 (while (string-match gud-pdb-marker-regexp gud-marker-acc)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1287 (setq
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1288
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1289 ;; Extract the frame position from the marker.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1290 gud-last-frame
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1291 (let ((file (match-string gud-pdb-marker-regexp-file-group
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1292 gud-marker-acc))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1293 (line (string-to-int
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1294 (match-string gud-pdb-marker-regexp-line-group
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1295 gud-marker-acc))))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1296 (if (string-equal file "<string>")
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1297 gud-last-frame
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1298 (cons file line)))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1299
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1300 ;; Output everything instead of the below
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1301 output (concat output (substring gud-marker-acc 0 (match-end 0)))
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1302 ;; ;; Append any text before the marker to the output we're going
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1303 ;; ;; to return - we don't include the marker in this text.
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1304 ;; output (concat output
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1305 ;; (substring gud-marker-acc 0 (match-beginning 0)))
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1306
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1307 ;; Set the accumulator to the remaining text.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1308 gud-marker-acc (substring gud-marker-acc (match-end 0))))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1309
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1310 ;; Does the remaining text look like it might end with the
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1311 ;; beginning of another marker? If it does, then keep it in
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1312 ;; gud-marker-acc until we receive the rest of it. Since we
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1313 ;; know the full marker regexp above failed, it's pretty simple to
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1314 ;; test for marker starts.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1315 (if (string-match gud-pdb-marker-regexp-start gud-marker-acc)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1316 (progn
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1317 ;; Everything before the potential marker start can be output.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1318 (setq output (concat output (substring gud-marker-acc
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1319 0 (match-beginning 0))))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1320
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1321 ;; Everything after, we save, to combine with later input.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1322 (setq gud-marker-acc
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1323 (substring gud-marker-acc (match-beginning 0))))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1324
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1325 (setq output (concat output gud-marker-acc)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1326 gud-marker-acc ""))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1327
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1328 output))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1329
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1330 (defcustom gud-pdb-command-name "pdb"
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1331 "File name for executing the Python debugger.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1332 This should be an executable on your path, or an absolute file name."
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1333 :type 'string
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1334 :group 'gud)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1335
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1336 ;;;###autoload
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1337 (defun pdb (command-line)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1338 "Run pdb on program FILE in buffer `*gud-FILE*'.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1339 The directory containing FILE becomes the initial working directory
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1340 and source-file directory for your debugger."
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1341 (interactive
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1342 (list (gud-query-cmdline 'pdb)))
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1343
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1344 (gud-common-init command-line nil 'gud-pdb-marker-filter)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1345 (set (make-local-variable 'gud-minor-mode) 'pdb)
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1346
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1347 (gud-def gud-break "break %l" "\C-b" "Set breakpoint at current line.")
47530
cfea5643ff62 (gud-pdb-marker-regexp): Allow : and \ in file name.
Richard M. Stallman <rms@gnu.org>
parents: 47443
diff changeset
1348 (gud-def gud-remove "clear %f:%l" "\C-d" "Remove breakpoint at current line")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1349 (gud-def gud-step "step" "\C-s" "Step one source line with display.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1350 (gud-def gud-next "next" "\C-n" "Step one line (skip functions).")
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1351 (gud-def gud-cont "continue" "\C-r" "Continue with display.")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1352 (gud-def gud-finish "return" "\C-f" "Finish executing current function.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1353 (gud-def gud-up "up" "<" "Up one stack frame.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1354 (gud-def gud-down "down" ">" "Down one stack frame.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1355 (gud-def gud-print "p %e" "\C-p" "Evaluate Python expression at point.")
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1356 ;; Is this right?
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1357 (gud-def gud-statement "! %e" "\C-e" "Execute Python statement at point.")
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1358
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1359 ;; (setq comint-prompt-regexp "^(.*pdb[+]?) *")
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1360 (setq comint-prompt-regexp "^(Pdb) *")
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1361 (setq paragraph-start comint-prompt-regexp)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1362 (run-hooks 'pdb-mode-hook))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1363
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1364 ;; ======================================================================
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1365 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1366 ;; JDB support.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1367 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1368 ;; AUTHOR: Derek Davies <ddavies@world.std.com>
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1369 ;; Zoltan Kemenczy <zoltan@ieee.org;zkemenczy@rim.net>
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1370 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1371 ;; CREATED: Sun Feb 22 10:46:38 1998 Derek Davies.
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1372 ;; UPDATED: Nov 11, 2001 Zoltan Kemenczy
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1373 ;; Dec 10, 2002 Zoltan Kemenczy - added nested class support
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1374 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1375 ;; INVOCATION NOTES:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1376 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1377 ;; You invoke jdb-mode with:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1378 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1379 ;; M-x jdb <enter>
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1380 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1381 ;; It responds with:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1382 ;;
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1383 ;; Run jdb (like this): jdb
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1384 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1385 ;; type any jdb switches followed by the name of the class you'd like to debug.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1386 ;; Supply a fully qualfied classname (these do not have the ".class" extension)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1387 ;; for the name of the class to debug (e.g. "COM.the-kind.ddavies.CoolClass").
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1388 ;; See the known problems section below for restrictions when specifying jdb
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1389 ;; command line switches (search forward for '-classpath').
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1390 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1391 ;; You should see something like the following:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1392 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1393 ;; Current directory is ~/src/java/hello/
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1394 ;; Initializing jdb...
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1395 ;; 0xed2f6628:class(hello)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1396 ;; >
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1397 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1398 ;; To set an initial breakpoint try:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1399 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1400 ;; > stop in hello.main
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1401 ;; Breakpoint set in hello.main
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1402 ;; >
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1403 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1404 ;; To execute the program type:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1405 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1406 ;; > run
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1407 ;; run hello
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1408 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1409 ;; Breakpoint hit: running ...
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1410 ;; hello.main (hello:12)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1411 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1412 ;; Type M-n to step over the current line and M-s to step into it. That,
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1413 ;; along with the JDB 'help' command should get you started. The 'quit'
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1414 ;; JDB command will get out out of the debugger. There is some truly
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1415 ;; pathetic JDB documentation available at:
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1416 ;;
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1417 ;; http://java.sun.com/products/jdk/1.1/debugging/
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1418 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1419 ;; KNOWN PROBLEMS AND FIXME's:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1420 ;;
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1421 ;; Not sure what happens with inner classes ... haven't tried them.
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1422 ;;
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1423 ;; Does not grok UNICODE id's. Only ASCII id's are supported.
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1424 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1425 ;; You must not put whitespace between "-classpath" and the path to
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1426 ;; search for java classes even though it is required when invoking jdb
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1427 ;; from the command line. See gud-jdb-massage-args for details.
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1428 ;; The same applies for "-sourcepath".
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1429 ;;
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1430 ;; Note: The following applies only if `gud-jdb-use-classpath' is nil;
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1431 ;; refer to the documentation of `gud-jdb-use-classpath' and
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1432 ;; `gud-jdb-classpath',`gud-jdb-sourcepath' variables for information
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1433 ;; on using the classpath for locating java source files.
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1434 ;;
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1435 ;; If any of the source files in the directories listed in
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1436 ;; gud-jdb-directories won't parse you'll have problems. Make sure
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1437 ;; every file ending in ".java" in these directories parses without error.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1438 ;;
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1439 ;; All the .java files in the directories in gud-jdb-directories are
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1440 ;; syntactically analyzed each time gud jdb is invoked. It would be
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1441 ;; nice to keep as much information as possible between runs. It would
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1442 ;; be really nice to analyze the files only as neccessary (when the
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1443 ;; source needs to be displayed.) I'm not sure to what extent the former
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1444 ;; can be accomplished and I'm not sure the latter can be done at all
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1445 ;; since I don't know of any general way to tell which .class files are
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1446 ;; defined by which .java file without analyzing all the .java files.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1447 ;; If anyone knows why JavaSoft didn't put the source file names in
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1448 ;; debuggable .class files please clue me in so I find something else
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1449 ;; to be spiteful and bitter about.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1450 ;;
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1451 ;; ======================================================================
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1452 ;; gud jdb variables and functions
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1453
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1454 (defcustom gud-jdb-command-name "jdb"
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1455 "Command that executes the Java debugger."
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1456 :type 'string
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1457 :group 'gud)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1458
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1459 (defcustom gud-jdb-use-classpath t
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1460 "If non-nil, search for Java source files in classpath directories.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1461 The list of directories to search is the value of `gud-jdb-classpath'.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1462 The file pathname is obtained by converting the fully qualified
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1463 class information output by jdb to a relative pathname and appending
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1464 it to `gud-jdb-classpath' element by element until a match is found.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1465
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1466 This method has a significant jdb startup time reduction advantage
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1467 since it does not require the scanning of all `gud-jdb-directories'
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1468 and parsing all Java files for class information.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1469
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1470 Set to nil to use `gud-jdb-directories' to scan java sources for
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1471 class information on jdb startup (original method)."
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1472 :type 'boolean
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1473 :group 'gud)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1474
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1475 (defvar gud-jdb-classpath nil
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1476 "Java/jdb classpath directories list.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1477 If `gud-jdb-use-classpath' is non-nil, gud-jdb derives the `gud-jdb-classpath'
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1478 list automatically using the following methods in sequence
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1479 \(with subsequent successful steps overriding the results of previous
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1480 steps):
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1481
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1482 1) Read the CLASSPATH environment variable,
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1483 2) Read any \"-classpath\" argument used to run jdb,
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1484 or detected in jdb output (e.g. if jdb is run by a script
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1485 that echoes the actual jdb command before starting jdb)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1486 3) Send a \"classpath\" command to jdb and scan jdb output for
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1487 classpath information if jdb is invoked with an \"-attach\" (to
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1488 an already running VM) argument (This case typically does not
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1489 have a \"-classpath\" command line argument - that is provided
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1490 to the VM when it is started).
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1491
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1492 Note that method 3 cannot be used with oldjdb (or Java 1 jdb) since
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1493 those debuggers do not support the classpath command. Use 1) or 2).")
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1494
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1495 (defvar gud-jdb-sourcepath nil
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1496 "Directory list provided by an (optional) \"-sourcepath\" option to jdb.
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1497 This list is prepended to `gud-jdb-classpath' to form the complete
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1498 list of directories searched for source files.")
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1499
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1500 (defvar gud-marker-acc-max-length 4000
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1501 "Maximum number of debugger output characters to keep.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1502 This variable limits the size of `gud-marker-acc' which holds
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1503 the most recent debugger output history while searching for
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1504 source file information.")
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1505
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1506 (defvar gud-jdb-history nil
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1507 "History of argument lists passed to jdb.")
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1508
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1509
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1510 ;; List of Java source file directories.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1511 (defvar gud-jdb-directories (list ".")
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1512 "*A list of directories that gud jdb should search for source code.
28992
c547172f003f (gud-jdb-directories): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28731
diff changeset
1513 The file names should be absolute, or relative to the current
c547172f003f (gud-jdb-directories): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28731
diff changeset
1514 directory.
c547172f003f (gud-jdb-directories): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28731
diff changeset
1515
c547172f003f (gud-jdb-directories): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28731
diff changeset
1516 The set of .java files residing in the directories listed are
c547172f003f (gud-jdb-directories): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28731
diff changeset
1517 syntactically analyzed to determine the classes they define and the
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1518 packages in which these classes belong. In this way gud jdb maps the
28992
c547172f003f (gud-jdb-directories): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28731
diff changeset
1519 package-qualified class names output by the jdb debugger to the source
c547172f003f (gud-jdb-directories): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28731
diff changeset
1520 file from which the class originated. This allows gud mode to keep
c547172f003f (gud-jdb-directories): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28731
diff changeset
1521 the source code display in sync with the debugging session.")
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1522
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1523 (defvar gud-jdb-source-files nil
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1524 "List of the java source files for this debugging session.")
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1525
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1526 ;; Association list of fully qualified class names (package + class name)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1527 ;; and their source files.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1528 (defvar gud-jdb-class-source-alist nil
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1529 "Association list of fully qualified class names and source files.")
22215
9a2d76cd1da4 (gud-jdb-class-source-alist): defvar moved up.
Richard M. Stallman <rms@gnu.org>
parents: 22173
diff changeset
1530
9a2d76cd1da4 (gud-jdb-class-source-alist): defvar moved up.
Richard M. Stallman <rms@gnu.org>
parents: 22173
diff changeset
1531 ;; This is used to hold a source file during analysis.
9a2d76cd1da4 (gud-jdb-class-source-alist): defvar moved up.
Richard M. Stallman <rms@gnu.org>
parents: 22173
diff changeset
1532 (defvar gud-jdb-analysis-buffer nil)
9a2d76cd1da4 (gud-jdb-class-source-alist): defvar moved up.
Richard M. Stallman <rms@gnu.org>
parents: 22173
diff changeset
1533
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1534 (defvar gud-jdb-classpath-string nil
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1535 "Holds temporary classpath values.")
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1536
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1537 (defun gud-jdb-build-source-files-list (path extn)
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1538 "Return a list of java source files (absolute paths).
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1539 PATH gives the directories in which to search for files with
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1540 extension EXTN. Normally EXTN is given as the regular expression
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1541 \"\\.java$\" ."
28590
784c31479eb2 (gud-jdb-build-source-files-list): Check that directory
Gerd Moellmann <gerd@gnu.org>
parents: 27833
diff changeset
1542 (apply 'nconc (mapcar (lambda (d)
28614
d63fb3b5adad (gud-jdb-build-source-files-list): Fix typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28599
diff changeset
1543 (when (file-directory-p d)
37696
d85fcac9a91d (gud-jdb-build-source-files-list): Fix paren typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35599
diff changeset
1544 (directory-files d t extn nil)))
d85fcac9a91d (gud-jdb-build-source-files-list): Fix paren typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35599
diff changeset
1545 path)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1546
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1547 ;; Move point past whitespace.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1548 (defun gud-jdb-skip-whitespace ()
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1549 (skip-chars-forward " \n\r\t\014"))
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1550
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1551 ;; Move point past a "// <eol>" type of comment.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1552 (defun gud-jdb-skip-single-line-comment ()
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1553 (end-of-line))
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1554
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1555 ;; Move point past a "/* */" or "/** */" type of comment.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1556 (defun gud-jdb-skip-traditional-or-documentation-comment ()
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1557 (forward-char 2)
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1558 (catch 'break
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1559 (while (not (eobp))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1560 (if (eq (following-char) ?*)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1561 (progn
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1562 (forward-char)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1563 (if (not (eobp))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1564 (if (eq (following-char) ?/)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1565 (progn
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1566 (forward-char)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1567 (throw 'break nil)))))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1568 (forward-char)))))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1569
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1570 ;; Move point past any number of consecutive whitespace chars and/or comments.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1571 (defun gud-jdb-skip-whitespace-and-comments ()
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1572 (gud-jdb-skip-whitespace)
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1573 (catch 'done
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1574 (while t
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1575 (cond
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1576 ((looking-at "//")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1577 (gud-jdb-skip-single-line-comment)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1578 (gud-jdb-skip-whitespace))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1579 ((looking-at "/\\*")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1580 (gud-jdb-skip-traditional-or-documentation-comment)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1581 (gud-jdb-skip-whitespace))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1582 (t (throw 'done nil))))))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1583
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1584 ;; Move point past things that are id-like. The intent is to skip regular
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1585 ;; id's, such as class or interface names as well as package and interface
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1586 ;; names.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1587 (defun gud-jdb-skip-id-ish-thing ()
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1588 (skip-chars-forward "^ /\n\r\t\014,;{"))
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1589
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1590 ;; Move point past a string literal.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1591 (defun gud-jdb-skip-string-literal ()
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1592 (forward-char)
24736
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
1593 (while (not (cond
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
1594 ((eq (following-char) ?\\)
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
1595 (forward-char))
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
1596 ((eq (following-char) ?\042))))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1597 (forward-char))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1598 (forward-char))
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1599
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1600 ;; Move point past a character literal.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1601 (defun gud-jdb-skip-character-literal ()
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1602 (forward-char)
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1603 (while
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1604 (progn
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1605 (if (eq (following-char) ?\\)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1606 (forward-char 2))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1607 (not (eq (following-char) ?\')))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1608 (forward-char))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1609 (forward-char))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1610
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1611 ;; Move point past the following block. There may be (legal) cruft before
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1612 ;; the block's opening brace. There must be a block or it's the end of life
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1613 ;; in petticoat junction.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1614 (defun gud-jdb-skip-block ()
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1615
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1616 ;; Find the begining of the block.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1617 (while
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1618 (not (eq (following-char) ?{))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1619
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1620 ;; Skip any constructs that can harbor literal block delimiter
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1621 ;; characters and/or the delimiters for the constructs themselves.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1622 (cond
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1623 ((looking-at "//")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1624 (gud-jdb-skip-single-line-comment))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1625 ((looking-at "/\\*")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1626 (gud-jdb-skip-traditional-or-documentation-comment))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1627 ((eq (following-char) ?\042)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1628 (gud-jdb-skip-string-literal))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1629 ((eq (following-char) ?\')
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1630 (gud-jdb-skip-character-literal))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1631 (t (forward-char))))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1632
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1633 ;; Now at the begining of the block.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1634 (forward-char)
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1635
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1636 ;; Skip over the body of the block as well as the final brace.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1637 (let ((open-level 1))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1638 (while (not (eq open-level 0))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1639 (cond
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1640 ((looking-at "//")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1641 (gud-jdb-skip-single-line-comment))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1642 ((looking-at "/\\*")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1643 (gud-jdb-skip-traditional-or-documentation-comment))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1644 ((eq (following-char) ?\042)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1645 (gud-jdb-skip-string-literal))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1646 ((eq (following-char) ?\')
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1647 (gud-jdb-skip-character-literal))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1648 ((eq (following-char) ?{)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1649 (setq open-level (+ open-level 1))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1650 (forward-char))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1651 ((eq (following-char) ?})
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1652 (setq open-level (- open-level 1))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1653 (forward-char))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1654 (t (forward-char))))))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1655
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1656 ;; Find the package and class definitions in Java source file FILE. Assumes
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1657 ;; that FILE contains a legal Java program. BUF is a scratch buffer used
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1658 ;; to hold the source during analysis.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1659 (defun gud-jdb-analyze-source (buf file)
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1660 (let ((l nil))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1661 (set-buffer buf)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1662 (insert-file-contents file nil nil nil t)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1663 (goto-char 0)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1664 (catch 'abort
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1665 (let ((p ""))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1666 (while (progn
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1667 (gud-jdb-skip-whitespace)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1668 (not (eobp)))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1669 (cond
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1670
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1671 ;; Any number of semi's following a block is legal. Move point
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1672 ;; past them. Note that comments and whitespace may be
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1673 ;; interspersed as well.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1674 ((eq (following-char) ?\073)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1675 (forward-char))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1676
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1677 ;; Move point past a single line comment.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1678 ((looking-at "//")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1679 (gud-jdb-skip-single-line-comment))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1680
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1681 ;; Move point past a traditional or documentation comment.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1682 ((looking-at "/\\*")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1683 (gud-jdb-skip-traditional-or-documentation-comment))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1684
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1685 ;; Move point past a package statement, but save the PackageName.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1686 ((looking-at "package")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1687 (forward-char 7)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1688 (gud-jdb-skip-whitespace-and-comments)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1689 (let ((s (point)))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1690 (gud-jdb-skip-id-ish-thing)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1691 (setq p (concat (buffer-substring s (point)) "."))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1692 (gud-jdb-skip-whitespace-and-comments)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1693 (if (eq (following-char) ?\073)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1694 (forward-char))))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1695
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1696 ;; Move point past an import statement.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1697 ((looking-at "import")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1698 (forward-char 6)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1699 (gud-jdb-skip-whitespace-and-comments)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1700 (gud-jdb-skip-id-ish-thing)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1701 (gud-jdb-skip-whitespace-and-comments)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1702 (if (eq (following-char) ?\073)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1703 (forward-char)))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1704
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1705 ;; Move point past the various kinds of ClassModifiers.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1706 ((looking-at "public")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1707 (forward-char 6))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1708 ((looking-at "abstract")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1709 (forward-char 8))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1710 ((looking-at "final")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1711 (forward-char 5))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1712
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1713 ;; Move point past a ClassDeclaraction, but save the class
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1714 ;; Identifier.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1715 ((looking-at "class")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1716 (forward-char 5)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1717 (gud-jdb-skip-whitespace-and-comments)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1718 (let ((s (point)))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1719 (gud-jdb-skip-id-ish-thing)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1720 (setq
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1721 l (nconc l (list (concat p (buffer-substring s (point)))))))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1722 (gud-jdb-skip-block))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1723
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1724 ;; Move point past an interface statement.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1725 ((looking-at "interface")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1726 (forward-char 9)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1727 (gud-jdb-skip-block))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1728
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1729 ;; Anything else means the input is invalid.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1730 (t
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1731 (message (format "Error parsing file %s." file))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1732 (throw 'abort nil))))))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1733 l))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1734
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1735 (defun gud-jdb-build-class-source-alist-for-file (file)
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1736 (mapcar
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1737 (lambda (c)
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1738 (cons c file))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1739 (gud-jdb-analyze-source gud-jdb-analysis-buffer file)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1740
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1741 ;; Return an alist of fully qualified classes and the source files
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1742 ;; holding their definitions. SOURCES holds a list of all the source
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1743 ;; files to examine.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1744 (defun gud-jdb-build-class-source-alist (sources)
27833
d31e5fcf98d7 (gud-jdb-build-class-source-alist): Prepend space to scratch buffer
Dave Love <fx@gnu.org>
parents: 26351
diff changeset
1745 (setq gud-jdb-analysis-buffer (get-buffer-create " *gud-jdb-scratch*"))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1746 (prog1
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1747 (apply
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1748 'nconc
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1749 (mapcar
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1750 'gud-jdb-build-class-source-alist-for-file
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1751 sources))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1752 (kill-buffer gud-jdb-analysis-buffer)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1753 (setq gud-jdb-analysis-buffer nil)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1754
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1755 ;; Change what was given in the minibuffer to something that can be used to
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1756 ;; invoke the debugger.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1757 (defun gud-jdb-massage-args (file args)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1758 ;; The jdb executable must have whitespace between "-classpath" and
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1759 ;; its value while gud-common-init expects all switch values to
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1760 ;; follow the switch keyword without intervening whitespace. We
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1761 ;; require that when the user enters the "-classpath" switch in the
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1762 ;; EMACS minibuffer that they do so without the intervening
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1763 ;; whitespace. This function adds it back (it's called after
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1764 ;; gud-common-init). There are more switches like this (for
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1765 ;; instance "-host" and "-password") but I don't care about them
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1766 ;; yet.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1767 (if args
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1768 (let (massaged-args user-error)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1769
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1770 (while (and args (not user-error))
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1771 (cond
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1772 ((setq user-error (string-match "-classpath$" (car args))))
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1773 ((setq user-error (string-match "-sourcepath$" (car args))))
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1774 ((string-match "-classpath\\(.+\\)" (car args))
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1775 (setq massaged-args
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1776 (append massaged-args
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
1777 (list "-classpath"
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
1778 (setq gud-jdb-classpath-string
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
1779 (match-string 1 (car args)))))))
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1780 ((string-match "-sourcepath\\(.+\\)" (car args))
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1781 (setq massaged-args
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1782 (append massaged-args
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
1783 (list "-sourcepath"
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
1784 (setq gud-jdb-sourcepath
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
1785 (match-string 1 (car args)))))))
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1786 (t (setq massaged-args (append massaged-args (list (car args))))))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1787 (setq args (cdr args)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1788
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1789 ;; By this point the current directory is all screwed up. Maybe we
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1790 ;; could fix things and re-invoke gud-common-init, but for now I think
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1791 ;; issueing the error is good enough.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1792 (if user-error
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1793 (progn
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1794 (kill-buffer (current-buffer))
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1795 (error "Error: Omit whitespace between '-classpath or -sourcepath' and its value")))
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1796 massaged-args)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1797
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1798 ;; Search for an association with P, a fully qualified class name, in
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1799 ;; gud-jdb-class-source-alist. The asssociation gives the fully
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1800 ;; qualified file name of the source file which produced the class.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1801 (defun gud-jdb-find-source-file (p)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1802 (cdr (assoc p gud-jdb-class-source-alist)))
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1803
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1804 ;; Note: Reset to this value every time a prompt is seen
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1805 (defvar gud-jdb-lowest-stack-level 999)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1806
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1807 (defun gud-jdb-find-source-using-classpath (p)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1808 "Find source file corresponding to fully qualified class p.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1809 Convert p from jdb's output, converted to a pathname
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1810 relative to a classpath directory."
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1811 (save-match-data
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1812 (let
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1813 (;; Replace dots with slashes and append ".java" to generate file
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1814 ;; name relative to classpath
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1815 (filename
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1816 (concat
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1817 (mapconcat 'identity
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1818 (split-string
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1819 ;; Eliminate any subclass references in the class
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1820 ;; name string. These start with a "$"
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1821 ((lambda (x)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1822 (if (string-match "$.*" x)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1823 (replace-match "" t t x) p))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1824 p)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1825 "\\.") "/")
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1826 ".java"))
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1827 (cplist (append gud-jdb-sourcepath gud-jdb-classpath))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1828 found-file)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1829 (while (and cplist
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1830 (not (setq found-file
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1831 (file-readable-p
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1832 (concat (car cplist) "/" filename)))))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1833 (setq cplist (cdr cplist)))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1834 (if found-file (concat (car cplist) "/" filename)))))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1835
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1836 (defun gud-jdb-find-source (string)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1837 "Alias for function used to locate source files.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1838 Set to `gud-jdb-find-source-using-classpath' or `gud-jdb-find-source-file'
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1839 during jdb initialization depending on the value of
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1840 `gud-jdb-use-classpath'."
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1841 nil)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1842
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1843 (defun gud-jdb-parse-classpath-string (string)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1844 "Parse the classpath list and convert each item to an absolute pathname."
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1845 (mapcar (lambda (s) (if (string-match "[/\\]$" s)
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1846 (replace-match "" nil nil s) s))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1847 (mapcar 'file-truename
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1848 (split-string
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1849 string
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1850 (concat "[ \t\n\r,\"" path-separator "]+")))))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1851
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1852 ;; See comentary for other debugger's marker filters - there you will find
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1853 ;; important notes about STRING.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1854 (defun gud-jdb-marker-filter (string)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1855
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1856 ;; Build up the accumulator.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1857 (setq gud-marker-acc
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1858 (if gud-marker-acc
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1859 (concat gud-marker-acc string)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1860 string))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1861
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1862 ;; Look for classpath information until gud-jdb-classpath-string is found
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1863 ;; (interactive, multiple settings of classpath from jdb
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1864 ;; not supported/followed)
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1865 (if (and gud-jdb-use-classpath
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1866 (not gud-jdb-classpath-string)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1867 (or (string-match "classpath:[ \t[]+\\([^]]+\\)" gud-marker-acc)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1868 (string-match "-classpath[ \t\"]+\\([^ \"]+\\)" gud-marker-acc)))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1869 (setq gud-jdb-classpath
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1870 (gud-jdb-parse-classpath-string
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1871 (setq gud-jdb-classpath-string
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
1872 (match-string 1 gud-marker-acc)))))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1873
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1874 ;; We process STRING from left to right. Each time through the
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1875 ;; following loop we process at most one marker. After we've found a
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1876 ;; marker, delete gud-marker-acc up to and including the match
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1877 (let (file-found)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1878 ;; Process each complete marker in the input.
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1879 (while
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1880
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1881 ;; Do we see a marker?
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1882 (string-match
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1883 ;; jdb puts out a string of the following form when it
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1884 ;; hits a breakpoint:
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1885 ;;
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1886 ;; <fully-qualified-class><method> (<class>:<line-number>)
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1887 ;;
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1888 ;; <fully-qualified-class>'s are composed of Java ID's
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1889 ;; separated by periods. <method> and <class> are
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1890 ;; also Java ID's. <method> begins with a period and
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1891 ;; may contain less-than and greater-than (constructors,
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1892 ;; for instance, are called <init> in the symbol table.)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1893 ;; Java ID's begin with a letter followed by letters
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1894 ;; and/or digits. The set of letters includes underscore
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1895 ;; and dollar sign.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1896 ;;
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1897 ;; The first group matches <fully-qualified-class>,
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1898 ;; the second group matches <class> and the third group
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1899 ;; matches <line-number>. We don't care about using
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1900 ;; <method> so we don't "group" it.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1901 ;;
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1902 ;; FIXME: Java ID's are UNICODE strings, this matches ASCII
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1903 ;; ID's only.
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1904 ;;
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1905 ;; The "," in the last square-bracket is necessary because of
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1906 ;; Sun's total disrespect for backwards compatibility in
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1907 ;; reported line numbers from jdb - starting in 1.4.0 they
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1908 ;; introduced a comma at the thousands position (how
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1909 ;; ingenious!)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1910
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1911 "\\(\[[0-9]+\] \\)*\\([a-zA-Z0-9.$_]+\\)\\.[a-zA-Z0-9$_<>(),]+ \
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1912 \\(([a-zA-Z0-9.$_]+:\\|line=\\)\\([0-9,]+\\)"
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1913 gud-marker-acc)
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1914
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1915 ;; A good marker is one that:
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1916 ;; 1) does not have a "[n] " prefix (not part of a stack backtrace)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1917 ;; 2) does have an "[n] " prefix and n is the lowest prefix seen
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1918 ;; since the last prompt
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1919 ;; Figure out the line on which to position the debugging arrow.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1920 ;; Return the info as a cons of the form:
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1921 ;;
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1922 ;; (<file-name> . <line-number>) .
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1923 (if (if (match-beginning 1)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1924 (let (n)
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1925 (setq n (string-to-int (substring
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1926 gud-marker-acc
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1927 (1+ (match-beginning 1))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1928 (- (match-end 1) 2))))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1929 (if (< n gud-jdb-lowest-stack-level)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1930 (progn (setq gud-jdb-lowest-stack-level n) t)))
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1931 t)
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1932 (if (setq file-found
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
1933 (gud-jdb-find-source (match-string 2 gud-marker-acc)))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1934 (setq gud-last-frame
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1935 (cons file-found
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1936 (string-to-int
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1937 (let
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1938 ((numstr (match-string 4 gud-marker-acc)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1939 (if (string-match "," numstr)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1940 (replace-match "" nil nil numstr)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
1941 numstr)))))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1942 (message "Could not find source file.")))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1943
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1944 ;; Set the accumulator to the remaining text.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1945 (setq gud-marker-acc (substring gud-marker-acc (match-end 0))))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1946
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1947 (if (string-match comint-prompt-regexp gud-marker-acc)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1948 (setq gud-jdb-lowest-stack-level 999)))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1949
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1950 ;; Do not allow gud-marker-acc to grow without bound. If the source
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1951 ;; file information is not within the last 3/4
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1952 ;; gud-marker-acc-max-length characters, well,...
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1953 (if (> (length gud-marker-acc) gud-marker-acc-max-length)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1954 (setq gud-marker-acc
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1955 (substring gud-marker-acc
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1956 (- (/ (* gud-marker-acc-max-length 3) 4)))))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1957
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1958 ;; We don't filter any debugger output so just return what we were given.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1959 string)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1960
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1961 (defvar gud-jdb-command-name "jdb" "Command that executes the Java debugger.")
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1962
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1963 ;;;###autoload
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1964 (defun jdb (command-line)
41952
cf39e35201ff (jdb): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 41935
diff changeset
1965 "Run jdb with command line COMMAND-LINE in a buffer.
cf39e35201ff (jdb): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 41935
diff changeset
1966 The buffer is named \"*gud*\" if no initial class is given or
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1967 \"*gud-<initial-class-basename>*\" if there is. If the \"-classpath\"
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1968 switch is given, omit all whitespace between it and its value.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1969
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1970 See `gud-jdb-use-classpath' and `gud-jdb-classpath' documentation for
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1971 information on how jdb accesses source files. Alternatively (if
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1972 `gud-jdb-use-classpath' is nil), see `gud-jdb-directories' for the
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1973 original source file access method.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1974
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1975 For general information about commands available to control jdb from
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1976 gud, see `gud-mode'."
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1977 (interactive
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1978 (list (gud-query-cmdline 'jdb)))
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1979 (setq gud-jdb-classpath nil)
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1980 (setq gud-jdb-sourcepath nil)
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1981
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1982 ;; Set gud-jdb-classpath from the CLASSPATH environment variable,
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1983 ;; if CLASSPATH is set.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1984 (setq gud-jdb-classpath-string (getenv "CLASSPATH"))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1985 (if gud-jdb-classpath-string
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1986 (setq gud-jdb-classpath
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1987 (gud-jdb-parse-classpath-string gud-jdb-classpath-string)))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1988 (setq gud-jdb-classpath-string nil) ; prepare for next
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1989
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1990 (gud-common-init command-line 'gud-jdb-massage-args
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
1991 'gud-jdb-marker-filter)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1992 (set (make-local-variable 'gud-minor-mode) 'jdb)
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1993
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1994 ;; If a -classpath option was provided, set gud-jdb-classpath
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1995 (if gud-jdb-classpath-string
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1996 (setq gud-jdb-classpath
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1997 (gud-jdb-parse-classpath-string gud-jdb-classpath-string)))
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1998 (setq gud-jdb-classpath-string nil) ; prepare for next
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1999 ;; If a -sourcepath option was provided, parse it
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2000 (if gud-jdb-sourcepath
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2001 (setq gud-jdb-sourcepath
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2002 (gud-jdb-parse-classpath-string gud-jdb-sourcepath)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2003
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2004 (gud-def gud-break "stop at %c:%l" "\C-b" "Set breakpoint at current line.")
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2005 (gud-def gud-remove "clear %c:%l" "\C-d" "Remove breakpoint at current line")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
2006 (gud-def gud-step "step" "\C-s" "Step one source line with display.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
2007 (gud-def gud-next "next" "\C-n" "Step one line (skip functions).")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
2008 (gud-def gud-cont "cont" "\C-r" "Continue with display.")
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
2009 (gud-def gud-finish "step up" "\C-f" "Continue until current method returns.")
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2010 (gud-def gud-up "up\C-Mwhere" "<" "Up one stack frame.")
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2011 (gud-def gud-down "down\C-Mwhere" ">" "Up one stack frame.")
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2012 (gud-def gud-run "run" nil "Run the program.") ;if VM start using jdb
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2013
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2014 (setq comint-prompt-regexp "^> \\|^[^ ]+\\[[0-9]+\\] ")
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2015 (setq paragraph-start comint-prompt-regexp)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2016 (run-hooks 'jdb-mode-hook)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2017
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2018 (if gud-jdb-use-classpath
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2019 ;; Get the classpath information from the debugger
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2020 (progn
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2021 (if (string-match "-attach" command-line)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2022 (gud-call "classpath"))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2023 (fset 'gud-jdb-find-source
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2024 'gud-jdb-find-source-using-classpath))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2025
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2026 ;; Else create and bind the class/source association list as well
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2027 ;; as the source file list.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2028 (setq gud-jdb-class-source-alist
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2029 (gud-jdb-build-class-source-alist
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2030 (setq gud-jdb-source-files
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2031 (gud-jdb-build-source-files-list gud-jdb-directories
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2032 "\\.java$"))))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2033 (fset 'gud-jdb-find-source 'gud-jdb-find-source-file)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2034
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2035
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2036 ;; ======================================================================
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2037 ;;
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2038 ;; BASHDB support. See http://bashdb.sourceforge.net
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2039 ;;
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2040 ;; AUTHOR: Rocky Bernstein <rocky@panix.com>
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2041 ;;
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2042 ;; CREATED: Sun Nov 10 10:46:38 2002 Rocky Bernstein.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2043 ;;
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2044 ;; INVOCATION NOTES:
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2045 ;;
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2046 ;; You invoke bashdb-mode with:
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2047 ;;
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2048 ;; M-x bashdb <enter>
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2049 ;;
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2050 ;; It responds with:
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2051 ;;
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2052 ;; Run bashdb (like this): bash
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2053 ;;
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2054
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2055 ;; History of argument lists passed to bashdb.
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2056 (defvar gud-bashdb-history nil)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2057
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2058 ;; Convert a command line as would be typed normally to run a script
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2059 ;; into one that invokes an Emacs-enabled debugging session.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2060 ;; "--debugger" in inserted as the first switch.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2061
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2062 ;; There's no guarantee that Emacs will hand the filter the entire
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2063 ;; marker at once; it could be broken up across several strings. We
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2064 ;; might even receive a big chunk with several markers in it. If we
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2065 ;; receive a chunk of text which looks like it might contain the
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2066 ;; beginning of a marker, we save it here between calls to the
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2067 ;; filter.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2068 (defun gud-bashdb-marker-filter (string)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2069 (setq gud-marker-acc (concat gud-marker-acc string))
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2070 (let ((output ""))
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2071
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2072 ;; Process all the complete markers in this chunk.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2073 ;; Format of line looks like this:
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2074 ;; (/etc/init.d/ntp.init:16):
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2075 ;; but we also allow DOS drive letters
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2076 ;; (d:/etc/init.d/ntp.init:16):
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2077 (while (string-match "\\(^\\|\n\\)(\\(\\([a-zA-Z]:\\)?[^:\n]*\\):\\([0-9]*\\)):.*\n"
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2078 gud-marker-acc)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2079 (setq
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2080
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2081 ;; Extract the frame position from the marker.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2082 gud-last-frame
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2083 (cons (match-string 2 gud-marker-acc)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2084 (string-to-int (match-string 4 gud-marker-acc)))
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2085
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2086 ;; Append any text before the marker to the output we're going
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2087 ;; to return - we don't include the marker in this text.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2088 output (concat output
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2089 (substring gud-marker-acc 0 (match-beginning 0)))
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2090
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2091 ;; Set the accumulator to the remaining text.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2092 gud-marker-acc (substring gud-marker-acc (match-end 0))))
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2093
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2094 ;; Does the remaining text look like it might end with the
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2095 ;; beginning of another marker? If it does, then keep it in
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2096 ;; gud-marker-acc until we receive the rest of it. Since we
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2097 ;; know the full marker regexp above failed, it's pretty simple to
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2098 ;; test for marker starts.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2099 (if (string-match "\032.*\\'" gud-marker-acc)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2100 (progn
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2101 ;; Everything before the potential marker start can be output.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2102 (setq output (concat output (substring gud-marker-acc
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2103 0 (match-beginning 0))))
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2104
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2105 ;; Everything after, we save, to combine with later input.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2106 (setq gud-marker-acc
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2107 (substring gud-marker-acc (match-beginning 0))))
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2108
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2109 (setq output (concat output gud-marker-acc)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2110 gud-marker-acc ""))
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2111
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2112 output))
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2113
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2114 (defcustom gud-bashdb-command-name "bash --debugger"
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2115 "File name for executing bash debugger."
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2116 :type 'string
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2117 :group 'gud)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2118
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2119 ;;;###autoload
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2120 (defun bashdb (command-line)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2121 "Run bashdb on program FILE in buffer *gud-FILE*.
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2122 The directory containing FILE becomes the initial working directory
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2123 and source-file directory for your debugger."
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2124 (interactive
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2125 (list (read-from-minibuffer "Run bashdb (like this): "
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2126 (if (consp gud-bashdb-history)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2127 (car gud-bashdb-history)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2128 (concat gud-bashdb-command-name
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2129 " "))
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2130 gud-minibuffer-local-map nil
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2131 '(gud-bashdb-history . 1))))
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2132
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2133 (gud-common-init command-line nil 'gud-bashdb-marker-filter)
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2134
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2135 (set (make-local-variable 'gud-minor-mode) 'bashdb)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2136
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2137 (gud-def gud-break "break %l" "\C-b" "Set breakpoint at current line.")
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2138 (gud-def gud-tbreak "tbreak %l" "\C-t" "Set temporary breakpoint at current line.")
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2139 (gud-def gud-remove "clear %l" "\C-d" "Remove breakpoint at current line")
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2140 (gud-def gud-step "step" "\C-s" "Step one source line with display.")
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2141 (gud-def gud-next "next" "\C-n" "Step one line (skip functions).")
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2142 (gud-def gud-cont "continue" "\C-r" "Continue with display.")
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2143 (gud-def gud-finish "finish" "\C-f" "Finish executing current function.")
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2144 (gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).")
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2145 (gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).")
48795
480e8dc8fc37 (bashdb): Prompt now included parenthesis for subshell
Richard M. Stallman <rms@gnu.org>
parents: 48679
diff changeset
2146 (gud-def gud-print "x %e" "\C-p" "Evaluate BASH expression at point.")
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2147
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2148 ;; Is this right?
48795
480e8dc8fc37 (bashdb): Prompt now included parenthesis for subshell
Richard M. Stallman <rms@gnu.org>
parents: 48679
diff changeset
2149 (gud-def gud-statement "eval %e" "\C-e" "Execute BASH statement at point.")
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2150
48795
480e8dc8fc37 (bashdb): Prompt now included parenthesis for subshell
Richard M. Stallman <rms@gnu.org>
parents: 48679
diff changeset
2151 (setq comint-prompt-regexp "^bashdb<+(*[0-9]+)*>+ ")
48657
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2152 (setq paragraph-start comint-prompt-regexp)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2153 (run-hooks 'bashdb-mode-hook)
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2154 )
81f6fbdaa117 (gud-menu-map): Update for bashdb.
Richard M. Stallman <rms@gnu.org>
parents: 48638
diff changeset
2155
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2156 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2157 ;; End of debugger-specific information
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
2158 ;;
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2159
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
2160
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2161 ;; When we send a command to the debugger via gud-call, it's annoying
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2162 ;; to see the command and the new prompt inserted into the debugger's
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2163 ;; buffer; we have other ways of knowing the command has completed.
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2164 ;;
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2165 ;; If the buffer looks like this:
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2166 ;; --------------------
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2167 ;; (gdb) set args foo bar
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2168 ;; (gdb) -!-
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2169 ;; --------------------
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2170 ;; (the -!- marks the location of point), and we type `C-x SPC' in a
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2171 ;; source file to set a breakpoint, we want the buffer to end up like
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2172 ;; this:
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2173 ;; --------------------
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2174 ;; (gdb) set args foo bar
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2175 ;; Breakpoint 1 at 0x92: file make-docfile.c, line 49.
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2176 ;; (gdb) -!-
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2177 ;; --------------------
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2178 ;; Essentially, the old prompt is deleted, and the command's output
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2179 ;; and the new prompt take its place.
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2180 ;;
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2181 ;; Not echoing the command is easy enough; you send it directly using
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2182 ;; process-send-string, and it never enters the buffer. However,
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2183 ;; getting rid of the old prompt is trickier; you don't want to do it
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2184 ;; when you send the command, since that will result in an annoying
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2185 ;; flicker as the prompt is deleted, redisplay occurs while Emacs
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2186 ;; waits for a response from the debugger, and the new prompt is
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2187 ;; inserted. Instead, we'll wait until we actually get some output
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2188 ;; from the subprocess before we delete the prompt. If the command
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2189 ;; produced no output other than a new prompt, that prompt will most
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2190 ;; likely be in the first chunk of output received, so we will delete
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2191 ;; the prompt and then replace it with an identical one. If the
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2192 ;; command produces output, the prompt is moving anyway, so the
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2193 ;; flicker won't be annoying.
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2194 ;;
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2195 ;; So - when we want to delete the prompt upon receipt of the next
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2196 ;; chunk of debugger output, we position gud-delete-prompt-marker at
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2197 ;; the start of the prompt; the process filter will notice this, and
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2198 ;; delete all text between it and the process output marker. If
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2199 ;; gud-delete-prompt-marker points nowhere, we leave the current
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2200 ;; prompt alone.
1256
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
2201 (defvar gud-delete-prompt-marker nil)
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
2202
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2203
17658
c8e002cdebb2 (gud-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 16843
diff changeset
2204 (put 'gud-mode 'mode-class 'special)
c8e002cdebb2 (gud-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 16843
diff changeset
2205
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2206 (define-derived-mode gud-mode comint-mode "Debugger"
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2207 "Major mode for interacting with an inferior debugger process.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2208
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2209 You start it up with one of the commands M-x gdb, M-x sdb, M-x dbx,
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2210 M-x perldb, M-x xdb, or M-x jdb. Each entry point finishes by executing a
14934
e0c9d34141dd (gud-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
2211 hook; `gdb-mode-hook', `sdb-mode-hook', `dbx-mode-hook',
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2212 `perldb-mode-hook', `xdb-mode-hook', or `jdb-mode-hook' respectively.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2213
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2214 After startup, the following commands are available in both the GUD
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2215 interaction buffer and any source buffer GUD visits due to a breakpoint stop
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2216 or step operation:
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2217
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2218 \\[gud-break] sets a breakpoint at the current file and line. In the
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2219 GUD buffer, the current file and line are those of the last breakpoint or
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2220 step. In a source buffer, they are the buffer's file and current line.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2221
2532
17a6b6d079cf (gud-mode): Created C-c synonym bindings in the GUD buffer's local map.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2519
diff changeset
2222 \\[gud-remove] removes breakpoints on the current file and line.
17a6b6d079cf (gud-mode): Created C-c synonym bindings in the GUD buffer's local map.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2519
diff changeset
2223
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2224 \\[gud-refresh] displays in the source window the last line referred to
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2225 in the gud buffer.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2226
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2227 \\[gud-step], \\[gud-next], and \\[gud-stepi] do a step-one-line,
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2228 step-one-line (not entering function calls), and step-one-instruction
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2229 and then update the source window with the current file and position.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2230 \\[gud-cont] continues execution.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2231
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2232 \\[gud-print] tries to find the largest C lvalue or function-call expression
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2233 around point, and sends it to the debugger for value display.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2234
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2235 The above commands are common to all supported debuggers except xdb which
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2236 does not support stepping instructions.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2237
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2238 Under gdb, sdb and xdb, \\[gud-tbreak] behaves exactly like \\[gud-break],
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2239 except that the breakpoint is temporary; that is, it is removed when
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2240 execution stops on it.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2241
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2242 Under gdb, dbx, and xdb, \\[gud-up] pops up through an enclosing stack
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
2243 frame. \\[gud-down] drops back down through one.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2244
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2245 If you are using gdb or xdb, \\[gud-finish] runs execution to the return from
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2246 the current function and stops.
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2247
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2248 All the keystrokes above are accessible in the GUD buffer
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2249 with the prefix C-c, and in all buffers through the prefix C-x C-a.
2532
17a6b6d079cf (gud-mode): Created C-c synonym bindings in the GUD buffer's local map.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2519
diff changeset
2250
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2251 All pre-defined functions for which the concept make sense repeat
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2252 themselves the appropriate number of times if you give a prefix
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2253 argument.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2254
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2255 You may use the `gud-def' macro in the initialization hook to define other
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2256 commands.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2257
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2258 Other commands for interacting with the debugger process are inherited from
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2259 comint mode, which see."
7074
b9d86b8e3ca1 (gud-mode, gud-sentinel):
Richard M. Stallman <rms@gnu.org>
parents: 7009
diff changeset
2260 (setq mode-line-process '(":%s"))
5997
6187a2560211 (gud-mode): Define C-c C-l in gud buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5508
diff changeset
2261 (define-key (current-local-map) "\C-c\C-l" 'gud-refresh)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2262 (set (make-local-variable 'gud-last-frame) nil)
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2263 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2264 (make-local-variable 'comint-prompt-regexp)
16327
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
2265 ;; Don't put repeated commands in command history many times.
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2266 (set (make-local-variable 'comint-input-ignoredups) t)
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
2267 (make-local-variable 'paragraph-start)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2268 (set (make-local-variable 'gud-delete-prompt-marker) (make-marker)))
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
2269
23735
9392dd2e6137 (gud-common-init): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 22734
diff changeset
2270 ;; Cause our buffers to be displayed, by default,
9392dd2e6137 (gud-common-init): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 22734
diff changeset
2271 ;; in the selected window.
9392dd2e6137 (gud-common-init): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 22734
diff changeset
2272 ;;;###autoload (add-hook 'same-window-regexps "\\*gud-.*\\*\\(\\|<[0-9]+>\\)")
9392dd2e6137 (gud-common-init): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 22734
diff changeset
2273
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2274 (defcustom gud-chdir-before-run t
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2275 "Non-nil if GUD should `cd' to the debugged executable."
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2276 :group 'gud
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2277 :type 'boolean)
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2278
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2279 (defvar gud-target-name "--unknown--"
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2280 "The apparent name of the program being debugged in a gud buffer.")
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2281
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
2282 ;; Perform initializations common to all debuggers.
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2283 ;; The first arg is the specified command line,
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2284 ;; which starts with the program to debug.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2285 ;; The other three args specify the values to use
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2286 ;; for local variables in the debugger buffer.
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
2287 (defun gud-common-init (command-line massage-args marker-filter
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
2288 &optional find-file)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2289 (let* ((words (split-string command-line))
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
2290 (program (car words))
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
2291 (dir default-directory)
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
2292 ;; Extract the file name from WORDS
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
2293 ;; and put t in its place.
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
2294 ;; Later on we will put the modified file name arg back there.
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
2295 (file-word (let ((w (cdr words)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
2296 (while (and w (= ?- (aref (car w) 0)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
2297 (setq w (cdr w)))
11930
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2298 (and w
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2299 (prog1 (car w)
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2300 (setcar w t)))))
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2301 (file-subst
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2302 (and file-word (substitute-in-file-name file-word)))
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
2303 (args (cdr words))
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2304 ;; If a directory was specified, expand the file name.
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2305 ;; Otherwise, don't expand it, so GDB can use the PATH.
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2306 ;; A file name without directory is literally valid
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2307 ;; only if the file exists in ., and in that case,
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2308 ;; omitting the expansion here has no visible effect.
5508
67db1f804162 (gud-common-init): Don't crash if no file specified.
Richard M. Stallman <rms@gnu.org>
parents: 5264
diff changeset
2309 (file (and file-word
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2310 (if (file-name-directory file-subst)
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2311 (expand-file-name file-subst)
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2312 file-subst)))
11930
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2313 (filepart (and file-word (concat "-" (file-name-nondirectory file)))))
23735
9392dd2e6137 (gud-common-init): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 22734
diff changeset
2314 (pop-to-buffer (concat "*gud" filepart "*"))
48638
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
2315 ;; Set the dir, in case the buffer already existed with a different dir.
fff05c8f251d (gud-running): Rename from gdb-running. Update uses.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48571
diff changeset
2316 (setq default-directory dir)
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2317 ;; Set default-directory to the file's directory.
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2318 (and file-word
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2319 gud-chdir-before-run
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2320 ;; Don't set default-directory if no directory was specified.
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2321 ;; In that case, either the file is found in the current directory,
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2322 ;; in which case this setq is a no-op,
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2323 ;; or it is found by searching PATH,
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2324 ;; in which case we don't know what directory it was found in.
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2325 (file-name-directory file)
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2326 (setq default-directory (file-name-directory file)))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2327 (or (bolp) (newline))
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2328 (insert "Current directory is " default-directory "\n")
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
2329 ;; Put the substituted and expanded file name back in its place.
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
2330 (let ((w args))
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
2331 (while (and w (not (eq (car w) t)))
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
2332 (setq w (cdr w)))
11930
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2333 (if w
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2334 (setcar w file)))
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2335 (apply 'make-comint (concat "gud" filepart) program nil
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2336 (if massage-args (funcall massage-args file args) args))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2337 ;; Since comint clobbered the mode, we don't set it until now.
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2338 (gud-mode)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2339 (set (make-local-variable 'gud-target-name)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2340 (and file-word (file-name-nondirectory file))))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2341 (set (make-local-variable 'gud-marker-filter) marker-filter)
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2342 (if find-file (set (make-local-variable 'gud-find-file) find-file))
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2343 (setq gud-running nil)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2344 (setq gud-last-last-frame nil)
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2345
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2346 (set-process-filter (get-buffer-process (current-buffer)) 'gud-filter)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2347 (set-process-sentinel (get-buffer-process (current-buffer)) 'gud-sentinel)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2348 (gud-set-buffer))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2349
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2350 (defun gud-set-buffer ()
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2351 (when (eq major-mode 'gud-mode)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2352 (setq gud-comint-buffer (current-buffer))))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2353
13003
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2354 (defvar gud-filter-defer-flag nil
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2355 "Non-nil means don't process anything from the debugger right now.
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2356 It is saved for when this flag is not set.")
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2357
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2358 (defvar gud-filter-pending-text nil
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2359 "Non-nil means this is text that has been saved for later in `gud-filter'.")
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2360
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2361 ;; These functions are responsible for inserting output from your debugger
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2362 ;; into the buffer. The hard work is done by the method that is
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2363 ;; the value of gud-marker-filter.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2364
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2365 (defun gud-filter (proc string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2366 ;; Here's where the actual buffer insertion is done
13190
1e174c7e3a00 (gud-filter): Move the gud-display-frame call
Richard M. Stallman <rms@gnu.org>
parents: 13003
diff changeset
2367 (let (output process-window)
9519
c7925093b270 (gud-filter): Don't bind inhibit-quit.
Richard M. Stallman <rms@gnu.org>
parents: 9191
diff changeset
2368 (if (buffer-name (process-buffer proc))
13003
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2369 (if gud-filter-defer-flag
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2370 ;; If we can't process any text now,
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2371 ;; save it for later.
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2372 (setq gud-filter-pending-text
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2373 (concat (or gud-filter-pending-text "") string))
15185
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2374
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2375 ;; If we have to ask a question during the processing,
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2376 ;; defer any additional text that comes from the debugger
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2377 ;; during that time.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2378 (let ((gud-filter-defer-flag t))
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2379 ;; Process now any text we previously saved up.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2380 (if gud-filter-pending-text
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2381 (setq string (concat gud-filter-pending-text string)
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2382 gud-filter-pending-text nil))
30736
48d749ce74e4 (gud-filter): Use `with-current-buffer' instead of save-excursion when
Miles Bader <miles@gnu.org>
parents: 30643
diff changeset
2383
48d749ce74e4 (gud-filter): Use `with-current-buffer' instead of save-excursion when
Miles Bader <miles@gnu.org>
parents: 30643
diff changeset
2384 (with-current-buffer (process-buffer proc)
13003
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2385 ;; If we have been so requested, delete the debugger prompt.
30959
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2386 (save-restriction
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2387 (widen)
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2388 (if (marker-buffer gud-delete-prompt-marker)
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2389 (progn
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2390 (delete-region (process-mark proc)
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2391 gud-delete-prompt-marker)
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2392 (set-marker gud-delete-prompt-marker nil)))
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2393 ;; Save the process output, checking for source file markers.
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2394 (setq output (gud-marker-filter string))
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2395 ;; Check for a filename-and-line number.
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2396 ;; Don't display the specified file
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2397 ;; unless (1) point is at or after the position where output appears
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2398 ;; and (2) this buffer is on the screen.
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2399 (setq process-window
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2400 (and gud-last-frame
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2401 (>= (point) (process-mark proc))
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2402 (get-buffer-window (current-buffer)))))
15185
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2403
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2404 ;; Let the comint filter do the actual insertion.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2405 ;; That lets us inherit various comint features.
22446
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2406 (comint-output-filter proc output))
13190
1e174c7e3a00 (gud-filter): Move the gud-display-frame call
Richard M. Stallman <rms@gnu.org>
parents: 13003
diff changeset
2407
22446
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2408 ;; Put the arrow on the source line.
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2409 ;; This must be outside of the save-excursion
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2410 ;; in case the source file is our current buffer.
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2411 (if process-window
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2412 (save-selected-window
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2413 (select-window process-window)
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2414 (gud-display-frame))
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2415 ;; We have to be in the proper buffer, (process-buffer proc),
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2416 ;; but not in a save-excursion, because that would restore point.
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2417 (let ((old-buf (current-buffer)))
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2418 (set-buffer (process-buffer proc))
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2419 (unwind-protect
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2420 (gud-display-frame)
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2421 (set-buffer old-buf)))))
13190
1e174c7e3a00 (gud-filter): Move the gud-display-frame call
Richard M. Stallman <rms@gnu.org>
parents: 13003
diff changeset
2422
15185
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2423 ;; If we deferred text that arrived during this processing,
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2424 ;; handle it now.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2425 (if gud-filter-pending-text
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2426 (gud-filter proc ""))))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2427
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2428 (defun gud-sentinel (proc msg)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2429 (cond ((null (buffer-name (process-buffer proc)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2430 ;; buffer killed
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2431 ;; Stop displaying an arrow in a source file.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2432 (setq overlay-arrow-position nil)
49146
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2433 (set-process-buffer proc nil)
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2434 (if (eq gud-minor-mode-type 'gdba)
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2435 (gdb-reset)
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2436 (gud-reset)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2437 ((memq (process-status proc) '(signal exit))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2438 ;; Stop displaying an arrow in a source file.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2439 (setq overlay-arrow-position nil)
49146
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2440 (with-current-buffer gud-comint-buffer
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2441 (if (eq gud-minor-mode 'gdba)
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2442 (gdb-reset)
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2443 (gud-reset)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2444 (let* ((obuf (current-buffer)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2445 ;; save-excursion isn't the right thing if
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2446 ;; process-buffer is current-buffer
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2447 (unwind-protect
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2448 (progn
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2449 ;; Write something in *compilation* and hack its mode line,
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2450 (set-buffer (process-buffer proc))
20296
0b41c3dab3a7 (gud-sentinel): Set mode-line-process in the process
Andreas Schwab <schwab@suse.de>
parents: 19890
diff changeset
2451 ;; Fix the mode line.
0b41c3dab3a7 (gud-sentinel): Set mode-line-process in the process
Andreas Schwab <schwab@suse.de>
parents: 19890
diff changeset
2452 (setq mode-line-process
0b41c3dab3a7 (gud-sentinel): Set mode-line-process in the process
Andreas Schwab <schwab@suse.de>
parents: 19890
diff changeset
2453 (concat ":"
0b41c3dab3a7 (gud-sentinel): Set mode-line-process in the process
Andreas Schwab <schwab@suse.de>
parents: 19890
diff changeset
2454 (symbol-name (process-status proc))))
11583
b481316dd562 (gud-sentinel): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11235
diff changeset
2455 (force-mode-line-update)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2456 (if (eobp)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2457 (insert ?\n mode-name " " msg)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2458 (save-excursion
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2459 (goto-char (point-max))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2460 (insert ?\n mode-name " " msg)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2461 ;; If buffer and mode line will show that the process
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2462 ;; is dead, we can delete it now. Otherwise it
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2463 ;; will stay around until M-x list-processes.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2464 (delete-process proc))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2465 ;; Restore old buffer, but don't restore old point
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2466 ;; if obuf is the gud buffer.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2467 (set-buffer obuf))))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2468
49146
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2469 (defvar gud-minor-mode-type nil)
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2470
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2471 (defun gud-kill-buffer-hook ()
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2472 (if gud-minor-mode
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2473 (setq gud-minor-mode-type gud-minor-mode)))
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2474
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2475 (add-hook 'kill-buffer-hook 'gud-kill-buffer-hook)
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2476
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2477 (defun gud-reset ()
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2478 (dolist (buffer (buffer-list))
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2479 (if (not (eq buffer gud-comint-buffer))
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2480 (save-excursion
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2481 (set-buffer buffer)
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2482 (when gud-minor-mode
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2483 (setq gud-minor-mode nil)
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2484 (kill-local-variable 'tool-bar-map))))))
8e748161e8cf (gud-kill-buffer-hook): Save gud-minor-mode type.
Nick Roberts <nickrob@snap.net.nz>
parents: 48922
diff changeset
2485
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2486 (defun gud-display-frame ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2487 "Find and obey the last filename-and-line marker from the debugger.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2488 Obeying it means displaying in another window the specified file and line."
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2489 (interactive)
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2490 (when gud-last-frame
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2491 (gud-set-buffer)
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2492 (gud-display-line (car gud-last-frame) (cdr gud-last-frame))
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2493 (setq gud-last-last-frame gud-last-frame
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2494 gud-last-frame nil)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2495
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2496 ;; Make sure the file named TRUE-FILE is in a buffer that appears on the screen
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2497 ;; and that its line LINE is visible.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2498 ;; Put the overlay-arrow on the line LINE in that buffer.
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2499 ;; Most of the trickiness in here comes from wanting to preserve the current
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2500 ;; region-restriction if that's possible. We use an explicit display-buffer
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2501 ;; to get around the fact that this is called inside a save-excursion.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2502
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2503 (defun gud-display-line (true-file line)
7910
842db6d87566 (gud-massage-args): Fix error message syntax.
Richard M. Stallman <rms@gnu.org>
parents: 7741
diff changeset
2504 (let* ((last-nonmenu-event t) ; Prevent use of dialog box for questions.
15127
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
2505 (buffer
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
2506 (save-excursion
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
2507 (or (eq (current-buffer) gud-comint-buffer)
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
2508 (set-buffer gud-comint-buffer))
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
2509 (gud-find-file true-file)))
16250
aaa0ecdc4772 (gud-display-line): Don't call display-buffer
Richard M. Stallman <rms@gnu.org>
parents: 16185
diff changeset
2510 (window (and buffer (or (get-buffer-window buffer)
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2511 (if (eq gud-minor-mode 'gdba)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2512 (gdb-display-source-buffer buffer)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2513 (display-buffer buffer)))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2514 (pos))
15796
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2515 (if buffer
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2516 (progn
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2517 (save-excursion
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2518 (set-buffer buffer)
49354
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2519 (if (not (or (verify-visited-file-modtime buffer) gud-keep-buffer))
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2520 (progn
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2521 (if
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2522 (yes-or-no-p
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2523 (format "File %s changed on disk. Reread from disk? "
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2524 (buffer-name)))
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2525 (revert-buffer t t)
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2526 (setq gud-keep-buffer t))))
15796
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2527 (save-restriction
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2528 (widen)
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2529 (goto-line line)
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2530 (setq pos (point))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2531 (setq overlay-arrow-string "=>")
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2532 (or overlay-arrow-position
49354
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2533 (setq overlay-arrow-position (make-marker)))
15796
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2534 (set-marker overlay-arrow-position (point) (current-buffer)))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2535 (cond ((or (< pos (point-min)) (> pos (point-max)))
49354
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2536 (widen)
cea1991cf560 (gud-display-line): If the current file is newer than its
Nick Roberts <nickrob@snap.net.nz>
parents: 49150
diff changeset
2537 (goto-char pos))))
15796
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2538 (set-window-point window overlay-arrow-position)))))
1256
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
2539
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2540 ;; The gud-call function must do the right thing whether its invoking
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2541 ;; keystroke is from the GUD buffer itself (via major-mode binding)
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2542 ;; or a C buffer. In the former case, we want to supply data from
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2543 ;; gud-last-frame. Here's how we do it:
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2544
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2545 (defun gud-format-command (str arg)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2546 (let ((insource (not (eq (current-buffer) gud-comint-buffer)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2547 (frame (or gud-last-frame gud-last-last-frame))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2548 result)
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2549 (while (and str (string-match "\\([^%]*\\)%\\([adeflpc]\\)" str))
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2550 (let ((key (string-to-char (match-string 2 str)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2551 subst)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2552 (cond
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2553 ((eq key ?f)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2554 (setq subst (file-name-nondirectory (if insource
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2555 (buffer-file-name)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2556 (car frame)))))
24736
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
2557 ((eq key ?F)
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
2558 (setq subst (file-name-sans-extension
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
2559 (file-name-nondirectory (if insource
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
2560 (buffer-file-name)
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
2561 (car frame))))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2562 ((eq key ?d)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2563 (setq subst (file-name-directory (if insource
4344
be116c77da2f (dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents: 4335
diff changeset
2564 (buffer-file-name)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2565 (car frame)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2566 ((eq key ?l)
41935
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2567 (setq subst (int-to-string
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2568 (if insource
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2569 (save-restriction
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2570 (widen)
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2571 (+ (count-lines (point-min) (point))
41935
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2572 (if (bolp) 1 0)))
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2573 (cdr frame)))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2574 ((eq key ?e)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2575 (setq subst (gud-find-c-expr)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2576 ((eq key ?a)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2577 (setq subst (gud-read-address)))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2578 ((eq key ?c)
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2579 (setq subst
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2580 (gud-find-class
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2581 (if insource
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2582 (buffer-file-name)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2583 (car frame))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2584 (if insource
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2585 (save-restriction
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2586 (widen)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2587 (+ (count-lines (point-min) (point))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2588 (if (bolp) 1 0)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2589 (cdr frame)))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2590 ((eq key ?p)
27833
d31e5fcf98d7 (gud-jdb-build-class-source-alist): Prepend space to scratch buffer
Dave Love <fx@gnu.org>
parents: 26351
diff changeset
2591 (setq subst (if arg (int-to-string arg)))))
d31e5fcf98d7 (gud-jdb-build-class-source-alist): Prepend space to scratch buffer
Dave Love <fx@gnu.org>
parents: 26351
diff changeset
2592 (setq result (concat result (match-string 1 str) subst)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2593 (setq str (substring str (match-end 2))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2594 ;; There might be text left in STR when the loop ends.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2595 (concat result str)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2596
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
2597 (defun gud-read-address ()
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2598 "Return a string containing the core-address found in the buffer at point."
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2599 (save-match-data
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2600 (save-excursion
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2601 (let ((pt (point)) found begin)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2602 (setq found (if (search-backward "0x" (- pt 7) t) (point)))
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2603 (cond
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2604 (found (forward-char 2)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2605 (buffer-substring found
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2606 (progn (re-search-forward "[^0-9a-f]")
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2607 (forward-char -1)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2608 (point))))
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2609 (t (setq begin (progn (re-search-backward "[^0-9]")
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2610 (forward-char 1)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2611 (point)))
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2612 (forward-char 1)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2613 (re-search-forward "[^0-9]")
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2614 (forward-char -1)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2615 (buffer-substring begin (point))))))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2616
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2617 (defun gud-call (fmt &optional arg)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2618 (let ((msg (gud-format-command fmt arg)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2619 (message "Command: %s" msg)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2620 (sit-for 0)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2621 (gud-basic-call msg)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2622
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2623 (defun gud-basic-call (command)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2624 "Invoke the debugger COMMAND displaying source in other window."
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2625 (interactive)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2626 (gud-set-buffer)
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2627 (let ((proc (get-buffer-process gud-comint-buffer)))
10095
ace8ae9f015f (gud-basic-call): Detect error earlier.
Karl Heuer <kwzh@gnu.org>
parents: 10042
diff changeset
2628 (or proc (error "Current buffer has no process"))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2629 ;; Arrange for the current prompt to get deleted.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2630 (save-excursion
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2631 (set-buffer gud-comint-buffer)
30959
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2632 (save-restriction
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2633 (widen)
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2634 (goto-char (process-mark proc))
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2635 (forward-line 0)
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2636 (if (looking-at comint-prompt-regexp)
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2637 (set-marker gud-delete-prompt-marker (point)))
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2638 (if (eq gud-minor-mode 'gdba)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2639 (apply comint-input-sender (list proc command))
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2640 (process-send-string proc (concat command "\n")))))))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2641
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2642 (defun gud-refresh (&optional arg)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2643 "Fix up a possibly garbled display, and redraw the arrow."
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2644 (interactive "P")
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
2645 (or gud-last-frame (setq gud-last-frame gud-last-last-frame))
43113
106d1a478844 (gud-refresh): Call recenter only after we are sure we
Eli Zaretskii <eliz@gnu.org>
parents: 42829
diff changeset
2646 (gud-display-frame)
106d1a478844 (gud-refresh): Call recenter only after we are sure we
Eli Zaretskii <eliz@gnu.org>
parents: 42829
diff changeset
2647 (recenter arg))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2648
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2649 ;; Code for parsing expressions out of C code. The single entry point is
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2650 ;; find-c-expr, which tries to return an lvalue expression from around point.
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2651 ;;
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2652 ;; The rest of this file is a hacked version of gdbsrc.el by
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2653 ;; Debby Ayers <ayers@asc.slb.com>,
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2654 ;; Rich Schaefer <schaefer@asc.slb.com> Schlumberger, Austin, Tx.
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2655
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2656 (defun gud-find-c-expr ()
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2657 "Returns the C expr that surrounds point."
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2658 (interactive)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2659 (save-excursion
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2660 (let (p expr test-expr)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2661 (setq p (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2662 (setq expr (gud-innermost-expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2663 (setq test-expr (gud-prev-expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2664 (while (and test-expr (gud-expr-compound test-expr expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2665 (let ((prev-expr expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2666 (setq expr (cons (car test-expr) (cdr expr)))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2667 (goto-char (car expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2668 (setq test-expr (gud-prev-expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2669 ;; If we just pasted on the condition of an if or while,
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2670 ;; throw it away again.
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2671 (if (member (buffer-substring (car test-expr) (cdr test-expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2672 '("if" "while" "for"))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2673 (setq test-expr nil
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2674 expr prev-expr))))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2675 (goto-char p)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2676 (setq test-expr (gud-next-expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2677 (while (gud-expr-compound expr test-expr)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2678 (setq expr (cons (car expr) (cdr test-expr)))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2679 (setq test-expr (gud-next-expr)))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2680 (buffer-substring (car expr) (cdr expr)))))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2681
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2682 (defun gud-innermost-expr ()
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2683 "Returns the smallest expr that point is in; move point to beginning of it.
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2684 The expr is represented as a cons cell, where the car specifies the point in
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
2685 the current buffer that marks the beginning of the expr and the cdr specifies
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2686 the character after the end of the expr."
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2687 (let ((p (point)) begin end)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2688 (gud-backward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2689 (setq begin (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2690 (gud-forward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2691 (setq end (point))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
2692 (if (>= p end)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2693 (progn
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2694 (setq begin p)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2695 (goto-char p)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2696 (gud-forward-sexp)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2697 (setq end (point)))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2698 )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2699 (goto-char begin)
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2700 (cons begin end)))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2701
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2702 (defun gud-backward-sexp ()
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2703 "Version of `backward-sexp' that catches errors."
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2704 (condition-case nil
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2705 (backward-sexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2706 (error t)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2707
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2708 (defun gud-forward-sexp ()
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2709 "Version of `forward-sexp' that catches errors."
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2710 (condition-case nil
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2711 (forward-sexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2712 (error t)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2713
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2714 (defun gud-prev-expr ()
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2715 "Returns the previous expr, point is set to beginning of that expr.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2716 The expr is represented as a cons cell, where the car specifies the point in
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
2717 the current buffer that marks the beginning of the expr and the cdr specifies
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2718 the character after the end of the expr"
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2719 (let ((begin) (end))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2720 (gud-backward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2721 (setq begin (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2722 (gud-forward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2723 (setq end (point))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2724 (goto-char begin)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2725 (cons begin end)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2726
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2727 (defun gud-next-expr ()
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2728 "Returns the following expr, point is set to beginning of that expr.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2729 The expr is represented as a cons cell, where the car specifies the point in
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
2730 the current buffer that marks the beginning of the expr and the cdr specifies
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2731 the character after the end of the expr."
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2732 (let ((begin) (end))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2733 (gud-forward-sexp)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2734 (gud-forward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2735 (setq end (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2736 (gud-backward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2737 (setq begin (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2738 (cons begin end)))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2739
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2740 (defun gud-expr-compound-sep (span-start span-end)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2741 "Scan from SPAN-START to SPAN-END for punctuation characters.
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
2742 If `->' is found, return `?.'. If `.' is found, return `?.'.
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2743 If any other punctuation is found, return `??'.
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2744 If no punctuation is found, return `? '."
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2745 (let ((result ?\ )
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2746 (syntax))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2747 (while (< span-start span-end)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2748 (setq syntax (char-syntax (char-after span-start)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2749 (cond
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2750 ((= syntax ?\ ) t)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2751 ((= syntax ?.) (setq syntax (char-after span-start))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
2752 (cond
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2753 ((= syntax ?.) (setq result ?.))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2754 ((and (= syntax ?-) (= (char-after (+ span-start 1)) ?>))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2755 (setq result ?.)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2756 (setq span-start (+ span-start 1)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2757 (t (setq span-start span-end)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2758 (setq result ??)))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2759 (setq span-start (+ span-start 1)))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2760 result))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2761
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2762 (defun gud-expr-compound (first second)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2763 "Non-nil if concatenating FIRST and SECOND makes a single C expression.
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
2764 The two exprs are represented as a cons cells, where the car
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
2765 specifies the point in the current buffer that marks the beginning of the
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2766 expr and the cdr specifies the character after the end of the expr.
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2767 Link exprs of the form:
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2768 Expr -> Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2769 Expr . Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2770 Expr (Expr)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2771 Expr [Expr]
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2772 (Expr) Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2773 [Expr] Expr"
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2774 (let ((span-start (cdr first))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2775 (span-end (car second))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2776 (syntax))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2777 (setq syntax (gud-expr-compound-sep span-start span-end))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2778 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2779 ((= (car first) (car second)) nil)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2780 ((= (cdr first) (cdr second)) nil)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2781 ((= syntax ?.) t)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2782 ((= syntax ?\ )
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2783 (setq span-start (char-after (- span-start 1)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2784 (setq span-end (char-after span-end))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2785 (cond
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2786 ((= span-start ?)) t)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2787 ((= span-start ?]) t)
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2788 ((= span-end ?() t)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2789 ((= span-end ?[) t)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2790 (t nil)))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2791 (t nil))))
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
2792
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2793 (defun gud-find-class (f line)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2794 "Find fully qualified class in file F at line LINE.
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2795 This function uses the `gud-jdb-classpath' (and optional
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2796 `gud-jdb-sourcepath') list(s) to derive a file
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2797 pathname relative to its classpath directory. The values in
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2798 `gud-jdb-classpath' are assumed to have been converted to absolute
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2799 pathname standards using file-truename.
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2800 If F is visited by a buffer and its mode is CC-mode(Java),
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2801 syntactic information of LINE is used to find the enclosing (nested)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2802 class string which is appended to the top level
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2803 class of the file (using s to separate nested class ids)."
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2804 ;; Convert f to a standard representation and remove suffix
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2805 (if (and gud-jdb-use-classpath (or gud-jdb-classpath gud-jdb-sourcepath))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2806 (save-match-data
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2807 (let ((cplist (append gud-jdb-sourcepath gud-jdb-classpath))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2808 (fbuffer (get-file-buffer f))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2809 class-found)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2810 (setq f (file-name-sans-extension (file-truename f)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2811 ;; Search through classpath list for an entry that is
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2812 ;; contained in f
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2813 (while (and cplist (not class-found))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2814 (if (string-match (car cplist) f)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2815 (setq class-found
48679
672c6eac16e7 Use match-string.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48657
diff changeset
2816 (mapconcat 'identity
48922
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2817 (split-string
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2818 (substring f (+ (match-end 0) 1))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2819 "/") ".")))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2820 (setq cplist (cdr cplist)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2821 ;; if f is visited by a java(cc-mode) buffer, walk up the
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2822 ;; syntactic information chain and collect any 'inclass
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2823 ;; symbols until 'topmost-intro is reached to find out if
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2824 ;; point is within a nested class
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2825 (if (and fbuffer (equal (symbol-file 'java-mode) "cc-mode"))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2826 (save-excursion
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2827 (set-buffer fbuffer)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2828 (let ((nclass) (syntax)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2829 (pos (point)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2830 ;; While the c-syntactic information does not start
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2831 ;; with the 'topmost-intro symbol, there may be
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2832 ;; nested classes...
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2833 (while (not (eq 'topmost-intro
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2834 (car (car (c-guess-basic-syntax)))))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2835 ;; Check if the current position c-syntactic
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2836 ;; analysis has 'inclass
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2837 (setq syntax (c-guess-basic-syntax))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2838 (while
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2839 (and (not (eq 'inclass (car (car syntax))))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2840 (cdr syntax))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2841 (setq syntax (cdr syntax)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2842 (if (eq 'inclass (car (car syntax)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2843 (progn
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2844 (goto-char (cdr (car syntax)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2845 ;; Now we're at the beginning of a class
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2846 ;; definition. Find class name
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2847 (looking-at
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2848 "[A-Za-z0-9 \t\n]*?class[ \t\n]+\\([^ \t\n]+\\)")
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2849 (setq nclass
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2850 (append (list (match-string-no-properties 1))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2851 nclass)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2852 (setq syntax (c-guess-basic-syntax))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2853 (while (and (not (cdr (car syntax))) (cdr syntax))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2854 (setq syntax (cdr syntax)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2855 (goto-char (cdr (car syntax)))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2856 ))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2857 (string-match (concat (car nclass) "$") class-found)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2858 (setq class-found
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2859 (replace-match (mapconcat 'identity nclass "$")
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2860 t t class-found)))))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2861 (if (not class-found)
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2862 (message "gud-find-class: class for file %s not found!" f))
aa7d3d1a21a3 (gud-menu-map): Add jdb support for "run".
Pavel Janík <Pavel@Janik.cz>
parents: 48795
diff changeset
2863 class-found))
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2864 ;; Not using classpath - try class/source association list
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2865 (let ((class-found (rassoc f gud-jdb-class-source-alist)))
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2866 (if class-found
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2867 (car class-found)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2868 (message "gud-find-class: class for file %s not found in gud-jdb-class-source-alist!" f)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2869 nil))))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2870
48299
21b6ba166466 Fix feature name in `provide'.
Juanma Barranquero <lekktu@gmail.com>
parents: 48293
diff changeset
2871 (provide 'gud)
4016
27d35763dda9 Add (provide 'gud).
Roland McGrath <roland@gnu.org>
parents: 3930
diff changeset
2872
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
2873 ;;; gud.el ends here