annotate lisp/gud.el @ 47746:c619d4098aec

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