annotate lisp/gud.el @ 42970:8b1bab5b4e0b

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