annotate lisp/gud.el @ 48011:6ee65f935a8c

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