annotate lisp/gud.el @ 7584:72d8287c8b16

(lib-src): Don't depend on src/paths.h.
author Richard M. Stallman <rms@gnu.org>
date Fri, 20 May 1994 07:35:37 +0000
parents 1ce5d720b347
children 347191d7ca7d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1 ;;; gud.el --- Grand Unified Debugger mode for gdb, sdb, dbx, or xdb
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
2 ;;; under Emacs
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
3
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
4 ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
4818
15dd7db2ab6c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 4732
diff changeset
5 ;; Maintainer: FSF
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
6 ;; Version: 1.3
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
7 ;; Keywords: unix, tools
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
8
7298
4fd40bd394fe Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 7165
diff changeset
9 ;; Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
460
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 ;; This file is part of GNU Emacs.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13 ;; 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
14 ;; 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
15 ;; 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
16 ;; any later version.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; 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
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; GNU General Public License for more details.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
25 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
26
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
27 ;;; Commentary:
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
28
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
29 ;; The ancestral gdb.el was by W. Schelter <wfs@rascal.ics.utexas.edu>
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
30 ;; 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
31 ;; 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
32 ;; 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
33 ;; 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
34 ;; 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
35 ;; wrote the GDB command completion code. Dave Love <d.love@dl.ac.uk>
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
36 ;; added the IRIX kluge and re-implemented the Mips-ish variant.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
37
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
38 ;;; Code:
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
39
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
40 (require 'comint)
923
9f3cc03dae67 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 914
diff changeset
41 (require 'etags)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
42
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
43 ;; ======================================================================
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
44 ;; 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
45
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
46 (defvar gud-key-prefix "\C-x\C-a"
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
47 "Prefix of all GUD commands valid in C buffers.")
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
48
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
49 (global-set-key (concat gud-key-prefix "\C-l") 'gud-refresh)
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
50 (global-set-key "\C-x " '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
51
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
52 ;; ======================================================================
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 ;; the overloading mechanism
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
54
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
55 (defun gud-overload-functions (gud-overload-alist)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
56 "Overload functions defined in GUD-OVERLOAD-ALIST.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
57 This association list has elements of the form
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
58 (ORIGINAL-FUNCTION-NAME OVERLOAD-FUNCTION)"
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
59 (mapcar
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
60 (function (lambda (p) (fset (car p) (symbol-function (cdr p)))))
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
61 gud-overload-alist))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
63 (defun gud-massage-args (file args)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
64 (error "GUD not properly entered."))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
66 (defun gud-marker-filter (str)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
67 (error "GUD not properly entered."))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
69 (defun gud-find-file (f)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70 (error "GUD not properly entered."))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
71
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
72 ;; ======================================================================
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
73 ;; command definition
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
74
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
75 ;; 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
76 ;; 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
77 ;; user defined ones.
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
78
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
79 ;; 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
80 ;; 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
81 ;; 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
82 ;; 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
83 ;; 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
84
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
85 (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
86 "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
87 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
88 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
89
4344
be116c77da2f (dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents: 4335
diff changeset
90 %f name (without directory) of current source file.
be116c77da2f (dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents: 4335
diff changeset
91 %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
92 %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
93 %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
94 %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
95 %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
96
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
97 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
98 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
99 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
100 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
101 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
102 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
103 (list 'progn
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
104 (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
105 (or doc "")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
106 '(interactive "p")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
107 (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
108 (if key
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
109 (list 'define-key
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
110 '(current-local-map)
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
111 (concat "\C-c" key)
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
112 (list 'quote func)))
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
113 (if key
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
114 (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
115 (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
116 (list 'quote func)))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
117
1275
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
118 ;; Where gud-display-frame should put the debugging arrow. This is
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
119 ;; set by the marker-filter, which scans the debugger's output for
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
120 ;; 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
121 (defvar gud-last-frame nil)
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
122
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
123 ;; 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
124 ;; 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
125 ;; 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
126 (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
127
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
128 ;; 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
129 ;; 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
130 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
131 ;; Each entry must define the following at startup:
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
132 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
133 ;;<name>
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
134 ;; comint-prompt-regexp
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
135 ;; gud-<name>-massage-args
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
136 ;; 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
137 ;; gud-<name>-find-file
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
138 ;;
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
139 ;; 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
140 ;; debugger arguments before running the debugger.
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
141 ;;
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
142 ;; 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
143 ;; 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
144 ;; 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
145 ;; 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
146 ;; can filter the debugger's output, interpreting some and passing on
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
147 ;; the rest.
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
148 ;;
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
149 ;; 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
150 ;; by the car of gud-tag-frame. This may be a file name, a tag name, or
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
151 ;; something else.
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
152
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
153 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
154 ;; gdb functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
155
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
156 ;;; 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
157 (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
158
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
159 (defun gud-gdb-massage-args (file args)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
160 (cons "-fullname" (cons file args)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
161
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
162 ;; 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
163 ;; 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
164 ;; 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
165 ;; 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
166 ;; 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
167 ;; filter.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
168 (defvar gud-marker-acc "")
7317
ce56b572b5c8 (gud-marker-acc): Use make-variable-buffer-local.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
169 (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
170
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
171 (defun gud-gdb-marker-filter (string)
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
172 (save-match-data
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
173 (setq gud-marker-acc (concat gud-marker-acc string))
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
174 (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
175
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
176 ;; Process all the complete markers in this chunk.
7429
5c2347e34b31 Allow marker string to arrive in mid-line.
Karl Heuer <kwzh@gnu.org>
parents: 7317
diff changeset
177 (while (string-match "\032\032\\([^:\n]*\\):\\([0-9]*\\):.*\n"
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
178 gud-marker-acc)
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
179 (setq
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
180
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
181 ;; Extract the frame position from the marker.
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
182 gud-last-frame
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
183 (cons (substring gud-marker-acc (match-beginning 1) (match-end 1))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
184 (string-to-int (substring gud-marker-acc
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
185 (match-beginning 2)
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
186 (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
187
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
188 ;; Append any text before the marker to the output we're going
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
189 ;; to return - we don't include the marker in this text.
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
190 output (concat output
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
191 (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
192
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
193 ;; Set the accumulator to the remaining text.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
194 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
195
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
196 ;; Does the remaining text look like it might end with the
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
197 ;; beginning of another marker? If it does, then keep it in
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
198 ;; gud-marker-acc until we receive the rest of it. Since we
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
199 ;; know the full marker regexp above failed, it's pretty simple to
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
200 ;; test for marker starts.
7429
5c2347e34b31 Allow marker string to arrive in mid-line.
Karl Heuer <kwzh@gnu.org>
parents: 7317
diff changeset
201 (if (string-match "\032.*\\'" gud-marker-acc)
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
202 (progn
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
203 ;; Everything before the potential marker start can be output.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
204 (setq output (concat output (substring gud-marker-acc
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
205 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
206
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
207 ;; Everything after, we save, to combine with later input.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
208 (setq gud-marker-acc
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
209 (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
210
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
211 (setq output (concat output gud-marker-acc)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
212 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
213
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
214 output)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
215
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
216 (defun gud-gdb-find-file (f)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
217 (find-file-noselect f))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
218
6238
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
219 (defvar gdb-minibuffer-local-map nil
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
220 "Keymap for minibuffer prompting of gdb startup command.")
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
221 (if gdb-minibuffer-local-map
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
222 ()
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
223 (setq gdb-minibuffer-local-map (copy-keymap minibuffer-local-map))
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
224 (define-key
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
225 gdb-minibuffer-local-map "\C-i" 'comint-dynamic-complete-filename))
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
226
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
227 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
228 (defun gdb (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
229 "Run gdb on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
230 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
231 and source-file directory for your debugger."
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
232 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
233 (list (read-from-minibuffer "Run gdb (like this): "
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
234 (if (consp gud-gdb-history)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
235 (car gud-gdb-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
236 "gdb ")
6238
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
237 gdb-minibuffer-local-map nil
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
238 '(gud-gdb-history . 1))))
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
239 (gud-overload-functions '((gud-massage-args . gud-gdb-massage-args)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
240 (gud-marker-filter . gud-gdb-marker-filter)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
241 (gud-find-file . gud-gdb-find-file)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
242 ))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
243
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
244 (gud-common-init command-line)
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
245
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
246 (gud-def gud-break "break %f:%l" "\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
247 (gud-def gud-tbreak "tbreak %f:%l" "\C-t" "Set breakpoint at current line.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
248 (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
249 (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
250 (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
251 (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
252 (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
253 (gud-def gud-finish "finish" "\C-f" "Finish executing current function.")
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
254 (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
255 (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
256 (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
257
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
258 (local-set-key "\C-i" 'gud-gdb-complete-command)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
259 (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
260 (setq paragraph-start comint-prompt-regexp)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
261 (run-hooks 'gdb-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
262 )
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
263
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
264 ;; 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
265 ;; 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
266 ;; 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
267
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
268 ;; 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
269 (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
270
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
271 ;; 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
272 (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
273
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
274 ;; 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
275 (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
276
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
277 ;; 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
278 (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
279
6535
01db0be5fec8 (gud-comint-buffer): Move defvar up.
Richard M. Stallman <rms@gnu.org>
parents: 6531
diff changeset
280 (defvar gud-comint-buffer nil)
01db0be5fec8 (gud-comint-buffer): Move defvar up.
Richard M. Stallman <rms@gnu.org>
parents: 6531
diff changeset
281
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
282 (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
283 "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
284 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
285 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
286 (interactive)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
287 (let* ((end (point))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
288 (command (save-excursion
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
289 (beginning-of-line)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
290 (and (looking-at comint-prompt-regexp)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
291 (goto-char (match-end 0)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
292 (buffer-substring (point) end)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
293 command-word)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
294 ;; 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
295 (string-match "\\(\\`\\| \\)\\([^ ]*\\)\\'" command)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
296 (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
297 command-word (substring command gud-gdb-complete-break))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
298 (unwind-protect
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
299 (progn
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
300 ;; Temporarily install our filter function.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
301 (gud-overload-functions
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
302 '((gud-marker-filter . gud-gdb-complete-filter)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
303 ;; Issue the command to GDB.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
304 (gud-basic-call (concat "complete " command))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
305 (setq gud-gdb-complete-in-progress t
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
306 gud-gdb-complete-string nil
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
307 gud-gdb-complete-list nil)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
308 ;; Slurp the output.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
309 (while 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
310 (accept-process-output (get-buffer-process gud-comint-buffer))))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
311 ;; Restore the old filter function.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
312 (gud-overload-functions '((gud-marker-filter . gud-gdb-marker-filter))))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
313 ;; 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
314 (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
315 (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
316 (car gud-gdb-complete-list))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
317 (error "This version of GDB doesn't support the `complete' command."))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
318 ;; 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
319 (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
320 (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
321 ;; Remove duplicates.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
322 (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
323 (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
324 (while second
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
325 (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
326 (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
327 (setq first second
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
328 second (cdr second)))))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
329 ;; 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
330 (comint-dynamic-simple-complete command-word gud-gdb-complete-list)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
331
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
332 ;; 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
333 ;; 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
334 (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
335 (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
336 (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
337 (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
338 (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
339 gud-gdb-complete-list))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
340 (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
341 (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
342 (progn
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
343 (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
344 string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
345 (progn
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
346 (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
347 "")))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
348
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
349
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
350 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
351 ;; sdb functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
352
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
353 ;;; 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
354 (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
355
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
356 (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
357 "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
358
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
359 (defvar gud-sdb-lastfile nil)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
360
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
361 (defun gud-sdb-massage-args (file args)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
362 (cons file args))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
363
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
364 (defun gud-sdb-marker-filter (string)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
365 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
366 ;; System V Release 3.2 uses this format
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
367 ((string-match "\\(^0x\\w* in \\|^\\|\n\\)\\([^:\n]*\\):\\([0-9]*\\):.*\n"
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
368 string)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
369 (setq gud-last-frame
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
370 (cons
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
371 (substring string (match-beginning 2) (match-end 2))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
372 (string-to-int
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
373 (substring string (match-beginning 3) (match-end 3))))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
374 ;; System V Release 4.0
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
375 ((string-match "^\\(BREAKPOINT\\|STEPPED\\) process [0-9]+ function [^ ]+ in \\(.+\\)\n"
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
376 string)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
377 (setq gud-sdb-lastfile
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
378 (substring string (match-beginning 2) (match-end 2))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
379 ((and gud-sdb-lastfile (string-match "^\\([0-9]+\\):" string))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
380 (setq gud-last-frame
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
381 (cons
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
382 gud-sdb-lastfile
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
383 (string-to-int
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
384 (substring string (match-beginning 1) (match-end 1))))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
385 (t
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
386 (setq gud-sdb-lastfile nil)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
387 string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
388
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
389 (defun gud-sdb-find-file (f)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
390 (if gud-sdb-needs-tags
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
391 (find-tag-noselect f)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
392 (find-file-noselect f)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
393
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
394 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
395 (defun sdb (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
396 "Run sdb on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
397 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
398 and source-file directory for your debugger."
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
399 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
400 (list (read-from-minibuffer "Run sdb (like this): "
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
401 (if (consp gud-sdb-history)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
402 (car gud-sdb-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
403 "sdb ")
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
404 nil nil
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
405 '(gud-sdb-history . 1))))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
406 (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
407 (not (and (boundp 'tags-file-name)
1ce5d720b347 (sdb): Handle tags-file-name as nil.
Richard M. Stallman <rms@gnu.org>
parents: 7429
diff changeset
408 (stringp tags-file-name)
1ce5d720b347 (sdb): Handle tags-file-name as nil.
Richard M. Stallman <rms@gnu.org>
parents: 7429
diff changeset
409 (file-exists-p tags-file-name))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
410 (error "The sdb support requires a valid tags table to work."))
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
411 (gud-overload-functions '((gud-massage-args . gud-sdb-massage-args)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
412 (gud-marker-filter . gud-sdb-marker-filter)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
413 (gud-find-file . gud-sdb-find-file)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
414 ))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
415
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
416 (gud-common-init command-line)
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
417
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
418 (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
419 (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
420 (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
421 (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
422 (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
423 (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
424 (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
425 (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
426
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
427 (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
428 (setq paragraph-start comint-prompt-regexp)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
429 (run-hooks 'sdb-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
430 )
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
431
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
432 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
433 ;; dbx functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
434
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
435 ;;; 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
436 (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
437
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
438 (defun gud-dbx-massage-args (file args)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
439 (cons file args))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
440
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
441 (defun gud-dbx-marker-filter (string)
4497
820df40f1e8c (gud-dbx-marker-filter): Detect signals as well as bpts.
Richard M. Stallman <rms@gnu.org>
parents: 4357
diff changeset
442 (if (or (string-match
820df40f1e8c (gud-dbx-marker-filter): Detect signals as well as bpts.
Richard M. Stallman <rms@gnu.org>
parents: 4357
diff changeset
443 "stopped in .* at line \\([0-9]*\\) in file \"\\([^\"]*\\)\""
820df40f1e8c (gud-dbx-marker-filter): Detect signals as well as bpts.
Richard M. Stallman <rms@gnu.org>
parents: 4357
diff changeset
444 string)
820df40f1e8c (gud-dbx-marker-filter): Detect signals as well as bpts.
Richard M. Stallman <rms@gnu.org>
parents: 4357
diff changeset
445 (string-match
820df40f1e8c (gud-dbx-marker-filter): Detect signals as well as bpts.
Richard M. Stallman <rms@gnu.org>
parents: 4357
diff changeset
446 "signal .* in .* at line \\([0-9]*\\) in file \"\\([^\"]*\\)\""
820df40f1e8c (gud-dbx-marker-filter): Detect signals as well as bpts.
Richard M. Stallman <rms@gnu.org>
parents: 4357
diff changeset
447 string))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
448 (setq gud-last-frame
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
449 (cons
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
450 (substring string (match-beginning 2) (match-end 2))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
451 (string-to-int
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
452 (substring string (match-beginning 1) (match-end 1))))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
453 string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
454
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
455 ;; 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
456 ;; 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
457 (defvar gud-mips-p
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
458 (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
459 ;; 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
460 (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
461 ;; It's documented on OSF/1.3
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
462 (string-match "^mips-[^-]*-osf1" system-configuration))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
463 "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
464
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
465 (defun gud-mipsdbx-massage-args (file args)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
466 (cons "-emacs" (cons file args)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
467
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
468 ;; 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
469 ;; 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
470 (defun gud-mipsdbx-marker-filter (string)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
471 (save-match-data
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
472 (setq gud-marker-acc (concat gud-marker-acc string))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
473 (let ((output ""))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
474
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
475 ;; Process all the complete markers in this chunk.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
476 (while (string-match
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
477 ;; This is like th gdb marker but with an optional
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
478 ;; leading break point number like `[1] '
7429
5c2347e34b31 Allow marker string to arrive in mid-line.
Karl Heuer <kwzh@gnu.org>
parents: 7317
diff changeset
479 "[][ 0-9]*\032\032\\([^:\n]*\\):\\([0-9]*\\):.*\n"
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
480 gud-marker-acc)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
481 (setq
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
482
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
483 ;; Extract the frame position from the marker.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
484 gud-last-frame
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
485 (cons (substring gud-marker-acc (match-beginning 1) (match-end 1))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
486 (string-to-int (substring gud-marker-acc
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
487 (match-beginning 2)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
488 (match-end 2))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
489
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
490 ;; Append any text before the marker to the output we're going
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
491 ;; to return - we don't include the marker in this text.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
492 output (concat output
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
493 (substring gud-marker-acc 0 (match-beginning 0)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
494
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
495 ;; Set the accumulator to the remaining text.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
496 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
497
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
498 ;; Does the remaining text look like it might end with the
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
499 ;; beginning of another marker? If it does, then keep it in
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
500 ;; gud-marker-acc until we receive the rest of it. Since we
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
501 ;; know the full marker regexp above failed, it's pretty simple to
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
502 ;; test for marker starts.
7429
5c2347e34b31 Allow marker string to arrive in mid-line.
Karl Heuer <kwzh@gnu.org>
parents: 7317
diff changeset
503 (if (string-match "[][ 0-9]*\032.*\\'" gud-marker-acc)
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
504 (progn
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
505 ;; Everything before the potential marker start can be output.
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
506 (setq output (concat output (substring gud-marker-acc
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
507 0 (match-beginning 0))))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
508
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
509 ;; Everything after, we save, to combine with later input.
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
510 (setq gud-marker-acc
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
511 (substring gud-marker-acc (match-beginning 0))))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
512
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
513 (setq output (concat output gud-marker-acc)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
514 gud-marker-acc ""))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
515
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
516 output)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
517
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
518 ;; 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
519 ;; 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
520 ;; `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
521 ;; 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
522 ;; 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
523 ;; 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
524 ;; 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
525 ;; `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
526 ;; 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
527 ;; 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
528 ;; 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
529 ;; 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
530 ;; 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
531 ;; 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
532 ;; 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
533
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
534 (defvar gud-irix-p (string-match "^mips-[^-]*-irix" system-configuration)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
535 "Non-nil to assume the interface appropriate for IRIX dbx.
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
536 This works in IRIX 4 and probably IRIX 5.")
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
537 ;; (It's been tested in IRIX 4 and the output from dbx on IRIX 5 looks
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
538 ;; the same.)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
539
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
540 ;; 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
541 (defun gud-irixdbx-marker-filter (string)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
542 (save-match-data
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
543 (let (result (case-fold-search nil))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
544 (if (or (string-match comint-prompt-regexp string)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
545 (string-match ".*\012" string))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
546 (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
547 gud-marker-acc "")
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
548 (setq gud-marker-acc (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
549 (if result
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
550 (cond
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
551 ;; look for breakpoint or signal indication e.g.:
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
552 ;; [2] Process 1267 (pplot) stopped at [params:338 ,0x400ec0]
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
553 ;; Process 1281 (pplot) stopped at [params:339 ,0x400ec8]
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
554 ;; Process 1270 (pplot) Floating point exception [._read._read:16 ,0x452188]
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
555 ((string-match
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
556 "^\\(\\[[0-9]+] \\)?Process +[0-9]+ ([^)]*) [^[]+\\[[^]\n]*]\n"
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
557 result)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
558 ;; prod dbx into printing out the line number and file
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
559 ;; name in a form we can grok as below
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
560 (process-send-string (get-buffer-process gud-comint-buffer)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
561 "printf \"\032\032%1d:\",$curline;file\n"))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
562 ;; look for result of, say, "up" e.g.:
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
563 ;; .pplot.pplot(0x800) ["src/pplot.f":261, 0x400c7c]
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
564 ;; (this will also catch one of the lines printed by "where")
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
565 ((string-match
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
566 "^[^ ][^[]*\\[\"\\([^\"]+\\)\":\\([0-9]+\\), [^]]+]\n"
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
567 result)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
568 (let ((file (substring result (match-beginning 1)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
569 (match-end 1))))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
570 (if (file-exists-p file)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
571 (setq gud-last-frame
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
572 (cons
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
573 (substring
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
574 result (match-beginning 1) (match-end 1))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
575 (string-to-int
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
576 (substring
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
577 result (match-beginning 2) (match-end 2)))))))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
578 result)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
579 ((string-match ; kluged-up marker as above
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
580 "\032\032\\([0-9]*\\):\\(.*\\)\n" result)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
581 (let ((file (substring result (match-beginning 2) (match-end 2))))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
582 (if (file-exists-p file)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
583 (setq gud-last-frame
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
584 (cons
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
585 file
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
586 (string-to-int
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
587 (substring
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
588 result (match-beginning 1) (match-end 1)))))))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
589 (setq result (substring result 0 (match-beginning 0))))))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
590 (or result ""))))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
591
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
592 (defun gud-dbx-find-file (f)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
593 (find-file-noselect f))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
594
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
595 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
596 (defun dbx (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
597 "Run dbx on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
598 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
599 and source-file directory for your debugger."
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
600 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
601 (list (read-from-minibuffer "Run dbx (like this): "
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
602 (if (consp gud-dbx-history)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
603 (car gud-dbx-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
604 "dbx ")
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
605 nil nil
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
606 '(gud-dbx-history . 1))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
607
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
608 (gud-overload-functions
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
609 (cond
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
610 (gud-mips-p
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
611 '((gud-massage-args . gud-mipsdbx-massage-args)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
612 (gud-marker-filter . gud-mipsdbx-marker-filter)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
613 (gud-find-file . gud-dbx-find-file)))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
614 (gud-irix-p
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
615 '((gud-massage-args . gud-dbx-massage-args)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
616 (gud-marker-filter . gud-irixdbx-marker-filter)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
617 (gud-find-file . gud-dbx-find-file)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
618 (t
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
619 '((gud-massage-args . gud-dbx-massage-args)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
620 (gud-marker-filter . gud-dbx-marker-filter)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
621 (gud-find-file . gud-dbx-find-file)))))
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
622
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
623 (gud-common-init command-line)
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
624
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
625 (cond
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
626 (gud-mips-p
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
627 (gud-def gud-break "stop at \"%f\":%l"
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
628 "\C-b" "Set breakpoint at current line.")
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
629 (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
630 (gud-irix-p
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
631 (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
632 "\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
633 (gud-def gud-finish "return" "\C-f" "Finish executing current function.")
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
634 ;; 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
635 (process-send-string (get-buffer-process gud-comint-buffer)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
636 "printf \"\032\032%1d:\",$curline;file\n"))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
637 ((or (string-match "-sunos" (symbol-name system-type))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
638 (string-match "-solaris" (symbol-name system-type)))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
639 ;; The following works for both the UCB and SunPro 2.0.1 versions
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
640 ;; of dbx. The `stop' is lost using the `\n' separator as in the
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
641 ;; default case. Is there a dbx where the newline is actually
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
642 ;; necessary? (d.love@dl.ac.uk)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
643 (gud-def gud-break "file \"%d%f\";stop at %l"
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
644 "\C-b" "Set breakpoint at current line."))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
645 (t
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
646 (gud-def gud-break "file \"%d%f\"\nstop at %l"
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
647 "\C-b" "Set breakpoint at current line.")))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
648
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
649 (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
650 (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
651 (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
652 (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
653 (gud-def gud-cont "cont" "\C-r" "Continue with display.")
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
654 (gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
655 (gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.")
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
656 (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
657
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
658 (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
659 (setq paragraph-start comint-prompt-regexp)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
660 (run-hooks 'dbx-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
661 )
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
662
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
663 ;; ======================================================================
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
664 ;; xdb (HP PARISC debugger) functions
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
665
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
666 ;;; 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
667 (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
668
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
669 (defvar gud-xdb-directories nil
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
670 "*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
671 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
672 will be known to xdb.
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
673
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
674 The file names should be absolute, or relative to the directory
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
675 containing the executable being debugged.")
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
676
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
677 (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
678 (nconc (let ((directories gud-xdb-directories)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
679 (result nil))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
680 (while directories
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
681 (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
682 (setq directories (cdr directories)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
683 (nreverse (cons file result)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
684 args))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
685
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
686 (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
687 "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
688 (let ((result nil))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
689 (if (file-exists-p f)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
690 (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
691 (let ((directories gud-xdb-directories))
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
692 (while directories
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
693 (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
694 (if (file-exists-p path)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
695 (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
696 directories nil)))
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
697 (setq directories (cdr directories)))))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
698 result))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
699
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
700 ;; 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
701 (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
702 (let (result)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
703 (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
704 (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
705 (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
706 gud-marker-acc "")
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
707 (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
708 (if result
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
709 (if (or (string-match "\\([^\n \t:]+\\): [^:]+: \\([0-9]+\\):" result)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
710 (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
711 result))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
712 (let ((line (string-to-int
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
713 (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
714 (file (gud-xdb-file-name
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
715 (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
716 (if file
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
717 (setq gud-last-frame (cons file line))))))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
718 (or result "")))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
719
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
720 (defun gud-xdb-find-file (f)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
721 (let ((realf (gud-xdb-file-name f)))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
722 (if realf (find-file-noselect realf))))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
723
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
724 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
725 (defun xdb (command-line)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
726 "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
727 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
728 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
729
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
730 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
731 directories if your program contains sources from more than one directory."
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
732 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
733 (list (read-from-minibuffer "Run xdb (like this): "
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
734 (if (consp gud-xdb-history)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
735 (car gud-xdb-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
736 "xdb ")
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
737 nil nil
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
738 '(gud-xdb-history . 1))))
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
739 (gud-overload-functions '((gud-massage-args . gud-xdb-massage-args)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
740 (gud-marker-filter . gud-xdb-marker-filter)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
741 (gud-find-file . gud-xdb-find-file)))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
742
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
743 (gud-common-init command-line)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
744
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
745 (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
746 (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
747 "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
748 (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
749 (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
750 (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
751 (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
752 (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
753 (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
754 (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
755 (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
756
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
757 (setq comint-prompt-regexp "^>")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
758 (setq paragraph-start comint-prompt-regexp)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
759 (run-hooks 'xdb-mode-hook))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
760
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
761 ;; ======================================================================
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
762 ;; perldb functions
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
763
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
764 ;;; History of argument lists passed to perldb.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
765 (defvar gud-perldb-history nil)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
766
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
767 (defun gud-perldb-massage-args (file args)
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
768 (cons "-d" (cons file (cons "-emacs" args))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
769
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
770 ;; 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
771 ;; 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
772 ;; 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
773 ;; 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
774 ;; 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
775 ;; filter.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
776 (defvar gud-perldb-marker-acc "")
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
777
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
778 (defun gud-perldb-marker-filter (string)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
779 (save-match-data
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
780 (setq gud-marker-acc (concat gud-marker-acc string))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
781 (let ((output ""))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
782
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
783 ;; Process all the complete markers in this chunk.
7429
5c2347e34b31 Allow marker string to arrive in mid-line.
Karl Heuer <kwzh@gnu.org>
parents: 7317
diff changeset
784 (while (string-match "\032\032\\([^:\n]*\\):\\([0-9]*\\):.*\n"
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
785 gud-marker-acc)
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
786 (setq
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
787
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
788 ;; Extract the frame position from the marker.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
789 gud-last-frame
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
790 (cons (substring gud-marker-acc (match-beginning 1) (match-end 1))
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
791 (string-to-int (substring gud-marker-acc
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
792 (match-beginning 2)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
793 (match-end 2))))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
794
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
795 ;; Append any text before the marker to the output we're going
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
796 ;; to return - we don't include the marker in this text.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
797 output (concat output
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
798 (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
799
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
800 ;; Set the accumulator to the remaining text.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
801 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
802
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
803 ;; Does the remaining text look like it might end with the
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
804 ;; beginning of another marker? If it does, then keep it in
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
805 ;; gud-marker-acc until we receive the rest of it. Since we
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
806 ;; know the full marker regexp above failed, it's pretty simple to
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
807 ;; test for marker starts.
7429
5c2347e34b31 Allow marker string to arrive in mid-line.
Karl Heuer <kwzh@gnu.org>
parents: 7317
diff changeset
808 (if (string-match "\032.*\\'" gud-marker-acc)
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
809 (progn
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
810 ;; Everything before the potential marker start can be output.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
811 (setq output (concat output (substring gud-marker-acc
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
812 0 (match-beginning 0))))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
813
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
814 ;; Everything after, we save, to combine with later input.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
815 (setq gud-marker-acc
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
816 (substring gud-marker-acc (match-beginning 0))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
817
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
818 (setq output (concat output gud-marker-acc)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
819 gud-marker-acc ""))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
820
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
821 output)))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
822
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
823 (defun gud-perldb-find-file (f)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
824 (find-file-noselect f))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
825
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
826 ;;;###autoload
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
827 (defun perldb (command-line)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
828 "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
829 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
830 and source-file directory for your debugger."
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
831 (interactive
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
832 (list (read-from-minibuffer "Run perldb (like this): "
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
833 (if (consp gud-perldb-history)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
834 (car gud-perldb-history)
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
835 "perl ")
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
836 nil nil
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
837 '(gud-perldb-history . 1))))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
838 (gud-overload-functions '((gud-massage-args . gud-perldb-massage-args)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
839 (gud-marker-filter . gud-perldb-marker-filter)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
840 (gud-find-file . gud-perldb-find-file)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
841 ))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
842
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
843 (gud-common-init command-line)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
844
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
845 (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
846 (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
847 (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
848 (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
849 (gud-def gud-cont "c" "\C-r" "Continue with display.")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
850 ; (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
851 ; (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
852 ; (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
853 (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
854
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
855 (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
856 (setq paragraph-start comint-prompt-regexp)
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
857 (run-hooks 'perldb-mode-hook)
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
858 )
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
859
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
860 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
861 ;; End of debugger-specific information
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
862 ;;
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
863
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
864
1256
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
865 ;;; 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
866 ;;; 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
867 ;;; 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
868 ;;;
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
869 ;;; 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
870 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
871 ;;; (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
872 ;;; (gdb) -!-
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
873 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
874 ;;; (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
875 ;;; 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
876 ;;; this:
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
877 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
878 ;;; (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
879 ;;; 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
880 ;;; (gdb) -!-
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
881 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
882 ;;; 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
883 ;;; 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
884 ;;;
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
885 ;;; 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
886 ;;; 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
887 ;;; 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
888 ;;; 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
889 ;;; 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
890 ;;; 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
891 ;;; 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
892 ;;; 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
893 ;;; 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
894 ;;; 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
895 ;;; 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
896 ;;; 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
897 ;;; 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
898 ;;;
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
899 ;;; 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
900 ;;; 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
901 ;;; 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
902 ;;; 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
903 ;;; 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
904 ;;; 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
905 (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
906
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
907
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
908 (defun gud-mode ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
909 "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
910
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
911 You start it up with one of the commands M-x gdb, M-x sdb, M-x dbx,
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
912 or M-x xdb. Each entry point finishes by executing a hook; `gdb-mode-hook',
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
913 `sdb-mode-hook', `dbx-mode-hook' or `xdb-mode-hook' respectively.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
914
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
915 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
916 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
917 or step operation:
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
918
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
919 \\[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
920 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
921 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
922
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
923 \\[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
924
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
925 \\[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
926 in the gud buffer.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
927
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
928 \\[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
929 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
930 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
931 \\[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
932
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
933 \\[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
934 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
935
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
936 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
937 does not support stepping instructions.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
938
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
939 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
940 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
941 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
942
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
943 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
944 frame. \\[gud-down] drops back down through one.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
945
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
946 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
947 the current function and stops.
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
948
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
949 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
950 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
951
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
952 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
953 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
954 argument.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
955
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
956 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
957 commands.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
958
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
959 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
960 comint mode, which see."
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
961 (interactive)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
962 (comint-mode)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
963 (setq major-mode 'gud-mode)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
964 (setq mode-name "Debugger")
7074
b9d86b8e3ca1 (gud-mode, gud-sentinel):
Richard M. Stallman <rms@gnu.org>
parents: 7009
diff changeset
965 (setq mode-line-process '(":%s"))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
966 (use-local-map (copy-keymap comint-mode-map))
5997
6187a2560211 (gud-mode): Define C-c C-l in gud buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5508
diff changeset
967 (define-key (current-local-map) "\C-c\C-l" 'gud-refresh)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
968 (make-local-variable 'gud-last-frame)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
969 (setq gud-last-frame nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
970 (make-local-variable 'comint-prompt-regexp)
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
971 (make-local-variable 'paragraph-start)
1256
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
972 (make-local-variable 'gud-delete-prompt-marker)
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
973 (setq gud-delete-prompt-marker (make-marker))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
974 (run-hooks 'gud-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
975 )
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
976
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
977 ;; Chop STRING into words separated by SPC or TAB and return a list of them.
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
978 (defun gud-chop-words (string)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
979 (let ((i 0) (beg 0)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
980 (len (length string))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
981 (words nil))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
982 (while (< i len)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
983 (if (memq (aref string i) '(?\t ? ))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
984 (progn
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
985 (setq words (cons (substring string beg i) words)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
986 beg (1+ i))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
987 (while (and (< beg len) (memq (aref string beg) '(?\t ? )))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
988 (setq beg (1+ beg)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
989 (setq i (1+ beg)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
990 (setq i (1+ i))))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
991 (if (< beg len)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
992 (setq words (cons (substring string beg) words)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
993 (nreverse words)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
994
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
995 ;; Perform initializations common to all debuggers.
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
996 (defun gud-common-init (command-line)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
997 (let* ((words (gud-chop-words command-line))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
998 (program (car words))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
999 (file-word (let ((w (cdr words)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1000 (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
1001 (setq w (cdr w)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1002 (car w)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1003 (args (delq file-word (cdr words)))
5508
67db1f804162 (gud-common-init): Don't crash if no file specified.
Richard M. Stallman <rms@gnu.org>
parents: 5264
diff changeset
1004 (file (and file-word
67db1f804162 (gud-common-init): Don't crash if no file specified.
Richard M. Stallman <rms@gnu.org>
parents: 5264
diff changeset
1005 (expand-file-name (substitute-in-file-name file-word))))
67db1f804162 (gud-common-init): Don't crash if no file specified.
Richard M. Stallman <rms@gnu.org>
parents: 5264
diff changeset
1006 (filepart (and file-word (file-name-nondirectory file))))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1007 (switch-to-buffer (concat "*gud-" filepart "*"))
5508
67db1f804162 (gud-common-init): Don't crash if no file specified.
Richard M. Stallman <rms@gnu.org>
parents: 5264
diff changeset
1008 (and file-word (setq default-directory (file-name-directory file)))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1009 (or (bolp) (newline))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1010 (insert "Current directory is " default-directory "\n")
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1011 (apply 'make-comint (concat "gud-" filepart) program nil
5508
67db1f804162 (gud-common-init): Don't crash if no file specified.
Richard M. Stallman <rms@gnu.org>
parents: 5264
diff changeset
1012 (if file-word (gud-massage-args file args))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1013 (gud-mode)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1014 (set-process-filter (get-buffer-process (current-buffer)) 'gud-filter)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1015 (set-process-sentinel (get-buffer-process (current-buffer)) 'gud-sentinel)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1016 (gud-set-buffer)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1017 )
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1018
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1019 (defun gud-set-buffer ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1020 (cond ((eq major-mode 'gud-mode)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1021 (setq gud-comint-buffer (current-buffer)))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1022
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1023 ;; 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
1024 ;; 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
1025 ;; 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
1026
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1027 (defun gud-filter (proc string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1028 ;; Here's where the actual buffer insertion is done
7009
9fb9491fb9a4 (gud-filter): Call comint-output-filter at the end.
Richard M. Stallman <rms@gnu.org>
parents: 6997
diff changeset
1029 (let ((inhibit-quit t)
9fb9491fb9a4 (gud-filter): Call comint-output-filter at the end.
Richard M. Stallman <rms@gnu.org>
parents: 6997
diff changeset
1030 output)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1031 (save-excursion
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1032 (set-buffer (process-buffer proc))
6821
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1033 ;; If we have been so requested, delete the debugger prompt.
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1034 (if (marker-buffer gud-delete-prompt-marker)
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1035 (progn
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1036 (delete-region (process-mark proc) gud-delete-prompt-marker)
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1037 (set-marker gud-delete-prompt-marker nil)))
7009
9fb9491fb9a4 (gud-filter): Call comint-output-filter at the end.
Richard M. Stallman <rms@gnu.org>
parents: 6997
diff changeset
1038 ;; Save the process output, checking for source file markers.
9fb9491fb9a4 (gud-filter): Call comint-output-filter at the end.
Richard M. Stallman <rms@gnu.org>
parents: 6997
diff changeset
1039 (setq output (gud-marker-filter string))
6821
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1040 ;; Check for a filename-and-line number.
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1041 ;; Don't display the specified file
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1042 ;; unless (1) point is at or after the position where output appears
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1043 ;; and (2) this buffer is on the screen.
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1044 (if (and gud-last-frame
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1045 (>= (point) (process-mark proc))
eb3c5e5e1ef1 (gud-filter): Let comint-output-filter do the hard work.
Karl Heuer <kwzh@gnu.org>
parents: 6535
diff changeset
1046 (get-buffer-window (current-buffer)))
7009
9fb9491fb9a4 (gud-filter): Call comint-output-filter at the end.
Richard M. Stallman <rms@gnu.org>
parents: 6997
diff changeset
1047 (gud-display-frame))
9fb9491fb9a4 (gud-filter): Call comint-output-filter at the end.
Richard M. Stallman <rms@gnu.org>
parents: 6997
diff changeset
1048 ;; Let the comint filter do the actual insertion.
9fb9491fb9a4 (gud-filter): Call comint-output-filter at the end.
Richard M. Stallman <rms@gnu.org>
parents: 6997
diff changeset
1049 ;; That lets us inherit various comint features.
9fb9491fb9a4 (gud-filter): Call comint-output-filter at the end.
Richard M. Stallman <rms@gnu.org>
parents: 6997
diff changeset
1050 (comint-output-filter proc output))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1051
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1052 (defun gud-sentinel (proc msg)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1053 (cond ((null (buffer-name (process-buffer proc)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1054 ;; buffer killed
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1055 ;; Stop displaying an arrow in a source file.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1056 (setq overlay-arrow-position nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1057 (set-process-buffer proc nil))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1058 ((memq (process-status proc) '(signal exit))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1059 ;; Stop displaying an arrow in a source file.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1060 (setq overlay-arrow-position nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1061 ;; Fix the mode line.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1062 (setq mode-line-process
7074
b9d86b8e3ca1 (gud-mode, gud-sentinel):
Richard M. Stallman <rms@gnu.org>
parents: 7009
diff changeset
1063 (concat ":"
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1064 (symbol-name (process-status proc))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1065 (let* ((obuf (current-buffer)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1066 ;; save-excursion isn't the right thing if
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1067 ;; process-buffer is current-buffer
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1068 (unwind-protect
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1069 (progn
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1070 ;; Write something in *compilation* and hack its mode line,
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1071 (set-buffer (process-buffer proc))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1072 ;; Force mode line redisplay soon
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1073 (set-buffer-modified-p (buffer-modified-p))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1074 (if (eobp)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1075 (insert ?\n mode-name " " msg)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1076 (save-excursion
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1077 (goto-char (point-max))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1078 (insert ?\n mode-name " " msg)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1079 ;; If buffer and mode line will show that the process
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1080 ;; is dead, we can delete it now. Otherwise it
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1081 ;; will stay around until M-x list-processes.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1082 (delete-process proc))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1083 ;; Restore old buffer, but don't restore old point
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1084 ;; if obuf is the gud buffer.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1085 (set-buffer obuf))))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1086
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1087 (defun gud-display-frame ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1088 "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
1089 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
1090 (interactive)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1091 (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
1092 (progn
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1093 (gud-set-buffer)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1094 (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
1095 (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
1096 gud-last-frame nil))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1097
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1098 ;; 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
1099 ;; and that its line LINE is visible.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1100 ;; 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
1101 ;; 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
1102 ;; 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
1103 ;; 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
1104
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1105 (defun gud-display-line (true-file line)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1106 (let* ((buffer (gud-find-file true-file))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1107 (window (display-buffer buffer))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1108 (pos))
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
1109 ;;; (if (equal buffer (current-buffer))
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
1110 ;;; nil
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
1111 ;;; (setq buffer-read-only nil))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1112 (save-excursion
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
1113 ;;; (setq buffer-read-only t)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1114 (set-buffer buffer)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1115 (save-restriction
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1116 (widen)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1117 (goto-line line)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1118 (setq pos (point))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1119 (setq overlay-arrow-string "=>")
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1120 (or overlay-arrow-position
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1121 (setq overlay-arrow-position (make-marker)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1122 (set-marker overlay-arrow-position (point) (current-buffer)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1123 (cond ((or (< pos (point-min)) (> pos (point-max)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1124 (widen)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1125 (goto-char pos))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1126 (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
1127
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1128 ;;; 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
1129 ;;; 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
1130 ;;; 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
1131 ;;; gud-last-frame. Here's how we do it:
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1132
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1133 (defun gud-format-command (str arg)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1134 (let ((insource (not (eq (current-buffer) gud-comint-buffer)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1135 (frame (or gud-last-frame gud-last-last-frame))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1136 result)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1137 (while (and str (string-match "\\([^%]*\\)%\\([adeflp]\\)" str))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1138 (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
1139 subst)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1140 (cond
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1141 ((eq key ?f)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1142 (setq subst (file-name-nondirectory (if insource
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1143 (buffer-file-name)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1144 (car frame)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1145 ((eq key ?d)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1146 (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
1147 (buffer-file-name)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1148 (car frame)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1149 ((eq key ?l)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1150 (setq subst (if insource
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1151 (save-excursion
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1152 (beginning-of-line)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1153 (save-restriction (widen)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1154 (1+ (count-lines 1 (point)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1155 (cdr frame))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1156 ((eq key ?e)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1157 (setq subst (find-c-expr)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1158 ((eq key ?a)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1159 (setq subst (gud-read-address)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1160 ((eq key ?p)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1161 (setq subst (if arg (int-to-string arg) ""))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1162 (setq result (concat result
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1163 (substring str (match-beginning 1) (match-end 1))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1164 subst)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1165 (setq str (substring str (match-end 2))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1166 ;; 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
1167 (concat result str)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1168
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1169 (defun gud-read-address ()
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1170 "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
1171 (save-excursion
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1172 (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
1173 (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
1174 (cond
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1175 (found (forward-char 2)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1176 (buffer-substring found
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1177 (progn (re-search-forward "[^0-9a-f]")
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1178 (forward-char -1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1179 (point))))
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1180 (t (setq begin (progn (re-search-backward "[^0-9]")
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1181 (forward-char 1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1182 (point)))
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1183 (forward-char 1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1184 (re-search-forward "[^0-9]")
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1185 (forward-char -1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1186 (buffer-substring begin (point)))))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1187
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1188 (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
1189 (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
1190 (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
1191 (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
1192 (gud-basic-call msg)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1193
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1194 (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
1195 "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
1196 (interactive)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1197 (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
1198 (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
1199 (proc (get-buffer-process gud-comint-buffer)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1200
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1201 ;; 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
1202 (save-excursion
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1203 (set-buffer gud-comint-buffer)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1204 (goto-char (process-mark proc))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1205 (beginning-of-line)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1206 (if (looking-at comint-prompt-regexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1207 (set-marker gud-delete-prompt-marker (point))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1208 (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
1209
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1210 (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
1211 "Fix up a possibly garbled display, and redraw the arrow."
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1212 (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
1213 (recenter arg)
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
1214 (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
1215 (gud-display-frame))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1216
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1217 ;;; 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
1218 ;;; 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
1219 ;;;
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1220 ;;; 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
1221 ;;; 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
1222 ;;; 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
1223
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1224 (defun find-c-expr ()
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1225 "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
1226 (interactive)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1227 (save-excursion
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1228 (let ((p) (expr) (test-expr))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1229 (setq p (point))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1230 (setq expr (expr-cur))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1231 (setq test-expr (expr-prev))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1232 (while (expr-compound test-expr expr)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1233 (setq expr (cons (car test-expr) (cdr expr)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1234 (goto-char (car expr))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1235 (setq test-expr (expr-prev)))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1236 (goto-char p)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1237 (setq test-expr (expr-next))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1238 (while (expr-compound expr test-expr)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1239 (setq expr (cons (car expr) (cdr test-expr)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1240 (setq test-expr (expr-next))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1241 )
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1242 (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
1243
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1244 (defun expr-cur ()
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1245 "Returns the expr that point is in; point is set to beginning of expr.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1246 The expr is represented as a cons cell, where the car specifies the point in
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1247 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
1248 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
1249 (let ((p (point)) (begin) (end))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1250 (expr-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
1251 (setq begin (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1252 (expr-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
1253 (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
1254 (if (>= p end)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1255 (progn
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1256 (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
1257 (goto-char p)
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1258 (expr-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
1259 (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
1260 )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1261 )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1262 (goto-char begin)
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1263 (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
1264
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1265 (defun expr-backward-sexp ()
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1266 "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
1267 (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
1268 (backward-sexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1269 (error t)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1270
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1271 (defun expr-forward-sexp ()
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1272 "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
1273 (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
1274 (forward-sexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1275 (error t)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1276
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1277 (defun expr-prev ()
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1278 "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
1279 The expr is represented as a cons cell, where the car specifies the point in
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1280 the current buffer that marks the beginning of the expr and the cdr specifies
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1281 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
1282 (let ((begin) (end))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1283 (expr-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
1284 (setq begin (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1285 (expr-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
1286 (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
1287 (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
1288 (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
1289
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1290 (defun expr-next ()
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1291 "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
1292 The expr is represented as a cons cell, where the car specifies the point in
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1293 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
1294 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
1295 (let ((begin) (end))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1296 (expr-forward-sexp)
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1297 (expr-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
1298 (setq end (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1299 (expr-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
1300 (setq begin (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1301 (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
1302
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1303 (defun expr-compound-sep (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
1304 "Returns '.' for '->' & '.', returns ' ' for white space,
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3551
diff changeset
1305 returns '?' for other punctuation."
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1306 (let ((result ? )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1307 (syntax))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1308 (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
1309 (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
1310 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1311 ((= syntax ? ) t)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1312 ((= syntax ?.) (setq 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
1313 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1314 ((= 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
1315 ((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
1316 (setq result ?.)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1317 (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
1318 (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
1319 (setq result ??)))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1320 (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
1321 result))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1322
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1323 (defun expr-compound (first second)
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1324 "Non-nil if concatenating FIRST and SECOND makes a single C token.
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1325 The two exprs are represented as a cons cells, where the car
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1326 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
1327 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
1328 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
1329 Expr -> Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1330 Expr . Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1331 Expr (Expr)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1332 Expr [Expr]
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1333 (Expr) Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1334 [Expr] Expr"
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1335 (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
1336 (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
1337 (syntax))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1338 (setq syntax (expr-compound-sep 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
1339 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1340 ((= (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
1341 ((= (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
1342 ((= syntax ?.) t)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1343 ((= syntax ? )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1344 (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
1345 (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
1346 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1347 ((= span-start ?) ) t )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1348 ((= span-start ?] ) t )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1349 ((= span-end ?( ) t )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1350 ((= span-end ?[ ) t )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1351 (t nil))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1352 )
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1353 (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
1354
4016
27d35763dda9 Add (provide 'gud).
Roland McGrath <roland@gnu.org>
parents: 3930
diff changeset
1355 (provide 'gud)
27d35763dda9 Add (provide 'gud).
Roland McGrath <roland@gnu.org>
parents: 3930
diff changeset
1356
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
1357 ;;; gud.el ends here