annotate lisp/gud.el @ 48293:3a409a9620a7

(gud-find-file): Set up GDB tool bar. (gud-menu-map): New commands: run, goto. Enable some commands for gdba. (gud-query-cmdline): Pass default directory to gdba. (gdb): Defune gud-goto and gud-run. (gud-gdb-complete-command): Maybe use gdba-complete-filter. (gud-mode): Set up local tool bar. (gud-display-line): For gdba, call gdb-display-source-buffer. (gud-basic-call): For gdba, maybe delete the current prompt. (gud-tool-bar-map): New variable. (gud-read-address): Correction.
author Nick Roberts <nickrob@snap.net.nz>
date Thu, 14 Nov 2002 01:56:58 +0000
parents b82c4ff4d201
children 21b6ba166466
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.
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
50 Supported debuggers include gdb, sdb, dbx, xdb, perldb, pdb (Python), and jdb."
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
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
74 (defun gud-symbol (sym &optional soft minor-mode)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
75 "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
76 MINOR-MODE defaults to `gud-minor-mode.
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
77 The symbol returned is `gud-<MINOR-MODE>-<SYM>'.
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
78 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
79 (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
80 (funcall (if soft 'intern-soft 'intern)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
81 (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
82
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
83 (defun gud-val (sym &optional minor-mode)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
84 "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
85 (let ((sym (gud-symbol sym t minor-mode)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
86 (if (boundp sym) (symbol-value sym))))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
87
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
88 (defun gud-find-file (file)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
89 ;; Don't get confused by double slashes in the name that comes from GDB.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
90 (while (string-match "//+" file)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
91 (setq file (replace-match "/" t t file)))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
92 (let ((minor-mode gud-minor-mode)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
93 (buf (funcall gud-find-file file)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
94 (when buf
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
95 ;; Copy `gud-minor-mode' to the found buffer to turn on the menu.
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
96 (with-current-buffer buf
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
97 (set (make-local-variable 'gud-minor-mode) minor-mode)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
98 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
99 buf)))
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
100
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
101 (easy-mmode-defmap gud-menu-map
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
102 '(([refresh] "Refresh" . gud-refresh)
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
103 ([run] menu-item "Run" gud-run
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
104 :enable (memq gud-minor-mode '(gdba gdb)))
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
105 ([goto] menu-item "Continue to selection" gud-goto
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
106 :enable (memq gud-minor-mode '(gdba gdb)))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
107 ([remove] "Remove Breakpoint" . gud-remove)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
108 ([tbreak] menu-item "Temporary Breakpoint" gud-tbreak
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
109 :enable (memq gud-minor-mode '(gdba gdb sdb xdb)))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
110 ([break] "Set Breakpoint" . gud-break)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
111 ([up] menu-item "Up Stack" gud-up
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
112 :enable (memq gud-minor-mode '(gdba gdb dbx xdb jdb)))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
113 ([down] menu-item "Down Stack" gud-down
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
114 :enable (memq gud-minor-mode '(gdba gdb dbx xdb jdb)))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
115 ([print] "Print Expression" . gud-print)
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
116 ([display] menu-item "Display Expression" gud-display
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
117 :enable (eq gud-minor-mode 'gdba))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
118 ([finish] menu-item "Finish Function" gud-finish
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
119 :enable (memq gud-minor-mode '(gdba gdb xdb jdb)))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
120 ([stepi] "Step Instruction" . gud-stepi)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
121 ([step] "Step Line" . gud-step)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
122 ([next] "Next Line" . gud-next)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
123 ([cont] "Continue" . gud-cont))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
124 "Menu for `gud-mode'."
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
125 :name "Gud")
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
126
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
127 (easy-mmode-defmap gud-minor-mode-map
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
128 `(([menu-bar debug] . ("Gud" . ,gud-menu-map)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
129 "Map used in visited files.")
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
130
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
131 (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
132 (if m (setcdr m gud-minor-mode-map)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
133 (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
134
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
135 (defvar gud-mode-map
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
136 ;; 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
137 (make-sparse-keymap)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
138 "`gud-mode' keymap.")
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
139
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
140 ;; ======================================================================
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
141 ;; command definition
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
142
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
143 ;; 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
144 ;; 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
145 ;; user defined ones.
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
146
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
147 ;; 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
148 ;; 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
149 ;; 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
150 ;; 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
151 ;; 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
152
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
153 (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
154 "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
155 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
156 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
157
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
158 %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
159 %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
160 %d directory of current source file.
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
161 %l number of current source line
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
162 %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
163 %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
164 %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
165
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
166 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
167 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
168 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
169 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
170 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
171 we're in the GUD buffer)."
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
172 (list 'progn
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
173 (list 'defun func '(arg)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
174 (or doc "")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
175 '(interactive "p")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
176 (list 'gud-call cmd 'arg))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
177 (if key
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
178 (list 'define-key
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
179 '(current-local-map)
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
180 (concat "\C-c" key)
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
181 (list 'quote func)))
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
182 (if key
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
183 (list 'global-set-key
3343
d5fde107dbe3 (gud-def): Don't use gud-key-prefix at compile time.
Richard M. Stallman <rms@gnu.org>
parents: 2960
diff changeset
184 (list 'concat 'gud-key-prefix key)
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
185 (list 'quote func)))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
186
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
187 ;; 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
188 ;; (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
189 ;; 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
190 (defvar gud-last-frame nil)
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
191
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
192 ;; 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
193 ;; 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
194 ;; 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
195 (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
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 ;; 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
198 ;; 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
199 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
200 ;; Each entry must define the following at startup:
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
201 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
202 ;;<name>
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
203 ;; comint-prompt-regexp
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
204 ;; gud-<name>-massage-args
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
205 ;; 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
206 ;; gud-<name>-find-file
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
207 ;;
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
208 ;; 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
209 ;; debugger arguments before running the debugger.
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
210 ;;
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
211 ;; 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
212 ;; 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
213 ;; 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
214 ;; 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
215 ;; can filter the debugger's output, interpreting some and passing on
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
216 ;; the rest.
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
217 ;;
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
218 ;; 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
219 ;; 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
220 ;; something else.
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
221
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
222 ;; ======================================================================
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
223 ;; 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
224 (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
225
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
226 (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
227 "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
228
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
229 (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
230 "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
231 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
232
22734
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
233 (defvar gud-speedbar-key-map nil
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
234 "Keymap used when in the buffers display mode.")
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
235
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
236 (defun gud-install-speedbar-variables ()
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
237 "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
238 (if gud-speedbar-key-map
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
239 nil
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
240 (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
241
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
242 (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
243 (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
244 (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
245
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
246 (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
247 ;; 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
248 '(["Jump to stack frame" speedbar-edit-line t])
42706
be541feb06cc Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 41952
diff changeset
249 "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
250
22734
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
251 ;; Make sure our special speedbar mode is loaded
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
252 (if (featurep 'speedbar)
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
253 (gud-install-speedbar-variables)
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
254 (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
255
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
256 (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
257 "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
258 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
259 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
260 (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
261 (looking-at "Current Stack"))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
262 (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
263 nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
264 (setq gud-last-speedbar-buffer buffer)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
265 (let* ((ff (save-excursion (set-buffer buffer) gud-find-file))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
266 ;;(lf (save-excursion (set-buffer buffer) gud-last-last-frame))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
267 (frames
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
268 (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
269 (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
270 )
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
271 ;; Add more debuggers here!
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
272 (t
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
273 (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
274 nil))))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
275 (erase-buffer)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
276 (if (not frames)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
277 (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
278 (insert "Current Stack:\n"))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
279 (while frames
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
280 (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
281 (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
282 (progn
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
283 ; (speedbar-insert-button "[?]"
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
284 ; 'speedbar-button-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
285 ; nil nil nil t)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
286 (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
287 'speedbar-directory-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
288 nil nil nil t))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
289 ; (speedbar-insert-button "[+]"
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
290 ; 'speedbar-button-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
291 ; 'speedbar-highlight-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
292 ; '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
293 ; (car frames) t)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
294 (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
295 'speedbar-file-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
296 'speedbar-highlight-face
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
297 (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
298 '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
299 (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
300 (car frames) t))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
301 (setq frames (cdr frames)))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
302 ; (let ((selected-frame
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
303 ; (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
304 ; (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
305 ; (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
306 )
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
307 (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
308
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
309
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
310 ;; ======================================================================
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
311 ;; gdb functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
312
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
313 ;; 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
314 (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
315
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
316 (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
317 "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
318 :type 'string
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
319 :group 'gud)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
320
11960
5d3f2639cf3a (gud-gdb-marker-regexp): New var. Use path-separator.
Karl Heuer <kwzh@gnu.org>
parents: 11930
diff changeset
321 (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
322 ;; 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
323 ;; 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
324 ;; 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
325 (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
326 "\\([0-9]*\\)" ":" ".*\n"))
11960
5d3f2639cf3a (gud-gdb-marker-regexp): New var. Use path-separator.
Karl Heuer <kwzh@gnu.org>
parents: 11930
diff changeset
327
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
328 ;; 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
329 ;; 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
330 ;; 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
331 ;; 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
332 ;; 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
333 ;; filter.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
334 (defvar gud-marker-acc "")
7317
ce56b572b5c8 (gud-marker-acc): Use make-variable-buffer-local.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
335 (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
336
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
337 (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
338 (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
339 (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
340
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
341 ;; 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
342 (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
343 (setq
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
344
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
345 ;; 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
346 gud-last-frame
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
347 (cons (substring gud-marker-acc (match-beginning 1) (match-end 1))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
348 (string-to-int (substring gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
349 (match-beginning 2)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
350 (match-end 2))))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
351
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
352 ;; 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
353 ;; 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
354 output (concat output
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
355 (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
356
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
357 ;; 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
358 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
359
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
360 ;; 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
361 ;; beginning of another marker? If it does, then keep it in
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
362 ;; 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
363 ;; 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
364 ;; test for marker starts.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
365 (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
366 (progn
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
367 ;; 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
368 (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
369 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
370
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
371 ;; 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
372 (setq gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
373 (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
374
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
375 (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
376 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
377
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
378 output))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
379
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
380 (defun gud-gdb-find-file (f)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
381 (find-file-noselect f 'nowarn))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
382
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
383 (easy-mmode-defmap gud-minibuffer-local-map
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
384 '(("\C-i" . comint-dynamic-complete-filename))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
385 "Keymap for minibuffer prompting of gud startup command."
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
386 :inherit minibuffer-local-map)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
387
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
388 (defun gud-query-cmdline (minor-mode &optional init)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
389 (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
390 (cmd-name (gud-val 'command-name minor-mode)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
391 (unless (boundp hist-sym) (set hist-sym nil))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
392 (read-from-minibuffer
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
393 (format "Run %s (like this): " minor-mode)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
394 (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
395 (concat (or cmd-name (symbol-name minor-mode))
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
396 " " default-directory
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
397 (or init
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
398 (let ((file nil))
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
399 (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
400 (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
401 (not (file-directory-p f))
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
402 (or (not file)
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
403 (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
404 (setq file f)))))))
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
405 gud-minibuffer-local-map nil
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
406 hist-sym)))
6238
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
407
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
408 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
409 (defun gdb (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
410 "Run gdb on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
411 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
412 and source-file directory for your debugger."
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
413 (interactive (list (gud-query-cmdline 'gdb)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
414
48278
b82c4ff4d201 (gdb): Undo 10-26 change.
Richard M. Stallman <rms@gnu.org>
parents: 48011
diff changeset
415 (gud-common-init command-line nil
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
416 'gud-gdb-marker-filter 'gud-gdb-find-file)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
417 (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
418
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
419 (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
420 (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
421 (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
422 (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
423 (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
424 (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
425 (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
426 (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
427 (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
428
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
429 (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
430 (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
431 (gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.")
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
432 (gud-def gud-goto "until %l" "\C-u" "Continue up to current line.")
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
433 (gud-def gud-run "run" nil "Run the program.")
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
434
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
435 (local-set-key "\C-i" 'gud-gdb-complete-command)
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
436 (local-set-key [menu-bar debug tbreak] '("Temporary Breakpoint" . gud-tbreak))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
437 (local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
438 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
439 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
440 (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
441 (setq paragraph-start comint-prompt-regexp)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
442 (run-hooks 'gdb-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
443 )
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
444
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
445 ;; 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
446 ;; 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
447 ;; 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
448
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
449 ;; The completion process filter indicates when it is finished.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
450 (defvar gud-gdb-complete-in-progress)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
451
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
452 ;; Since output may arrive in fragments we accumulate partials strings here.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
453 (defvar gud-gdb-complete-string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
454
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
455 ;; We need to know how much of the completion to chop off.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
456 (defvar gud-gdb-complete-break)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
457
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
458 ;; The completion list is constructed by the process filter.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
459 (defvar gud-gdb-complete-list)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
460
6535
01db0be5fec8 (gud-comint-buffer): Move defvar up.
Richard M. Stallman <rms@gnu.org>
parents: 6531
diff changeset
461 (defvar gud-comint-buffer nil)
01db0be5fec8 (gud-comint-buffer): Move defvar up.
Richard M. Stallman <rms@gnu.org>
parents: 6531
diff changeset
462
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
463 (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
464 "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
465 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
466 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
467 (interactive)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
468 (let* ((end (point))
30643
4a6ff467897e (gud-gdb-complete-command): Use comint-line-beginning-position.
Miles Bader <miles@gnu.org>
parents: 28992
diff changeset
469 (command (buffer-substring (comint-line-beginning-position) end))
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
470 command-word)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
471 ;; Find the word break. This match will always succeed.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
472 (string-match "\\(\\`\\| \\)\\([^ ]*\\)\\'" command)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
473 (setq gud-gdb-complete-break (match-beginning 2)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
474 command-word (substring command gud-gdb-complete-break))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
475 ;; Temporarily install our filter function.
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
476 (let ((gud-marker-filter (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
477 'gdba-complete-filter
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
478 'gud-gdb-complete-filter)))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
479 ;; Issue the command to GDB.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
480 (gud-basic-call (concat "complete " command))
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
481 (setq gud-gdb-complete-in-progress t
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
482 gud-gdb-complete-string nil
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
483 gud-gdb-complete-list nil)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
484 ;; Slurp the output.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
485 (while gud-gdb-complete-in-progress
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
486 (accept-process-output (get-buffer-process gud-comint-buffer))))
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
487 ;; Protect against old versions of GDB.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
488 (and gud-gdb-complete-list
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
489 (string-match "^Undefined command: \"complete\""
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
490 (car gud-gdb-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
491 (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
492 ;; Sort the list like readline.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
493 (setq gud-gdb-complete-list
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
494 (sort gud-gdb-complete-list (function string-lessp)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
495 ;; Remove duplicates.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
496 (let ((first gud-gdb-complete-list)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
497 (second (cdr gud-gdb-complete-list)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
498 (while second
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
499 (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
500 (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
501 (setq first second
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
502 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
503 ;; 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
504 ;; and it contains an odd number of unquoted single quotes.
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
505 (and (= (length gud-gdb-complete-list) 1)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
506 (let ((str (car gud-gdb-complete-list))
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
507 (pos 0)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
508 (count 0))
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
509 (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
510 (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
511 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
512 (and (= (mod count 2) 1)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
513 (setq gud-gdb-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
514 ;; Let comint handle the rest.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
515 (comint-dynamic-simple-complete command-word gud-gdb-complete-list)))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
516
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
517 ;; 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
518 ;; output of GDB up to the next prompt and build the completion list.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
519 (defun gud-gdb-complete-filter (string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
520 (setq string (concat gud-gdb-complete-string string))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
521 (while (string-match "\n" string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
522 (setq gud-gdb-complete-list
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
523 (cons (substring string gud-gdb-complete-break (match-beginning 0))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
524 gud-gdb-complete-list))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
525 (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
526 (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
527 (progn
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
528 (setq gud-gdb-complete-in-progress nil)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
529 string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
530 (progn
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
531 (setq gud-gdb-complete-string string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
532 "")))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
533
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
534 ;; gdb speedbar functions
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
535
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
536 (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
537 "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
538 (speedbar-with-attached-buffer
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
539 (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
540 (sit-for 1)))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
541
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
542 (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
543 "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
544
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
545 (defvar gud-gdb-fetched-stack-frame-list nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
546 "List of 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
547
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
548 ;(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
549 ; ;; checkdoc-params: (indent)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
550 ; "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
551 ;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
552 ; (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
553 ; (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
554 ;
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
555 ; (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
556 ;
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
557 ; ))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
558
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
559 (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
560 "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
561 (let ((newlst nil)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
562 (gud-gdb-fetched-stack-frame-list nil))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
563 (gud-gdb-run-command-fetch-lines "backtrace" buffer)
22734
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
564 (if (and (car gud-gdb-fetched-stack-frame-list)
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
565 (string-match "No stack" (car gud-gdb-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
566 ;; 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
567 nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
568 (while gud-gdb-fetched-stack-frame-list
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
569 (let ((e (car gud-gdb-fetched-stack-frame-list))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
570 (name nil) (num nil))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
571 (if (not (or
22734
09db8bddedc5 (gud-speedbar-key-map) New variable.
Karl Heuer <kwzh@gnu.org>
parents: 22446
diff changeset
572 (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
573 (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
574 (if (not (string-match
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
575 "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
576 nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
577 (setcar newlst
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
578 (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
579 (nth 1 (car newlst))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
580 (match-string 1 e)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
581 (match-string 2 e))))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
582 (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
583 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
584 (setq newlst
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
585 (cons
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
586 (if (string-match
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
587 "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
588 (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
589 (match-string 2 e))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
590 (list name num))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
591 newlst))))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
592 (setq gud-gdb-fetched-stack-frame-list
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
593 (cdr gud-gdb-fetched-stack-frame-list)))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
594 (nreverse newlst))))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
595
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
596 ;(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
597 ; "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
598 ; )
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
599
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
600 (defun gud-gdb-run-command-fetch-lines (command buffer)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
601 "Run COMMAND, and return when `gud-gdb-fetched-stack-frame-list' is full.
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
602 BUFFER is the GUD buffer in which to run the command."
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
603 (save-excursion
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
604 (set-buffer buffer)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
605 (if (save-excursion
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
606 (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
607 (forward-line 0)
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
608 (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
609 nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
610 ;; 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
611 ;; frame instead.
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
612 (let ((gud-marker-filter 'gud-gdb-speedbar-stack-filter))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
613 ;; 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
614 (gud-basic-call command)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
615 (setq gud-gdb-complete-in-progress t ;; use this flag for our purposes.
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
616 gud-gdb-complete-string nil
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
617 gud-gdb-complete-list nil)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
618 ;; Slurp the output.
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
619 (while gud-gdb-complete-in-progress
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
620 (accept-process-output (get-buffer-process gud-comint-buffer)))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
621 (setq 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
622 gud-gdb-fetched-stack-frame-list
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
623 (nreverse gud-gdb-fetched-stack-frame-list))))))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
624
20756
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
625 (defun gud-gdb-speedbar-stack-filter (string)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
626 ;; checkdoc-params: (string)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
627 "Filter used to read in the current GDB stack."
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
628 (setq string (concat gud-gdb-fetched-stack-frame string))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
629 (while (string-match "\n" string)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
630 (setq gud-gdb-fetched-stack-frame-list
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
631 (cons (substring string 0 (match-beginning 0))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
632 gud-gdb-fetched-stack-frame-list))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
633 (setq string (substring string (match-end 0))))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
634 (if (string-match comint-prompt-regexp string)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
635 (progn
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
636 (setq gud-gdb-complete-in-progress nil)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
637 string)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
638 (progn
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
639 (setq gud-gdb-complete-string string)
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
640 "")))
eccadd41e2a5 Added gud-speedbar-buttons, and support for GDB buttons.
Eric M. Ludlam <zappo@gnu.org>
parents: 20425
diff changeset
641
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
642
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
643 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
644 ;; sdb functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
645
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
646 ;; 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
647 (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
648
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
649 (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
650 "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
651
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
652 (defvar gud-sdb-lastfile nil)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
653
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
654 (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
655 (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
656 (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
657 (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
658 ;; 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
659 (while
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
660 (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
661 ;; 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
662 ((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
663 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
664 (setq gud-last-frame
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 (cons
13797
d00c8f107a39 (gud-sdb-marker-filter): Modify the regexp for sysVR3 to
Karl Heuer <kwzh@gnu.org>
parents: 13681
diff changeset
666 (substring gud-marker-acc (match-beginning 3) (match-end 3))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
667 (string-to-int
13797
d00c8f107a39 (gud-sdb-marker-filter): Modify the regexp for sysVR3 to
Karl Heuer <kwzh@gnu.org>
parents: 13681
diff changeset
668 (substring gud-marker-acc (match-beginning 4) (match-end 4))))))
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
669 ;; 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
670 ((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
671 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
672 (setq gud-sdb-lastfile
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 (substring gud-marker-acc (match-beginning 2) (match-end 2)))
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
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
675 (cons
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
676 gud-sdb-lastfile
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
677 (string-to-int
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
678 (substring gud-marker-acc (match-beginning 3) (match-end 3))))))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
679 ;; 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
680 ((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
681 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
682 (setq gud-sdb-lastfile
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
683 (substring gud-marker-acc (match-beginning 2) (match-end 2))))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
684 ((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
685 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
686 (setq gud-last-frame
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
687 (cons
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 gud-sdb-lastfile
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
689 (string-to-int
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
690 (substring gud-marker-acc (match-beginning 1) (match-end 1))))))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
691 (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
692 (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
693 (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
694
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 ;; 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
696 (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
697 (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
698
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 ;; 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
700 (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
701 string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
702
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
703 (defun gud-sdb-find-file (f)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
704 (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
705
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
706 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
707 (defun sdb (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
708 "Run sdb on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
709 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
710 and source-file directory for your debugger."
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
711 (interactive (list (gud-query-cmdline 'sdb)))
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
712
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
713 (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
714 (not (and (boundp 'tags-file-name)
1ce5d720b347 (sdb): Handle tags-file-name as nil.
Richard M. Stallman <rms@gnu.org>
parents: 7429
diff changeset
715 (stringp tags-file-name)
1ce5d720b347 (sdb): Handle tags-file-name as nil.
Richard M. Stallman <rms@gnu.org>
parents: 7429
diff changeset
716 (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
717 (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
718
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
719 (gud-common-init command-line nil
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
720 '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
721 (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
722
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
723 (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
724 (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
725 (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
726 (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
727 (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
728 (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
729 (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
730 (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
731
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
732 (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
733 (setq paragraph-start comint-prompt-regexp)
10217
d112e49af18b (gdb): Correct tbreak doc string.
Richard M. Stallman <rms@gnu.org>
parents: 10203
diff changeset
734 (local-set-key [menu-bar debug tbreak]
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
735 '("Temporary Breakpoint" . gud-tbreak))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
736 (run-hooks 'sdb-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
737 )
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
738
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
739 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
740 ;; dbx functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
741
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
742 ;; 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
743 (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
744
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
745 (defcustom gud-dbx-directories nil
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
746 "*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
747 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
748 will be known to dbx.
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
749
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
750 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
751 containing the executable being debugged."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
752 :type '(choice (const :tag "Current Directory" nil)
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
753 (repeat :value ("")
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
754 directory))
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
755 :group 'gud)
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
756
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
757 (defun gud-dbx-massage-args (file args)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
758 (nconc (let ((directories gud-dbx-directories)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
759 (result nil))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
760 (while directories
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
761 (setq result (cons (car directories) (cons "-I" result)))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
762 (setq directories (cdr directories)))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
763 (nreverse result))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
764 args))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
765
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
766 (defun gud-dbx-file-name (f)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
767 "Transform a relative file name to an absolute file name, for dbx."
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
768 (let ((result nil))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
769 (if (file-exists-p f)
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
770 (setq result (expand-file-name f))
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
771 (let ((directories gud-dbx-directories))
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
772 (while directories
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
773 (let ((path (concat (car directories) "/" f)))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
774 (if (file-exists-p path)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
775 (setq result (expand-file-name path)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
776 directories nil)))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
777 (setq directories (cdr directories)))))
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
778 result))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
779
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
780 (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
781 (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
782
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 (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
784 ;; 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
785 (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
786 "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
787 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
788 (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
789 "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
790 gud-marker-acc start))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
791 (setq gud-last-frame
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
792 (cons
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
793 (substring gud-marker-acc (match-beginning 2) (match-end 2))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
794 (string-to-int
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
795 (substring gud-marker-acc (match-beginning 1) (match-end 1))))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
796 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
797
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
798 ;; 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
799 (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
800 (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
801
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
802 ;; 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
803 ;; 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
804 ;; unnecessary concat during the next call.
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
805 (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
806 (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
807 (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
808 nil)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
809 string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
810
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
811 ;; 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
812 ;; 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
813 (defvar gud-mips-p
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
814 (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
815 ;; 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
816 (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
817 ;; 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
818 (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
819 (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
820 "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
821
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
822 (defun gud-mipsdbx-massage-args (file args)
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
823 (cons "-emacs" args))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
824
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
825 ;; 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
826 ;; 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
827 (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
828 (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
829 (let ((output ""))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
830
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
831 ;; 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
832 (while (string-match
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
833 ;; 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
834 ;; 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
835 "[][ 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
836 gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
837 (setq
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
838
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
839 ;; 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
840 gud-last-frame
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
841 (cons (substring gud-marker-acc (match-beginning 1) (match-end 1))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
842 (string-to-int (substring gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
843 (match-beginning 2)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
844 (match-end 2))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
845
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
846 ;; 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
847 ;; 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
848 output (concat output
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
849 (substring gud-marker-acc 0 (match-beginning 0)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
850
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
851 ;; 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
852 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
853
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
854 ;; 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
855 ;; 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
856 ;; 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
857 ;; 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
858 ;; test for marker starts.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
859 (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
860 (progn
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
861 ;; 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
862 (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
863 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
864
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
865 ;; 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
866 (setq gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
867 (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
868
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
869 (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
870 gud-marker-acc ""))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
871
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
872 output))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
873
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
874 ;; 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
875 ;; 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
876 ;; `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
877 ;; 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
878 ;; 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
879 ;; 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
880 ;; 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
881 ;; `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
882 ;; 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
883 ;; 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
884 ;; 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
885 ;; 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
886 ;; 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
887 ;; 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
888 ;; 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
889
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
890 (defvar gud-irix-p
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
891 (and (string-match "^mips-[^-]*-irix" system-configuration)
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
892 (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
893 "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
894 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
895 a better solution in 6.1 upwards.")
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
896 (defvar gud-dbx-use-stopformat-p
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
897 (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
898 "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
899 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
900 `gud-dbx-marker-filter'.")
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
901 ;; [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
902 ;; 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
903 ;; 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
904 ;; 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
905 ;; 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
906 ;; `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
907 ;; 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
908 ;; 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
909 ;; 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
910 ;; 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
911 ;; 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
912 ;; 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
913
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
914 ;; 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
915 ;; 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
916 ;; 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
917 ;; 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
918 ;; -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
919 ;; 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
920
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
921 ;; 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
922 (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
923 (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
924 (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
925 (string-match ".*\012" string))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
926 (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
927 gud-marker-acc "")
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
928 (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
929 (if result
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
930 (cond
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
931 ;; 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
932 ;; [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
933 ;; 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
934 ;; 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
935 ((string-match
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
936 "^\\(\\[[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
937 result)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
938 ;; 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
939 ;; 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
940 (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
941 "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
942 ;; 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
943 ;; .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
944 ;; (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
945 ((string-match
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
946 "^[^ ][^[]*\\[\"\\([^\"]+\\)\":\\([0-9]+\\), [^]]+]\n"
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
947 result)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
948 (let ((file (substring result (match-beginning 1)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
949 (match-end 1))))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
950 (if (file-exists-p file)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
951 (setq gud-last-frame
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
952 (cons
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
953 (substring
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
954 result (match-beginning 1) (match-end 1))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
955 (string-to-int
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
956 (substring
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
957 result (match-beginning 2) (match-end 2)))))))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
958 result)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
959 ((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
960 "\032\032\\([0-9]*\\):\\(.*\\)\n" result)
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
961 (let ((file (gud-dbx-file-name
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
962 (substring result (match-beginning 2) (match-end 2)))))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
963 (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
964 (setq gud-last-frame
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
965 (cons
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
966 file
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
967 (string-to-int
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
968 (substring
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
969 result (match-beginning 1) (match-end 1)))))))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
970 (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
971 (or result "")))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
972
18098
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
973 (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
974 "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
975 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
976
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
977 ;; 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
978 ;; 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
979 ;; 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
980 ;; 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
981 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
982 ;; (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
983 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
984 ;; 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
985 ;; number), and
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
986 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
987 ;; 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
988 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
989 ;; from signals and
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
990 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
991 ;; 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
992 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
993 ;; from up/down/where.
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
994
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
995 (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
996 (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
997 (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
998 string))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
999 (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
1000 " 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
1001 start)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1002 ;; 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
1003 (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
1004 (setq gud-last-frame
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1005 (cons
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1006 (substring gud-marker-acc (match-beginning 4) (match-end 4))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1007 (string-to-int (substring gud-marker-acc
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1008 (match-beginning 3) (match-end 3))))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1009 start (match-end 0)))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1010
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1011 ;; 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
1012 (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
1013 (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
1014
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1015 ;; 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
1016 ;; 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
1017 ;; unnecessary concat during the next call.
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1018 (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
1019 (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
1020 (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
1021 nil)))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1022 string)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1023
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1024 (defun gud-dbx-find-file (f)
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
1025 (save-excursion
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
1026 (let ((realf (gud-dbx-file-name f)))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
1027 (if realf
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1028 (find-file-noselect realf)))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1029
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
1030 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1031 (defun dbx (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1032 "Run dbx on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1033 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1034 and source-file directory for your debugger."
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1035 (interactive (list (gud-query-cmdline 'dbx)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1036
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1037 (cond
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1038 (gud-mips-p
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1039 (gud-common-init command-line 'gud-mipsdbx-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1040 'gud-mipsdbx-marker-filter 'gud-dbx-find-file))
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1041 (gud-irix-p
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1042 (gud-common-init command-line 'gud-dbx-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1043 'gud-irixdbx-marker-filter 'gud-dbx-find-file))
18098
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1044 (gud-dgux-p
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1045 (gud-common-init command-line 'gud-dbx-massage-args
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
1046 'gud-dguxdbx-marker-filter 'gud-dbx-find-file))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1047 (t
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1048 (gud-common-init command-line 'gud-dbx-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1049 'gud-dbx-marker-filter 'gud-dbx-find-file)))
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
1050
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1051 (set (make-local-variable 'gud-minor-mode) 'dbx)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1052
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1053 (cond
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
1054 (gud-mips-p
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1055 (gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.")
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1056 (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
1057 (gud-def gud-break "stop at \"%f\":%l"
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1058 "\C-b" "Set breakpoint at current line.")
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1059 (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
1060 (gud-irix-p
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1061 (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
1062 "\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
1063 (gud-def gud-finish "return" "\C-f" "Finish executing current function.")
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1064 (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
1065 "<" "Up (numeric arg) stack frames.")
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
1066 (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
1067 ">" "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
1068 ;; 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
1069 (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
1070 "printf \"\032\032%1d:\",(int)$curline;file\n"))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1071 (t
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1072 (gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.")
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1073 (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
1074 (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
1075 "\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
1076 (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
1077 (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
1078 "set $stopformat=1\n"))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1079
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
1080 (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
1081 (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
1082 (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
1083 (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
1084 (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
1085 (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
1086
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1087 (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
1088 (setq paragraph-start comint-prompt-regexp)
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
1089 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
1090 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1091 (run-hooks 'dbx-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1092 )
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1093
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1094 ;; ======================================================================
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1095 ;; xdb (HP PARISC debugger) functions
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1096
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1097 ;; 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
1098 (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
1099
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1100 (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
1101 "*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
1102 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
1103 will be known to xdb.
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1104
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1105 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
1106 containing the executable being debugged."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1107 :type '(choice (const :tag "Current Directory" nil)
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1108 (repeat :value ("")
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1109 directory))
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1110 :group 'gud)
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1111
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1112 (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
1113 (nconc (let ((directories gud-xdb-directories)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1114 (result nil))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1115 (while directories
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1116 (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
1117 (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
1118 (nreverse result))
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1119 args))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1120
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1121 (defun gud-xdb-file-name (f)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1122 "Transform a relative pathname to a full pathname in xdb mode"
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1123 (let ((result nil))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1124 (if (file-exists-p f)
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1125 (setq result (expand-file-name f))
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1126 (let ((directories gud-xdb-directories))
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1127 (while directories
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1128 (let ((path (concat (car directories) "/" f)))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1129 (if (file-exists-p path)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1130 (setq result (expand-file-name path)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1131 directories nil)))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1132 (setq directories (cdr directories)))))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1133 result))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1134
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1135 ;; 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
1136 (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
1137 (let (result)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1138 (if (or (string-match comint-prompt-regexp string)
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1139 (string-match ".*\012" string))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1140 (setq result (concat gud-marker-acc string)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1141 gud-marker-acc "")
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
1142 (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
1143 (if result
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1144 (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
1145 result)
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1146 (string-match "[^: \t]+:[ \t]+\\([^:]+\\): [^:]+: \\([0-9]+\\):"
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1147 result))
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1148 (let ((line (string-to-int (match-string 2 result)))
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1149 (file (gud-xdb-file-name (match-string 1 result))))
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1150 (if file
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1151 (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
1152 (or result "")))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1153
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1154 (defun gud-xdb-find-file (f)
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
1155 (save-excursion
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
1156 (let ((realf (gud-xdb-file-name f)))
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
1157 (if realf
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1158 (find-file-noselect realf)))))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1159
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1160 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1161 (defun xdb (command-line)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1162 "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
1163 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
1164 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
1165
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
1166 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
1167 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
1168 (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
1169
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1170 (gud-common-init command-line 'gud-xdb-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1171 'gud-xdb-marker-filter 'gud-xdb-find-file)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1172 (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
1173
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1174 (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
1175 (gud-def gud-tbreak "b %f:%l\\t" "\C-t"
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1176 "Set temporary breakpoint at current line.")
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1177 (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
1178 (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
1179 (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
1180 (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
1181 (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
1182 (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
1183 (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
1184 (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
1185
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1186 (setq comint-prompt-regexp "^>")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
1187 (setq paragraph-start comint-prompt-regexp)
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
1188 (local-set-key [menu-bar debug tbreak] '("Temporary Breakpoint" . gud-tbreak))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
1189 (local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
1190 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
1191 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1192 (run-hooks 'xdb-mode-hook))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1193
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1194 ;; ======================================================================
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1195 ;; perldb functions
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1196
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1197 ;; History of argument lists passed to perldb.
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1198 (defvar gud-perldb-history nil)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1199
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1200 (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
1201 "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
1202 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
1203 \"-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
1204 ;; 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
1205 ;; arguments ?
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1206 (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
1207 (seen-e nil)
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1208 (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
1209
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1210 ;; 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
1211 (while (and args
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1212 (string-match "^-" (car args))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1213 (not (equal "-" (car args)))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1214 (not (equal "--" (car args))))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1215 (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
1216 ;; -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
1217 (or (funcall shift)
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1218 ;; -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
1219 (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
1220 (setq seen-e t))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1221 (funcall shift))
26294
b1d85e2a1cae (gud-perldb-massage-args): Massage correctly in the
Gerd Moellmann <gerd@gnu.org>
parents: 25601
diff changeset
1222
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
1223 (unless seen-e
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1224 (if (or (not args)
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1225 (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
1226 (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
1227 ;; 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
1228 (funcall shift))
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1229
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1230 ;; 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
1231 ;; as -e macs.
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1232 (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
1233 (funcall shift)
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
1234 (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
1235
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
1236 (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
1237 (while args
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1238 (funcall shift))
26294
b1d85e2a1cae (gud-perldb-massage-args): Massage correctly in the
Gerd Moellmann <gerd@gnu.org>
parents: 25601
diff changeset
1239
26351
861868d5730a (gud-perldb-massage-args): Handle the case "perl -e 0"
Gerd Moellmann <gerd@gnu.org>
parents: 26294
diff changeset
1240 (nreverse new-args)))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1241
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1242 ;; 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
1243 ;; 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
1244 ;; 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
1245 ;; 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
1246 ;; 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
1247 ;; filter.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1248 (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
1249 (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
1250 (let ((output ""))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1251
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1252 ;; 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
1253 (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
1254 gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1255 (setq
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1256
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1257 ;; 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
1258 gud-last-frame
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1259 (cons (substring gud-marker-acc (match-beginning 1) (match-end 1))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1260 (string-to-int (substring gud-marker-acc
16327
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
1261 (match-beginning 3)
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
1262 (match-end 3))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1263
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1264 ;; 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
1265 ;; 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
1266 output (concat output
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1267 (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
1268
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1269 ;; 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
1270 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
1271
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1272 ;; 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
1273 ;; beginning of another marker? If it does, then keep it in
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1274 ;; 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
1275 ;; 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
1276 ;; test for marker starts.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1277 (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
1278 (progn
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1279 ;; 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
1280 (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
1281 0 (match-beginning 0))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1282
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1283 ;; 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
1284 (setq gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1285 (substring gud-marker-acc (match-beginning 0))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1286
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1287 (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
1288 gud-marker-acc ""))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1289
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1290 output))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1291
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1292 (defun gud-perldb-find-file (f)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1293 (find-file-noselect f))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1294
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1295 (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
1296 "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
1297 :type 'string
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1298 :group 'gud)
15755
95be49f33453 (perldb-command-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15624
diff changeset
1299
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1300 ;;;###autoload
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1301 (defun perldb (command-line)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1302 "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
1303 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
1304 and source-file directory for your debugger."
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1305 (interactive
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1306 (list (gud-query-cmdline 'perldb
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1307 (concat (or (buffer-file-name) "-e 0") " "))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1308
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1309 (gud-common-init command-line 'gud-perldb-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1310 'gud-perldb-marker-filter 'gud-perldb-find-file)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1311 (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
1312
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1313 (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
1314 (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
1315 (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
1316 (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
1317 (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
1318 ; (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
1319 ; (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
1320 ; (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
1321 (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
1322
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1323 (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
1324 (setq paragraph-start comint-prompt-regexp)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1325 (run-hooks 'perldb-mode-hook))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1326
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1327 ;; ======================================================================
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1328 ;; pdb (Python debugger) functions
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1329
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1330 ;; History of argument lists passed to pdb.
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1331 (defvar gud-pdb-history nil)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1332
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1333 ;; 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
1334 ;; Either file or function name may be omitted: "> <string>(0)?()"
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1335 (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
1336 "^> \\([-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
1337 (defvar gud-pdb-marker-regexp-file-group 1)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1338 (defvar gud-pdb-marker-regexp-line-group 2)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1339 (defvar gud-pdb-marker-regexp-fnname-group 3)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1340
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1341 (defvar gud-pdb-marker-regexp-start "^> ")
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1342
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1343 ;; 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
1344 ;; 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
1345 ;; 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
1346 ;; 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
1347 ;; 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
1348 ;; filter.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1349 (defun gud-pdb-marker-filter (string)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1350 (setq gud-marker-acc (concat gud-marker-acc string))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1351 (let ((output ""))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1352
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1353 ;; Process all the complete markers in this chunk.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1354 (while (string-match gud-pdb-marker-regexp gud-marker-acc)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1355 (setq
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1356
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1357 ;; Extract the frame position from the marker.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1358 gud-last-frame
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1359 (let ((file (match-string gud-pdb-marker-regexp-file-group
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1360 gud-marker-acc))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1361 (line (string-to-int
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1362 (match-string gud-pdb-marker-regexp-line-group
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1363 gud-marker-acc))))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1364 (if (string-equal file "<string>")
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1365 gud-last-frame
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1366 (cons file line)))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1367
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1368 ;; Output everything instead of the below
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1369 output (concat output (substring gud-marker-acc 0 (match-end 0)))
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1370 ;; ;; Append any text before the marker to the output we're going
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1371 ;; ;; to return - we don't include the marker in this text.
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1372 ;; output (concat output
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1373 ;; (substring gud-marker-acc 0 (match-beginning 0)))
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1374
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1375 ;; Set the accumulator to the remaining text.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1376 gud-marker-acc (substring gud-marker-acc (match-end 0))))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1377
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1378 ;; Does the remaining text look like it might end with the
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1379 ;; beginning of another marker? If it does, then keep it in
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1380 ;; 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
1381 ;; 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
1382 ;; test for marker starts.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1383 (if (string-match gud-pdb-marker-regexp-start gud-marker-acc)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1384 (progn
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1385 ;; Everything before the potential marker start can be output.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1386 (setq output (concat output (substring gud-marker-acc
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1387 0 (match-beginning 0))))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1388
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1389 ;; Everything after, we save, to combine with later input.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1390 (setq gud-marker-acc
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1391 (substring gud-marker-acc (match-beginning 0))))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1392
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1393 (setq output (concat output gud-marker-acc)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1394 gud-marker-acc ""))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1395
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1396 output))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1397
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1398 (defun gud-pdb-find-file (f)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1399 (find-file-noselect f))
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1400
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1401 (defcustom gud-pdb-command-name "pdb"
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1402 "File name for executing the Python debugger.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1403 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
1404 :type 'string
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1405 :group 'gud)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1406
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1407 ;;;###autoload
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1408 (defun pdb (command-line)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1409 "Run pdb on program FILE in buffer `*gud-FILE*'.
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1410 The directory containing FILE becomes the initial working directory
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1411 and source-file directory for your debugger."
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1412 (interactive
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1413 (list (gud-query-cmdline 'pdb)))
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1414
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
1415 (gud-common-init command-line nil
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1416 'gud-pdb-marker-filter 'gud-pdb-find-file)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
1417 (set (make-local-variable 'gud-minor-mode) 'pdb)
22173
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1418
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1419 (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
1420 (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
1421 (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
1422 (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
1423 (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
1424 (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
1425 (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
1426 (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
1427 (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
1428 ;; Is this right?
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1429 (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
1430
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1431 (local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1432 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1433 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1434 ;; (setq comint-prompt-regexp "^(.*pdb[+]?) *")
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1435 (setq comint-prompt-regexp "^(Pdb) *")
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1436 (setq paragraph-start comint-prompt-regexp)
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1437 (run-hooks 'pdb-mode-hook))
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1438
ad7d4feb4d64 Support pdb.
Richard M. Stallman <rms@gnu.org>
parents: 22159
diff changeset
1439 ;; ======================================================================
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1440 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1441 ;; JDB support.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1442 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1443 ;; AUTHOR: Derek Davies <ddavies@world.std.com>
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1444 ;; 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
1445 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1446 ;; CREATED: Sun Feb 22 10:46:38 1998 Derek Davies.
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1447 ;; UPDATED: Nov 11, 2001 Zoltan Kemenczy
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1448 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1449 ;; INVOCATION NOTES:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1450 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1451 ;; You invoke jdb-mode with:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1452 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1453 ;; M-x jdb <enter>
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1454 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1455 ;; It responds with:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1456 ;;
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1457 ;; Run jdb (like this): jdb
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1458 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1459 ;; 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
1460 ;; 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
1461 ;; 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
1462 ;; 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
1463 ;; command line switches (search forward for '-classpath').
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1464 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1465 ;; You should see something like the following:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1466 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1467 ;; Current directory is ~/src/java/hello/
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1468 ;; Initializing jdb...
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1469 ;; 0xed2f6628:class(hello)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1470 ;; >
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1471 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1472 ;; To set an initial breakpoint try:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1473 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1474 ;; > stop in hello.main
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1475 ;; Breakpoint set in hello.main
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1476 ;; >
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1477 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1478 ;; To execute the program type:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1479 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1480 ;; > run
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1481 ;; run hello
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1482 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1483 ;; Breakpoint hit: running ...
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1484 ;; hello.main (hello:12)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1485 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1486 ;; 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
1487 ;; 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
1488 ;; 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
1489 ;; 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
1490 ;;
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1491 ;; 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
1492 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1493 ;; KNOWN PROBLEMS AND FIXME's:
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1494 ;;
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1495 ;; 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
1496 ;;
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1497 ;; 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
1498 ;;
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1499 ;; 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
1500 ;; 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
1501 ;; 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
1502 ;; The same applies for "-sourcepath".
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1503 ;;
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1504 ;; 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
1505 ;; 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
1506 ;; `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
1507 ;; 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
1508 ;;
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1509 ;; 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
1510 ;; 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
1511 ;; 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
1512 ;;
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1513 ;; 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
1514 ;; 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
1515 ;; 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
1516 ;; 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
1517 ;; 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
1518 ;; 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
1519 ;; 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
1520 ;; 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
1521 ;; 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
1522 ;; 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
1523 ;; 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
1524 ;;
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1525 ;; ======================================================================
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1526 ;; gud jdb variables and functions
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1527
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1528 (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
1529 "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
1530 :type 'string
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1531 :group 'gud)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1532
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1533 (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
1534 "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
1535 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
1536 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
1537 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
1538 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
1539
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1540 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
1541 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
1542 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
1543
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1544 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
1545 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
1546 :type 'boolean
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1547 :group 'gud)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1548
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1549 (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
1550 "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
1551 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
1552 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
1553 \(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
1554 steps):
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1555
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1556 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
1557 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
1558 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
1559 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
1560 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
1561 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
1562 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
1563 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
1564 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
1565
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1566 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
1567 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
1568
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1569 (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
1570 "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
1571 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
1572 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
1573
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1574 (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
1575 "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
1576 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
1577 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
1578 source file information.")
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1579
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1580 (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
1581 "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
1582
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1583
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1584 ;; List of Java source file directories.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1585 (defvar gud-jdb-directories (list ".")
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1586 "*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
1587 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
1588 directory.
c547172f003f (gud-jdb-directories): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28731
diff changeset
1589
c547172f003f (gud-jdb-directories): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28731
diff changeset
1590 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
1591 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
1592 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
1593 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
1594 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
1595 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
1596
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1597 (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
1598 "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
1599
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1600 ;; 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
1601 ;; and their source files.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1602 (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
1603 "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
1604
9a2d76cd1da4 (gud-jdb-class-source-alist): defvar moved up.
Richard M. Stallman <rms@gnu.org>
parents: 22173
diff changeset
1605 ;; 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
1606 (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
1607
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1608 (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
1609 "Holds temporary classpath values.")
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1610
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1611 (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
1612 "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
1613 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
1614 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
1615 \"\\.java$\" ."
28590
784c31479eb2 (gud-jdb-build-source-files-list): Check that directory
Gerd Moellmann <gerd@gnu.org>
parents: 27833
diff changeset
1616 (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
1617 (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
1618 (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
1619 path)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1620
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1621 ;; Move point past whitespace.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1622 (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
1623 (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
1624
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1625 ;; 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
1626 (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
1627 (end-of-line))
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1628
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1629 ;; 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
1630 (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
1631 (forward-char 2)
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1632 (catch 'break
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1633 (while (not (eobp))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1634 (if (eq (following-char) ?*)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1635 (progn
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1636 (forward-char)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1637 (if (not (eobp))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1638 (if (eq (following-char) ?/)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1639 (progn
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1640 (forward-char)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1641 (throw 'break nil)))))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1642 (forward-char)))))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1643
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1644 ;; 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
1645 (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
1646 (gud-jdb-skip-whitespace)
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1647 (catch 'done
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1648 (while t
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1649 (cond
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1650 ((looking-at "//")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1651 (gud-jdb-skip-single-line-comment)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1652 (gud-jdb-skip-whitespace))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1653 ((looking-at "/\\*")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1654 (gud-jdb-skip-traditional-or-documentation-comment)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1655 (gud-jdb-skip-whitespace))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1656 (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
1657
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1658 ;; 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
1659 ;; 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
1660 ;; names.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1661 (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
1662 (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
1663
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1664 ;; 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
1665 (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
1666 (forward-char)
24736
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
1667 (while (not (cond
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
1668 ((eq (following-char) ?\\)
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
1669 (forward-char))
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
1670 ((eq (following-char) ?\042))))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1671 (forward-char))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1672 (forward-char))
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1673
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1674 ;; 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
1675 (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
1676 (forward-char)
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1677 (while
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1678 (progn
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1679 (if (eq (following-char) ?\\)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1680 (forward-char 2))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1681 (not (eq (following-char) ?\')))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1682 (forward-char))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1683 (forward-char))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1684
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1685 ;; 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
1686 ;; 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
1687 ;; in petticoat junction.
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1688 (defun gud-jdb-skip-block ()
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1689
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1690 ;; 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
1691 (while
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1692 (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
1693
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1694 ;; 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
1695 ;; 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
1696 (cond
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1697 ((looking-at "//")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1698 (gud-jdb-skip-single-line-comment))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1699 ((looking-at "/\\*")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1700 (gud-jdb-skip-traditional-or-documentation-comment))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1701 ((eq (following-char) ?\042)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1702 (gud-jdb-skip-string-literal))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1703 ((eq (following-char) ?\')
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1704 (gud-jdb-skip-character-literal))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1705 (t (forward-char))))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1706
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1707 ;; 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
1708 (forward-char)
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1709
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1710 ;; 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
1711 (let ((open-level 1))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1712 (while (not (eq open-level 0))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1713 (cond
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1714 ((looking-at "//")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1715 (gud-jdb-skip-single-line-comment))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1716 ((looking-at "/\\*")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1717 (gud-jdb-skip-traditional-or-documentation-comment))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1718 ((eq (following-char) ?\042)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1719 (gud-jdb-skip-string-literal))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1720 ((eq (following-char) ?\')
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1721 (gud-jdb-skip-character-literal))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1722 ((eq (following-char) ?{)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1723 (setq open-level (+ open-level 1))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1724 (forward-char))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1725 ((eq (following-char) ?})
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1726 (setq open-level (- open-level 1))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1727 (forward-char))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1728 (t (forward-char))))))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1729
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1730 ;; 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
1731 ;; 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
1732 ;; 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
1733 (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
1734 (let ((l nil))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1735 (set-buffer buf)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1736 (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
1737 (goto-char 0)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1738 (catch 'abort
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1739 (let ((p ""))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1740 (while (progn
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1741 (gud-jdb-skip-whitespace)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1742 (not (eobp)))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1743 (cond
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1744
44179
02b2708043f0 Undo some of the too aggressive tabification.
Eli Zaretskii <eliz@gnu.org>
parents: 44178
diff changeset
1745 ;; 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
1746 ;; 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
1747 ;; interspersed as well.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1748 ((eq (following-char) ?\073)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1749 (forward-char))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1750
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1751 ;; Move point past a single line comment.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1752 ((looking-at "//")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1753 (gud-jdb-skip-single-line-comment))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1754
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1755 ;; 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
1756 ((looking-at "/\\*")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1757 (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
1758
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1759 ;; 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
1760 ((looking-at "package")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1761 (forward-char 7)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1762 (gud-jdb-skip-whitespace-and-comments)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1763 (let ((s (point)))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1764 (gud-jdb-skip-id-ish-thing)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1765 (setq p (concat (buffer-substring s (point)) "."))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1766 (gud-jdb-skip-whitespace-and-comments)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1767 (if (eq (following-char) ?\073)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1768 (forward-char))))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1769
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1770 ;; Move point past an import statement.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1771 ((looking-at "import")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1772 (forward-char 6)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1773 (gud-jdb-skip-whitespace-and-comments)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1774 (gud-jdb-skip-id-ish-thing)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1775 (gud-jdb-skip-whitespace-and-comments)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1776 (if (eq (following-char) ?\073)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1777 (forward-char)))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1778
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1779 ;; 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
1780 ((looking-at "public")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1781 (forward-char 6))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1782 ((looking-at "abstract")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1783 (forward-char 8))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1784 ((looking-at "final")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1785 (forward-char 5))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1786
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1787 ;; 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
1788 ;; Identifier.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1789 ((looking-at "class")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1790 (forward-char 5)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1791 (gud-jdb-skip-whitespace-and-comments)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1792 (let ((s (point)))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1793 (gud-jdb-skip-id-ish-thing)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1794 (setq
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1795 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
1796 (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
1797
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1798 ;; Move point past an interface statement.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1799 ((looking-at "interface")
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1800 (forward-char 9)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1801 (gud-jdb-skip-block))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1802
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1803 ;; Anything else means the input is invalid.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1804 (t
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1805 (message (format "Error parsing file %s." file))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1806 (throw 'abort nil))))))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1807 l))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1808
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1809 (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
1810 (mapcar
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1811 (lambda (c)
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1812 (cons c file))
21437
a2a8f6772465 (jdb): Do proper analysis of classes defined in a Java
Karl Heuer <kwzh@gnu.org>
parents: 21336
diff changeset
1813 (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
1814
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1815 ;; 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
1816 ;; 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
1817 ;; files to examine.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1818 (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
1819 (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
1820 (prog1
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1821 (apply
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1822 'nconc
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1823 (mapcar
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1824 '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
1825 sources))
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1826 (kill-buffer gud-jdb-analysis-buffer)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1827 (setq gud-jdb-analysis-buffer nil)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1828
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1829 ;; 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
1830 ;; invoke the debugger.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1831 (defun gud-jdb-massage-args (file args)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1832 ;; 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
1833 ;; 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
1834 ;; 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
1835 ;; 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
1836 ;; 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
1837 ;; 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
1838 ;; 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
1839 ;; 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
1840 ;; yet.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1841 (if args
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1842 (let (massaged-args user-error)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1843
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1844 (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
1845 (cond
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1846 ((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
1847 ((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
1848 ((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
1849 (setq massaged-args
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1850 (append massaged-args
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1851 (list "-classpath")
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1852 (list
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1853 (setq gud-jdb-classpath-string
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1854 (substring
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1855 (car args)
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1856 (match-beginning 1) (match-end 1)))))))
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1857 ((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
1858 (setq massaged-args
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1859 (append massaged-args
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1860 (list "-sourcepath")
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1861 (list
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1862 (setq gud-jdb-sourcepath
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1863 (substring
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1864 (car args)
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1865 (match-beginning 1) (match-end 1)))))))
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1866 (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
1867 (setq args (cdr args)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1868
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1869 ;; 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
1870 ;; 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
1871 ;; issueing the error is good enough.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1872 (if user-error
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1873 (progn
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1874 (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
1875 (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
1876 massaged-args)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1877
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1878 ;; 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
1879 ;; 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
1880 ;; 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
1881 (defun gud-jdb-find-source-file (p)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1882 (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
1883
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1884 ;; 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
1885 (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
1886
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1887 (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
1888 "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
1889 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
1890 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
1891 (save-match-data
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1892 (let
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1893 (;; 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
1894 ;; name relative to classpath
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1895 (filename
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1896 (concat
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1897 (mapconcat (lambda (x) x)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1898 (split-string
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1899 ;; Eliminate any subclass references in the class
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1900 ;; name string. These start with a "$"
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1901 ((lambda (x)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1902 (if (string-match "$.*" x)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1903 (replace-match "" t t x) p))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1904 p)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1905 "\\.") "/")
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1906 ".java"))
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
1907 (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
1908 found-file)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1909 (while (and cplist
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1910 (not (setq found-file
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1911 (file-readable-p
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1912 (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
1913 (setq cplist (cdr cplist)))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1914 (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
1915
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1916 (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
1917 "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
1918 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
1919 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
1920 `gud-jdb-use-classpath'."
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1921 nil)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1922
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1923 (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
1924 "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
1925 (mapcar (lambda (s) (if (string-match "[/\\]$" s)
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1926 (replace-match "" nil nil s) s))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1927 (mapcar 'file-truename
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1928 (split-string
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1929 string
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1930 (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
1931
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1932 ;; 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
1933 ;; important notes about STRING.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1934 (defun gud-jdb-marker-filter (string)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1935
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1936 ;; Build up the accumulator.
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1937 (setq gud-marker-acc
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1938 (if gud-marker-acc
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1939 (concat gud-marker-acc string)
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1940 string))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1941
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1942 ;; 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
1943 ;; (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
1944 ;; not supported/followed)
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1945 (if (and gud-jdb-use-classpath
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1946 (not gud-jdb-classpath-string)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1947 (or (string-match "classpath:[ \t[]+\\([^]]+\\)" gud-marker-acc)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1948 (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
1949 (setq gud-jdb-classpath
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1950 (gud-jdb-parse-classpath-string
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1951 (setq gud-jdb-classpath-string
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1952 (substring gud-marker-acc
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1953 (match-beginning 1) (match-end 1))))))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1954
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1955 ;; 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
1956 ;; 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
1957 ;; 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
1958 (let (file-found)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1959 ;; 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
1960 (while
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
1961
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1962 ;; Do we see a marker?
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1963 (string-match
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1964 ;; 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
1965 ;; hits a breakpoint:
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1966 ;;
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
1967 ;; <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
1968 ;;
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1969 ;; <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
1970 ;; separated by periods. <method> and <class> are
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1971 ;; 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
1972 ;; 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
1973 ;; 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
1974 ;; 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
1975 ;; 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
1976 ;; and dollar sign.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1977 ;;
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1978 ;; The first group matches <fully-qualified-class>,
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1979 ;; 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
1980 ;; 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
1981 ;; <method> so we don't "group" it.
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1982 ;;
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1983 ;; 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
1984 ;; ID's only.
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1985 "\\(\[[0-9]+\] \\)*\\([a-zA-Z0-9.$_]+\\)\\.[a-zA-Z0-9$_<>(),]+ \
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1986 \\(([a-zA-Z0-9.$_]+:\\|line=\\)\\([0-9]+\\)"
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1987 gud-marker-acc)
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1988
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1989 ;; 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
1990 ;; 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
1991 ;; 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
1992 ;; since the last prompt
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1993 ;; 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
1994 ;; 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
1995 ;;
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
1996 ;; (<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
1997 (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
1998 (let (n)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1999 (setq n (string-to-int (substring
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2000 gud-marker-acc
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2001 (1+ (match-beginning 1))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2002 (- (match-end 1) 2))))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2003 (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
2004 (progn (setq gud-jdb-lowest-stack-level n) t)))
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2005 t)
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2006 (if (setq file-found
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2007 (gud-jdb-find-source
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2008 (substring gud-marker-acc
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2009 (match-beginning 2)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2010 (match-end 2))))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2011 (setq gud-last-frame
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2012 (cons file-found
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2013 (string-to-int
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2014 (substring gud-marker-acc
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2015 (match-beginning 4)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2016 (match-end 4)))))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2017 (message "Could not find source file.")))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
2018
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2019 ;; 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
2020 (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
2021
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2022 (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
2023 (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
2024
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2025 ;; 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
2026 ;; 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
2027 ;; 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
2028 (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
2029 (setq gud-marker-acc
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2030 (substring gud-marker-acc
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2031 (- (/ (* 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
2032
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2033 ;; 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
2034 string)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2035
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2036 (defun gud-jdb-find-file (f)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2037 (and (file-readable-p f)
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
2038 (find-file-noselect f)))
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2039
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2040 ;;;###autoload
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2041 (defun jdb (command-line)
41952
cf39e35201ff (jdb): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 41935
diff changeset
2042 "Run jdb with command line COMMAND-LINE in a buffer.
cf39e35201ff (jdb): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 41935
diff changeset
2043 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
2044 \"*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
2045 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
2046
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2047 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
2048 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
2049 `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
2050 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
2051
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2052 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
2053 gud, see `gud-mode'."
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2054 (interactive
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2055 (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
2056 (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
2057 (setq gud-jdb-sourcepath nil)
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2058
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2059 ;; 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
2060 ;; if CLASSPATH is set.
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2061 (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
2062 (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
2063 (setq gud-jdb-classpath
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2064 (gud-jdb-parse-classpath-string gud-jdb-classpath-string)))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2065 (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
2066
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2067 (gud-common-init command-line 'gud-jdb-massage-args
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2068 'gud-jdb-marker-filter 'gud-jdb-find-file)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2069 (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
2070
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2071 ;; 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
2072 (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
2073 (setq gud-jdb-classpath
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2074 (gud-jdb-parse-classpath-string gud-jdb-classpath-string)))
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2075 (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
2076 ;; 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
2077 (if gud-jdb-sourcepath
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2078 (setq gud-jdb-sourcepath
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2079 (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
2080
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2081 (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
2082 (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
2083 (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
2084 (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
2085 (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
2086 (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
2087 (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
2088 (gud-def gud-down "down\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
2089 (local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2090 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2091 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2092
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2093 (setq comint-prompt-regexp "^> \\|^[^ ]+\\[[0-9]+\\] ")
21336
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2094 (setq paragraph-start comint-prompt-regexp)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2095 (run-hooks 'jdb-mode-hook)
e78bc1ffd88d Add support for jdb (Java debugger).
Richard M. Stallman <rms@gnu.org>
parents: 20756
diff changeset
2096
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2097 (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
2098 ;; 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
2099 (progn
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2100 (if (string-match "-attach" command-line)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2101 (gud-call "classpath"))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2102 (fset 'gud-jdb-find-source
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2103 '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
2104
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2105 ;; 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
2106 ;; 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
2107 (setq gud-jdb-class-source-alist
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2108 (gud-jdb-build-class-source-alist
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2109 (setq gud-jdb-source-files
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2110 (gud-jdb-build-source-files-list gud-jdb-directories
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2111 "\\.java$"))))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2112 (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
2113
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2114
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2115 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2116 ;; End of debugger-specific information
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
2117 ;;
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2118
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
2119
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2120 ;; 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
2121 ;; 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
2122 ;; 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
2123 ;;
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2124 ;; 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
2125 ;; --------------------
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2126 ;; (gdb) set args foo bar
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2127 ;; (gdb) -!-
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2128 ;; --------------------
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2129 ;; (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
2130 ;; 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
2131 ;; this:
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2132 ;; --------------------
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2133 ;; (gdb) set args foo bar
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2134 ;; 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
2135 ;; (gdb) -!-
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2136 ;; --------------------
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2137 ;; 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
2138 ;; 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
2139 ;;
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2140 ;; 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
2141 ;; 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
2142 ;; 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
2143 ;; 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
2144 ;; 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
2145 ;; 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
2146 ;; 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
2147 ;; 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
2148 ;; 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
2149 ;; 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
2150 ;; 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
2151 ;; 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
2152 ;; flicker won't be annoying.
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2153 ;;
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2154 ;; 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
2155 ;; 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
2156 ;; 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
2157 ;; 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
2158 ;; 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
2159 ;; 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
2160 (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
2161
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2162
17658
c8e002cdebb2 (gud-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 16843
diff changeset
2163 (put 'gud-mode 'mode-class 'special)
c8e002cdebb2 (gud-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 16843
diff changeset
2164
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2165 (define-derived-mode gud-mode comint-mode "Debugger"
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2166 "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
2167
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2168 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
2169 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
2170 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
2171 `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
2172
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2173 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
2174 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
2175 or step operation:
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2176
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2177 \\[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
2178 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
2179 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
2180
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
2181 \\[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
2182
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2183 \\[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
2184 in the gud buffer.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2185
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2186 \\[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
2187 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
2188 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
2189 \\[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
2190
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2191 \\[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
2192 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
2193
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2194 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
2195 does not support stepping instructions.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2196
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2197 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
2198 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
2199 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
2200
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2201 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
2202 frame. \\[gud-down] drops back down through one.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2203
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2204 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
2205 the current function and stops.
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2206
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2207 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
2208 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
2209
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2210 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
2211 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
2212 argument.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2213
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2214 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
2215 commands.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2216
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
2217 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
2218 comint mode, which see."
7074
b9d86b8e3ca1 (gud-mode, gud-sentinel):
Richard M. Stallman <rms@gnu.org>
parents: 7009
diff changeset
2219 (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
2220 (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
2221 (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
2222 (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
2223 (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
2224 ;; 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
2225 (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
2226 (make-local-variable 'paragraph-start)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2227 (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
2228
23735
9392dd2e6137 (gud-common-init): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 22734
diff changeset
2229 ;; 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
2230 ;; in the selected window.
9392dd2e6137 (gud-common-init): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 22734
diff changeset
2231 ;;;###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
2232
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2233 (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
2234 "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
2235 :group 'gud
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2236 :type 'boolean)
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2237
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
2238 ;; Perform initializations common to all debuggers.
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2239 ;; The first arg is the specified command line,
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2240 ;; which starts with the program to debug.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2241 ;; 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
2242 ;; for local variables in the debugger buffer.
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2243 (defun gud-common-init (command-line massage-args marker-filter &optional find-file)
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2244 (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
2245 (program (car words))
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
2246 ;; 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
2247 ;; 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
2248 ;; 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
2249 (file-word (let ((w (cdr words)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
2250 (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
2251 (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
2252 (and w
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2253 (prog1 (car w)
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2254 (setcar w t)))))
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2255 (file-subst
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2256 (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
2257 (args (cdr words))
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2258 ;; 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
2259 ;; 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
2260 ;; 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
2261 ;; 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
2262 ;; 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
2263 (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
2264 (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
2265 (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
2266 file-subst)))
11930
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2267 (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
2268 (pop-to-buffer (concat "*gud" filepart "*"))
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2269 ;; 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
2270 (and file-word
37878
f79c061ff77a (gud-gdb-run-command-fetch-lines): Use forward-line
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37696
diff changeset
2271 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
2272 ;; 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
2273 ;; 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
2274 ;; 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
2275 ;; 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
2276 ;; 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
2277 (file-name-directory file)
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
2278 (setq default-directory (file-name-directory file)))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2279 (or (bolp) (newline))
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2280 (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
2281 ;; 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
2282 (let ((w args))
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
2283 (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
2284 (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
2285 (if w
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2286 (setcar w file)))
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
2287 (apply 'make-comint (concat "gud" filepart) program nil
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2288 (if massage-args (funcall massage-args file args) args)))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2289 ;; Since comint clobbered the mode, we don't set it until now.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2290 (gud-mode)
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2291 (make-local-variable 'gud-marker-filter)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2292 (setq 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
2293 (if find-file (set (make-local-variable 'gud-find-file) find-file))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
2294
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2295 (set-process-filter (get-buffer-process (current-buffer)) 'gud-filter)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2296 (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
2297 (gud-set-buffer))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2298
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2299 (defun gud-set-buffer ()
33434
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2300 (when (eq major-mode 'gud-mode)
032684266f4b (gud-minor-mode): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30959
diff changeset
2301 (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
2302
13003
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2303 (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
2304 "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
2305 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
2306
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
2307 (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
2308 "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
2309
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2310 ;; 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
2311 ;; 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
2312 ;; 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
2313
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2314 (defun gud-filter (proc string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2315 ;; 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
2316 (let (output process-window)
9519
c7925093b270 (gud-filter): Don't bind inhibit-quit.
Richard M. Stallman <rms@gnu.org>
parents: 9191
diff changeset
2317 (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
2318 (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
2319 ;; 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
2320 ;; 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
2321 (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
2322 (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
2323
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2324 ;; 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
2325 ;; 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
2326 ;; during that time.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2327 (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
2328 ;; 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
2329 (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
2330 (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
2331 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
2332
48d749ce74e4 (gud-filter): Use `with-current-buffer' instead of save-excursion when
Miles Bader <miles@gnu.org>
parents: 30643
diff changeset
2333 (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
2334 ;; 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
2335 (save-restriction
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2336 (widen)
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2337 (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
2338 (progn
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2339 (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
2340 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
2341 (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
2342 ;; 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
2343 (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
2344 ;; 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
2345 ;; 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
2346 ;; 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
2347 ;; 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
2348 (setq process-window
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2349 (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
2350 (>= (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
2351 (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
2352
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2353 ;; 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
2354 ;; 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
2355 (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
2356
22446
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2357 ;; 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
2358 ;; 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
2359 ;; 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
2360 (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
2361 (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
2362 (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
2363 (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
2364 ;; 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
2365 ;; 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
2366 (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
2367 (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
2368 (unwind-protect
5988c3c973db (gud-filter): extend scope of binding of gud-filter-defer-flag.
Richard M. Stallman <rms@gnu.org>
parents: 22215
diff changeset
2369 (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
2370 (set-buffer old-buf)))))
13190
1e174c7e3a00 (gud-filter): Move the gud-display-frame call
Richard M. Stallman <rms@gnu.org>
parents: 13003
diff changeset
2371
15185
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2372 ;; 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
2373 ;; handle it now.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
2374 (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
2375 (gud-filter proc ""))))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2376
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2377 (defun gud-sentinel (proc msg)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2378 (cond ((null (buffer-name (process-buffer proc)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2379 ;; buffer killed
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2380 ;; Stop displaying an arrow in a source file.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2381 (setq overlay-arrow-position nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2382 (set-process-buffer proc nil))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2383 ((memq (process-status proc) '(signal exit))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2384 ;; Stop displaying an arrow in a source file.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2385 (setq overlay-arrow-position nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2386 (let* ((obuf (current-buffer)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2387 ;; save-excursion isn't the right thing if
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2388 ;; process-buffer is current-buffer
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2389 (unwind-protect
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2390 (progn
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2391 ;; Write something in *compilation* and hack its mode line,
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2392 (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
2393 ;; Fix the mode line.
0b41c3dab3a7 (gud-sentinel): Set mode-line-process in the process
Andreas Schwab <schwab@suse.de>
parents: 19890
diff changeset
2394 (setq mode-line-process
0b41c3dab3a7 (gud-sentinel): Set mode-line-process in the process
Andreas Schwab <schwab@suse.de>
parents: 19890
diff changeset
2395 (concat ":"
0b41c3dab3a7 (gud-sentinel): Set mode-line-process in the process
Andreas Schwab <schwab@suse.de>
parents: 19890
diff changeset
2396 (symbol-name (process-status proc))))
11583
b481316dd562 (gud-sentinel): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11235
diff changeset
2397 (force-mode-line-update)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2398 (if (eobp)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2399 (insert ?\n mode-name " " msg)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2400 (save-excursion
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2401 (goto-char (point-max))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2402 (insert ?\n mode-name " " msg)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2403 ;; If buffer and mode line will show that the process
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2404 ;; is dead, we can delete it now. Otherwise it
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2405 ;; will stay around until M-x list-processes.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2406 (delete-process proc))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2407 ;; Restore old buffer, but don't restore old point
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2408 ;; if obuf is the gud buffer.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2409 (set-buffer obuf))))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2410
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2411 (defun gud-display-frame ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2412 "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
2413 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
2414 (interactive)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2415 (if gud-last-frame
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2416 (progn
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2417 (gud-set-buffer)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2418 (gud-display-line (car gud-last-frame) (cdr gud-last-frame))
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
2419 (setq gud-last-last-frame gud-last-frame
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
2420 gud-last-frame nil))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2421
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2422 ;; 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
2423 ;; and that its line LINE is visible.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2424 ;; 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
2425 ;; 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
2426 ;; 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
2427 ;; 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
2428
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2429 (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
2430 (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
2431 (buffer
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
2432 (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
2433 (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
2434 (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
2435 (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
2436 (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
2437 (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
2438 (gdb-display-source-buffer buffer)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2439 (display-buffer buffer)))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2440 (pos))
15796
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2441 (if buffer
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2442 (progn
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2443 (save-excursion
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2444 (set-buffer buffer)
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2445 (save-restriction
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2446 (widen)
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2447 (goto-line line)
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2448 (setq pos (point))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2449 (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
2450 (or overlay-arrow-position
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2451 (setq overlay-arrow-position (make-marker)))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2452 (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
2453 (cond ((or (< pos (point-min)) (> pos (point-max)))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2454 (widen)
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2455 (goto-char pos))))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
2456 (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
2457
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2458 ;; 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
2459 ;; 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
2460 ;; 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
2461 ;; gud-last-frame. Here's how we do it:
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2462
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2463 (defun gud-format-command (str arg)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2464 (let ((insource (not (eq (current-buffer) gud-comint-buffer)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2465 (frame (or gud-last-frame gud-last-last-frame))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2466 result)
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2467 (while (and str (string-match "\\([^%]*\\)%\\([adeflpc]\\)" str))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2468 (let ((key (string-to-char (substring str (match-beginning 2))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2469 subst)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2470 (cond
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2471 ((eq key ?f)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2472 (setq subst (file-name-nondirectory (if insource
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2473 (buffer-file-name)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2474 (car frame)))))
24736
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
2475 ((eq key ?F)
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
2476 (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
2477 (file-name-nondirectory (if insource
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
2478 (buffer-file-name)
2abcb92cf0ae (gud-format-command): "%F" means file sans extension.
Richard M. Stallman <rms@gnu.org>
parents: 24388
diff changeset
2479 (car frame))))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2480 ((eq key ?d)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2481 (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
2482 (buffer-file-name)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2483 (car frame)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2484 ((eq key ?l)
41935
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2485 (setq subst (int-to-string
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2486 (if insource
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2487 (save-restriction
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2488 (widen)
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2489 (+ (count-lines (point-min) (point))
41935
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2490 (if (bolp) 1 0)))
a9d361663625 (gdb): Define and bind gud-jump.
Richard M. Stallman <rms@gnu.org>
parents: 39252
diff changeset
2491 (cdr frame)))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2492 ((eq key ?e)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2493 (setq subst (gud-find-c-expr)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2494 ((eq key ?a)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2495 (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
2496 ((eq key ?c)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2497 (setq subst (gud-find-class (if insource
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2498 (buffer-file-name)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2499 (car frame)))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2500 ((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
2501 (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
2502 (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
2503 (setq str (substring str (match-end 2))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
2504 ;; 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
2505 (concat result str)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2506
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
2507 (defun gud-read-address ()
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2508 "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
2509 (save-match-data
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2510 (save-excursion
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2511 (let ((pt (point)) found begin)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2512 (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
2513 (cond
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2514 (found (forward-char 2)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2515 (buffer-substring found
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2516 (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
2517 (forward-char -1)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2518 (point))))
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2519 (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
2520 (forward-char 1)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2521 (point)))
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2522 (forward-char 1)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2523 (re-search-forward "[^0-9]")
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2524 (forward-char -1)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2525 (buffer-substring begin (point))))))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2526
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2527 (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
2528 (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
2529 (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
2530 (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
2531 (gud-basic-call msg)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2532
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2533 (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
2534 "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
2535 (interactive)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2536 (gud-set-buffer)
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2537 (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
2538 (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
2539 ;; 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
2540 (save-excursion
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2541 (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
2542 (save-restriction
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2543 (widen)
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2544 (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
2545 (forward-line 0)
d55632c1102b (gud-basic-call): Temporarily widen gud comint buffer while checking for
Miles Bader <miles@gnu.org>
parents: 30736
diff changeset
2546 (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
2547 (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
2548 (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
2549 (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
2550 (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
2551
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2552 (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
2553 "Fix up a possibly garbled display, and redraw the arrow."
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2554 (interactive "P")
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
2555 (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
2556 (gud-display-frame)
106d1a478844 (gud-refresh): Call recenter only after we are sure we
Eli Zaretskii <eliz@gnu.org>
parents: 42829
diff changeset
2557 (recenter arg))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2558
47443
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2559 ;; 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
2560 ;; 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
2561 ;;
b2fb48df4f9f (gud-gdb-massage-args, gud-sdb-massage-args)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47398
diff changeset
2562 ;; 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
2563 ;; 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
2564 ;; 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
2565
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2566 (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
2567 "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
2568 (interactive)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2569 (save-excursion
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2570 (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
2571 (setq p (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2572 (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
2573 (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
2574 (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
2575 (let ((prev-expr expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2576 (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
2577 (goto-char (car expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2578 (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
2579 ;; 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
2580 ;; throw it away again.
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2581 (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
2582 '("if" "while" "for"))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2583 (setq test-expr nil
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2584 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
2585 (goto-char p)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2586 (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
2587 (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
2588 (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
2589 (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
2590 (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
2591
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2592 (defun gud-innermost-expr ()
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2593 "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
2594 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
2595 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
2596 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
2597 (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
2598 (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
2599 (setq begin (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2600 (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
2601 (setq end (point))
22159
b7e2979c522e (gud-perldb-marker-acc): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 21437
diff changeset
2602 (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
2603 (progn
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2604 (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
2605 (goto-char p)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2606 (gud-forward-sexp)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2607 (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
2608 )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2609 (goto-char begin)
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2610 (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
2611
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2612 (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
2613 "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
2614 (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
2615 (backward-sexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2616 (error t)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2617
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2618 (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
2619 "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
2620 (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
2621 (forward-sexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2622 (error t)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2623
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2624 (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
2625 "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
2626 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
2627 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
2628 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
2629 (let ((begin) (end))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2630 (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
2631 (setq begin (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2632 (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
2633 (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
2634 (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
2635 (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
2636
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2637 (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
2638 "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
2639 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
2640 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
2641 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
2642 (let ((begin) (end))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2643 (gud-forward-sexp)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2644 (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
2645 (setq end (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2646 (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
2647 (setq begin (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2648 (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
2649
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2650 (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
2651 "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
2652 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
2653 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
2654 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
2655 (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
2656 (syntax))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2657 (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
2658 (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
2659 (cond
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2660 ((= 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
2661 ((= 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
2662 (cond
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2663 ((= 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
2664 ((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
2665 (setq result ?.)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2666 (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
2667 (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
2668 (setq result ??)))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2669 (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
2670 result))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2671
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2672 (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
2673 "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
2674 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
2675 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
2676 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
2677 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
2678 Expr -> Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2679 Expr . Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2680 Expr (Expr)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2681 Expr [Expr]
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2682 (Expr) Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2683 [Expr] Expr"
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2684 (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
2685 (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
2686 (syntax))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2687 (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
2688 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2689 ((= (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
2690 ((= (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
2691 ((= syntax ?.) t)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2692 ((= syntax ?\ )
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
2693 (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
2694 (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
2695 (cond
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2696 ((= span-start ?)) t)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2697 ((= span-start ?]) t)
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2698 ((= span-end ?() t)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2699 ((= span-end ?[) t)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
2700 (t nil)))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
2701 (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
2702
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2703 (defun gud-find-class (f)
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2704 "Find fully qualified class corresponding to file F.
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2705 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
2706 `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
2707 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
2708 `gud-jdb-classpath' are assumed to have been converted to absolute
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2709 pathname standards using file-truename."
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2710 ;; 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
2711 (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
2712 (save-match-data
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2713 (let ((cplist (append gud-jdb-sourcepath gud-jdb-classpath))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2714 class-found)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2715 (setq f (file-name-sans-extension (file-truename f)))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2716 ;; Search through classpath list for an entry that is
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2717 ;; contained in f
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2718 (while (and cplist (not class-found))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2719 (if (string-match (car cplist) f)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2720 (setq class-found
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2721 (mapconcat (lambda(x) x)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2722 (split-string
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2723 (substring f (+ (match-end 0) 1))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2724 "/") ".")))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2725 (setq cplist (cdr cplist)))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2726 (if (not class-found)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2727 (message "gud-find-class: class for file %s not found!" f))
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2728 class-found))
44176
ae2fa08b3654 (gud-jdb-sourcepath): New variable, saves jdb -sourcepath parameter value.
Eli Zaretskii <eliz@gnu.org>
parents: 43113
diff changeset
2729 ;; 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
2730 (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
2731 (if class-found
44178
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2732 (car class-found)
2d2edf96f3fc Tabify everything.
Eli Zaretskii <eliz@gnu.org>
parents: 44176
diff changeset
2733 (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
2734 nil))))
42829
07bd6e693cb6 (easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
2735
48293
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2736 (defvar gud-tool-bar-map
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2737 (if (display-graphic-p)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2738 (let ((tool-bar-map (make-sparse-keymap)))
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2739 (tool-bar-add-item-from-menu 'gud-break "gud-break" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2740 (tool-bar-add-item-from-menu 'gud-remove "gud-remove" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2741 (tool-bar-add-item-from-menu 'gud-print "gud-print" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2742 (tool-bar-add-item-from-menu 'gud-display "gud-display" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2743 (tool-bar-add-item-from-menu 'gud-run "gud-run" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2744 (tool-bar-add-item-from-menu 'gud-goto "gud-goto" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2745 (tool-bar-add-item-from-menu 'gud-cont "gud-cont" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2746 (tool-bar-add-item-from-menu 'gud-step "gud-step" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2747 (tool-bar-add-item-from-menu 'gud-next "gud-next" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2748 (tool-bar-add-item-from-menu 'gud-finish "gud-finish" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2749 (tool-bar-add-item-from-menu 'gud-up "gud-up" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2750 (tool-bar-add-item-from-menu 'gud-down "gud-down" gud-minor-mode-map)
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2751 tool-bar-map)))
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2752
3a409a9620a7 (gud-find-file): Set up GDB tool bar.
Nick Roberts <nickrob@snap.net.nz>
parents: 48278
diff changeset
2753 (provide 'mygud)
4016
27d35763dda9 Add (provide 'gud).
Roland McGrath <roland@gnu.org>
parents: 3930
diff changeset
2754
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
2755 ;;; gud.el ends here