annotate lisp/gud.el @ 5999:b135bb2b4bfe

*** empty log message ***
author Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
date Fri, 18 Feb 1994 22:38:14 +0000
parents 6187a2560211
children fab2ffdf64d5
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
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
9 ;; Copyright (C) 1992, 1993 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>
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
34 ;; added support for xdb (HPUX debugger).
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
35
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
36 ;;; Code:
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
37
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
38 (require 'comint)
923
9f3cc03dae67 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 914
diff changeset
39 (require 'etags)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
40
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
41 ;; ======================================================================
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
42 ;; 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
43
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
44 (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
45 "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
46
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 (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
48 (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
49
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
50 ;; ======================================================================
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51 ;; the overloading mechanism
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
52
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 (defun gud-overload-functions (gud-overload-alist)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
54 "Overload functions defined in GUD-OVERLOAD-ALIST.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
55 This association list has elements of the form
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
56 (ORIGINAL-FUNCTION-NAME OVERLOAD-FUNCTION)"
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
57 (mapcar
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
58 (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
59 gud-overload-alist))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
60
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
61 (defun gud-massage-args (file args)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62 (error "GUD not properly entered."))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
64 (defun gud-marker-filter (str)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65 (error "GUD not properly entered."))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
66
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
67 (defun gud-find-file (f)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68 (error "GUD not properly entered."))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
69
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
70 ;; ======================================================================
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
71 ;; command definition
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
73 ;; 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
74 ;; 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
75 ;; user defined ones.
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
76
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
77 ;; 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
78 ;; 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
79 ;; 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
80 ;; 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
81 ;; 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
82
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
83 (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
84 "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
85 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
86 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
87
4344
be116c77da2f (dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents: 4335
diff changeset
88 %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
89 %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
90 %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
91 %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
92 %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
93 %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
94
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
95 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
96 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
97 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
98 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
99 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
100 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
101 (list 'progn
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
102 (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
103 (or doc "")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
104 '(interactive "p")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
105 (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
106 (if key
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
107 (list 'define-key
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
108 '(current-local-map)
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
109 (concat "\C-c" key)
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
110 (list 'quote func)))
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
111 (if key
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
112 (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
113 (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
114 (list 'quote func)))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
115
1275
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
116 ;; 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
117 ;; 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
118 ;; 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
119 (defvar gud-last-frame nil)
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
120
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
121 ;; 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
122 ;; 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
123 ;; 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
124 (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
125
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
126 ;; 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
127 ;; 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
128 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
129 ;; Each entry must define the following at startup:
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 ;;<name>
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
132 ;; comint-prompt-regexp
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
133 ;; gud-<name>-massage-args
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
134 ;; 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
135 ;; gud-<name>-find-file
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
136 ;;
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
137 ;; 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
138 ;; debugger arguments before running the debugger.
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
139 ;;
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
140 ;; 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
141 ;; 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
142 ;; 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
143 ;; 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
144 ;; can filter the debugger's output, interpreting some and passing on
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
145 ;; the rest.
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
146 ;;
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
147 ;; 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
148 ;; 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
149 ;; something else.
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
150
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
151 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
152 ;; gdb functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
153
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
154 ;;; 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
155 (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
156
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
157 (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
158 (cons "-fullname" (cons file args)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
159
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
160 ;; 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
161 ;; 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
162 ;; 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
163 ;; 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
164 ;; 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
165 ;; filter.
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
166 (defvar gud-gdb-marker-acc "")
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
167
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
168 (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
169 (save-match-data
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
170 (setq gud-gdb-marker-acc (concat gud-gdb-marker-acc string))
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
171 (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
172
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
173 ;; Process all the complete markers in this chunk.
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
174 (while (string-match "^\032\032\\([^:\n]*\\):\\([0-9]*\\):.*\n"
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
175 gud-gdb-marker-acc)
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
176 (setq
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
177
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
178 ;; 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
179 gud-last-frame
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
180 (cons (substring gud-gdb-marker-acc (match-beginning 1) (match-end 1))
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
181 (string-to-int (substring gud-gdb-marker-acc
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
182 (match-beginning 2)
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
183 (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
184
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
185 ;; 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
186 ;; 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
187 output (concat output
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
188 (substring gud-gdb-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
189
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
190 ;; Set the accumulator to the remaining text.
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
191 gud-gdb-marker-acc (substring gud-gdb-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
192
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
193 ;; 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
194 ;; beginning of another marker? If it does, then keep it in
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
195 ;; gud-gdb-marker-acc until we receive the rest of it. Since we
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
196 ;; 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
197 ;; test for marker starts.
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
198 (if (string-match "^\032.*\\'" gud-gdb-marker-acc)
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
199 (progn
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
200 ;; Everything before the potential marker start can be output.
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
201 (setq output (concat output (substring gud-gdb-marker-acc
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
202 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
203
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
204 ;; Everything after, we save, to combine with later input.
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
205 (setq gud-gdb-marker-acc
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
206 (substring gud-gdb-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
207
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
208 (setq output (concat output gud-gdb-marker-acc)
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
209 gud-gdb-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
210
4357
5731da0436e8 * gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents: 4346
diff changeset
211 output)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
212
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
213 (defun gud-gdb-find-file (f)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
214 (find-file-noselect f))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
215
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
216 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
217 (defun gdb (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
218 "Run gdb on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
219 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
220 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
221 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
222 (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
223 (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
224 (car gud-gdb-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
225 "gdb ")
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
226 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
227 '(gud-gdb-history . 1))))
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
228 (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
229 (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
230 (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
231 ))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
232
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
233 (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
234
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
235 (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
236 (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
237 (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
238 (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
239 (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
240 (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
241 (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
242 (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
243 (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
244 (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
245 (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
246
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
247 (setq comint-prompt-regexp "^(.*gdb[+]?) *")
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
248 (run-hooks 'gdb-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
249 )
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
250
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
251
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
252 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
253 ;; sdb functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
254
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
255 ;;; 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
256 (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
257
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
258 (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
259 "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
260
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
261 (defvar gud-sdb-lastfile nil)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
262
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
263 (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
264 (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
265
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
266 (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
267 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
268 ;; 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
269 ((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
270 string)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
271 (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
272 (cons
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
273 (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
274 (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
275 (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
276 ;; 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
277 ((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
278 string)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
279 (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
280 (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
281 ((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
282 (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
283 (cons
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
284 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
285 (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
286 (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
287 (t
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
288 (setq gud-sdb-lastfile nil)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
289 string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
290
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
291 (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
292 (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
293 (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
294 (find-file-noselect f)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
295
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
296 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
297 (defun sdb (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
298 "Run sdb on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
299 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
300 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
301 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
302 (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
303 (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
304 (car gud-sdb-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
305 "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
306 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
307 '(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
308 (if (and 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
309 (not (and (boundp 'tags-file-name) (file-exists-p tags-file-name))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
310 (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
311 (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
312 (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
313 (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
314 ))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
315
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
316 (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
317
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
318 (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
319 (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
320 (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
321 (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
322 (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
323 (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
324 (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
325 (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
326
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
327 (setq comint-prompt-regexp "\\(^\\|\n\\)\\*")
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
328 (run-hooks 'sdb-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
329 )
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
330
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
331 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
332 ;; dbx functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
333
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
334 ;;; 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
335 (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
336
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
337 (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
338 (cons file args))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
339
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
340 (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
341 (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
342 "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
343 string)
820df40f1e8c (gud-dbx-marker-filter): Detect signals as well as bpts.
Richard M. Stallman <rms@gnu.org>
parents: 4357
diff changeset
344 (string-match
820df40f1e8c (gud-dbx-marker-filter): Detect signals as well as bpts.
Richard M. Stallman <rms@gnu.org>
parents: 4357
diff changeset
345 "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
346 string))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
347 (setq gud-last-frame
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
348 (cons
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
349 (substring string (match-beginning 2) (match-end 2))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
350 (string-to-int
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
351 (substring string (match-beginning 1) (match-end 1))))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
352 string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
353
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
354 ;; Functions for dbx on Mips/Ultrix.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
355 ;; This is very similar to the code for gdb. The trick is to start dbx
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
356 ;; with the (undocumented) option `-emacs'.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
357
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
358 ;; Are we running on a Mips system under Ultrix?
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
359 (defvar gud-dbx-mips-p (file-exists-p "/usr/include/mips"))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
360
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
361 (defun gud-mipsdbx-massage-args (file args)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
362 (cons "-emacs" (cons file args)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
363
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
364 ;; There's no guarantee that Emacs will hand the filter the entire
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
365 ;; marker at once; it could be broken up across several strings. We
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
366 ;; might even receive a big chunk with several markers in it. If we
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
367 ;; receive a chunk of text which looks like it might contain the
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
368 ;; beginning of a marker, we save it here between calls to the
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
369 ;; filter.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
370 (defvar gud-mipsdbx-marker-acc "")
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
371
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
372 (defun gud-mipsdbx-marker-filter (string)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
373 (save-match-data
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
374 (setq gud-mipsdbx-marker-acc (concat gud-mipsdbx-marker-acc string))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
375 (let ((output ""))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
376
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
377 ;; Process all the complete markers in this chunk.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
378 (while (string-match
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
379 "^[] [0-9]*\032\032\\([^:\n]*\\):\\([0-9]*\\):.*\n"
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
380 gud-mipsdbx-marker-acc)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
381 (setq
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
382
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
383 ;; Extract the frame position from the marker.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
384 gud-last-frame (cons
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
385 (substring gud-mipsdbx-marker-acc
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
386 (match-beginning 1) (match-end 1))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
387 (string-to-int
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
388 (substring gud-mipsdbx-marker-acc
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
389 (match-beginning 2) (match-end 2))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
390
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
391 ;; 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
392 ;; to return - we don't include the marker in this text.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
393 output (concat output (substring gud-mipsdbx-marker-acc
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
394 0 (match-beginning 0)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
395
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
396 ;; Set the accumulator to the remaining text.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
397 gud-mipsdbx-marker-acc (substring gud-mipsdbx-marker-acc
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
398 (match-end 0))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
399
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
400 ;; 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
401 ;; beginning of another marker? If it does, then keep it in
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
402 ;; gud-mipsdbx-marker-acc until we receive the rest of it.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
403 ;; Since we know the full marker regexp above failed, it's pretty
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
404 ;; simple to test for marker starts.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
405 (if (string-match "^[] [0-9]*\032.*\\'" gud-mipsdbx-marker-acc)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
406 (setq
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
407 ;; Everything before the potential marker start can be output.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
408 output (concat output (substring gud-mipsdbx-marker-acc
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
409 0 (match-beginning 0)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
410 ;; Everything after, we save, to combine with later input.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
411 gud-mipsdbx-marker-acc (substring gud-mipsdbx-marker-acc
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
412 (match-beginning 0)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
413 (setq output (concat output gud-mipsdbx-marker-acc)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
414 gud-mipsdbx-marker-acc ""))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
415
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
416 output)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
417
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
418 (defun gud-dbx-find-file (f)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
419 (find-file-noselect f))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
420
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
421 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
422 (defun dbx (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
423 "Run dbx on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
424 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
425 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
426 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
427 (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
428 (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
429 (car gud-dbx-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
430 "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
431 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
432 '(gud-dbx-history . 1))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
433
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
434 (gud-overload-functions
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
435 (cond
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
436 (gud-dbx-mips-p
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
437 '((gud-massage-args . gud-mipsdbx-massage-args)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
438 (gud-marker-filter . gud-mipsdbx-marker-filter)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
439 (gud-find-file . gud-dbx-find-file)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
440 (t
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
441 '((gud-massage-args . gud-dbx-massage-args)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
442 (gud-marker-filter . gud-dbx-marker-filter)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
443 (gud-find-file . gud-dbx-find-file)))))
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
444
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
445 (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
446
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
447 (cond
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
448 (gud-dbx-mips-p
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
449 (gud-def gud-break "stop at \"%f\":%l"
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
450 "\C-b" "Set breakpoint at current line.")
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
451 (gud-def gud-finish "return" "\C-f" "Finish executing current function."))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
452 (t
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
453 (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
454 "\C-b" "Set breakpoint at current line.")))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
455
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
456 (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
457 (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
458 (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
459 (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
460 (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
461 (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
462 (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
463 (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
464
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
465 (setq comint-prompt-regexp "^[^)\n]*dbx) *")
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
466 (run-hooks 'dbx-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
467 )
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
468
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
469 ;; ======================================================================
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
470 ;; xdb (HP PARISC debugger) functions
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
471
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
472 ;;; 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
473 (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
474
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
475 (defvar gud-xdb-directories nil
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
476 "*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
477 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
478 will be known to xdb.
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
479
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
480 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
481 containing the executable being debugged.")
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
482
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
483 (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
484 (nconc (let ((directories gud-xdb-directories)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
485 (result nil))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
486 (while directories
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
487 (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
488 (setq directories (cdr directories)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
489 (nreverse (cons file result)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
490 args))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
491
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
492 (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
493 "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
494 (let ((result nil))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
495 (if (file-exists-p f)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
496 (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
497 (let ((directories gud-xdb-directories))
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
498 (while directories
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
499 (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
500 (if (file-exists-p path)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
501 (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
502 directories nil)))
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
503 (setq directories (cdr directories)))))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
504 result))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
505
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
506 ;; 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
507 (defvar gud-xdb-accumulation "")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
508
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
509 (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
510 (let (result)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
511 (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
512 (string-match ".*\012" string))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
513 (setq result (concat gud-xdb-accumulation string)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
514 gud-xdb-accumulation "")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
515 (setq gud-xdb-accumulation (concat gud-xdb-accumulation string)))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
516 (if result
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
517 (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
518 (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
519 result))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
520 (let ((line (string-to-int
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
521 (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
522 (file (gud-xdb-file-name
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
523 (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
524 (if file
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
525 (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
526 (or result "")))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
527
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
528 (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
529 (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
530 (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
531
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
532 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
533 (defun xdb (command-line)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
534 "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
535 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
536 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
537
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
538 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
539 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
540 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
541 (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
542 (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
543 (car gud-xdb-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
544 "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
545 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
546 '(gud-xdb-history . 1))))
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
547 (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
548 (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
549 (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
550
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
551 (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
552
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
553 (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
554 (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
555 "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
556 (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
557 (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
558 (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
559 (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
560 (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
561 (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
562 (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
563 (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
564
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
565 (setq comint-prompt-regexp "^>")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
566 (make-local-variable 'gud-xdb-accumulation)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
567 (setq gud-xdb-accumulation "")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
568 (run-hooks 'xdb-mode-hook))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
569
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
570 ;; ======================================================================
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
571 ;; perldb functions
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
572
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
573 ;;; History of argument lists passed to perldb.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
574 (defvar gud-perldb-history nil)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
575
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
576 (defun gud-perldb-massage-args (file args)
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
577 (cons "-d" (cons file (cons "-emacs" args))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
578
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
579 ;; 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
580 ;; 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
581 ;; 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
582 ;; 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
583 ;; 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
584 ;; filter.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
585 (defvar gud-perldb-marker-acc "")
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
586
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
587 (defun gud-perldb-marker-filter (string)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
588 (save-match-data
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
589 (setq gud-perldb-marker-acc (concat gud-perldb-marker-acc string))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
590 (let ((output ""))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
591
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
592 ;; Process all the complete markers in this chunk.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
593 (while (string-match "^\032\032\\([^:\n]*\\):\\([0-9]*\\):.*\n"
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
594 gud-perldb-marker-acc)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
595 (setq
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
596
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
597 ;; Extract the frame position from the marker.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
598 gud-last-frame
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
599 (cons (substring gud-perldb-marker-acc (match-beginning 1) (match-end 1))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
600 (string-to-int (substring gud-perldb-marker-acc
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
601 (match-beginning 2)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
602 (match-end 2))))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
603
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
604 ;; 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
605 ;; 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
606 output (concat output
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
607 (substring gud-perldb-marker-acc 0 (match-beginning 0)))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
608
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
609 ;; Set the accumulator to the remaining text.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
610 gud-perldb-marker-acc (substring gud-perldb-marker-acc (match-end 0))))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
611
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
612 ;; 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
613 ;; beginning of another marker? If it does, then keep it in
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
614 ;; gud-perldb-marker-acc until we receive the rest of it. Since we
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
615 ;; 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
616 ;; test for marker starts.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
617 (if (string-match "^\032.*\\'" gud-perldb-marker-acc)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
618 (progn
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
619 ;; Everything before the potential marker start can be output.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
620 (setq output (concat output (substring gud-perldb-marker-acc
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
621 0 (match-beginning 0))))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
622
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
623 ;; Everything after, we save, to combine with later input.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
624 (setq gud-perldb-marker-acc
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
625 (substring gud-perldb-marker-acc (match-beginning 0))))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
626
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
627 (setq output (concat output gud-perldb-marker-acc)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
628 gud-perldb-marker-acc ""))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
629
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
630 output)))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
631
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
632 (defun gud-perldb-find-file (f)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
633 (find-file-noselect f))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
634
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
635 ;;;###autoload
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
636 (defun perldb (command-line)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
637 "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
638 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
639 and source-file directory for your debugger."
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
640 (interactive
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
641 (list (read-from-minibuffer "Run perldb (like this): "
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
642 (if (consp gud-perldb-history)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
643 (car gud-perldb-history)
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
644 "perl ")
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
645 nil nil
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
646 '(gud-perldb-history . 1))))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
647 (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
648 (gud-marker-filter . gud-perldb-marker-filter)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
649 (gud-find-file . gud-perldb-find-file)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
650 ))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
651
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
652 (gud-common-init command-line)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
653
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
654 (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
655 (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
656 (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
657 (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
658 (gud-def gud-cont "c" "\C-r" "Continue with display.")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
659 ; (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
660 ; (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
661 ; (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
662 (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
663
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
664 (setq comint-prompt-regexp "^ DB<[0-9]+> ")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
665 (run-hooks 'perldb-mode-hook)
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
666 )
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
667
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
668 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
669 ;; End of debugger-specific information
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
670 ;;
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
671
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
672
1256
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
673 ;;; 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
674 ;;; 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
675 ;;; 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
676 ;;;
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
677 ;;; 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
678 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
679 ;;; (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
680 ;;; (gdb) -!-
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
681 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
682 ;;; (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
683 ;;; 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
684 ;;; this:
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
685 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
686 ;;; (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
687 ;;; 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
688 ;;; (gdb) -!-
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
689 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
690 ;;; 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
691 ;;; 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
692 ;;;
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
693 ;;; 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
694 ;;; 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
695 ;;; 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
696 ;;; 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
697 ;;; 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
698 ;;; 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
699 ;;; 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
700 ;;; 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
701 ;;; 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
702 ;;; 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
703 ;;; 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
704 ;;; 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
705 ;;; 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
706 ;;;
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
707 ;;; 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
708 ;;; 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
709 ;;; 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
710 ;;; 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
711 ;;; 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
712 ;;; 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
713 (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
714
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
715
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
716 (defun gud-mode ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
717 "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
718
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
719 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
720 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
721 `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
722
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
723 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
724 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
725 or step operation:
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
726
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
727 \\[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
728 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
729 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
730
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
731 \\[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
732
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
733 \\[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
734 in the gud buffer.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
735
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
736 \\[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
737 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
738 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
739 \\[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
740
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
741 \\[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
742 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
743
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
744 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
745 does not support stepping instructions.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
746
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
747 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
748 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
749 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
750
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
751 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
752 frame. \\[gud-down] drops back down through one.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
753
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
754 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
755 the current function and stops.
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
756
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
757 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
758 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
759
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
760 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
761 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
762 argument.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
763
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
764 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
765 commands.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
766
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
767 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
768 comint mode, which see."
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
769 (interactive)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
770 (comint-mode)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
771 (setq major-mode 'gud-mode)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
772 (setq mode-name "Debugger")
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
773 (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
774 (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
775 (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
776 (make-local-variable 'gud-last-frame)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
777 (setq gud-last-frame nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
778 (make-local-variable 'comint-prompt-regexp)
1256
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
779 (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
780 (setq gud-delete-prompt-marker (make-marker))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
781 (run-hooks 'gud-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
782 )
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
783
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
784 (defvar gud-comint-buffer nil)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
785
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
786 ;; 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
787 (defun gud-chop-words (string)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
788 (let ((i 0) (beg 0)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
789 (len (length string))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
790 (words nil))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
791 (while (< i len)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
792 (if (memq (aref string i) '(?\t ? ))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
793 (progn
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
794 (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
795 beg (1+ i))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
796 (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
797 (setq beg (1+ beg)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
798 (setq i (1+ beg)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
799 (setq i (1+ i))))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
800 (if (< beg len)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
801 (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
802 (nreverse words)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
803
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
804 ;; Perform initializations common to all debuggers.
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
805 (defun gud-common-init (command-line)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
806 (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
807 (program (car words))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
808 (file-word (let ((w (cdr words)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
809 (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
810 (setq w (cdr w)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
811 (car w)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
812 (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
813 (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
814 (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
815 (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
816 (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
817 (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
818 (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
819 (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
820 (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
821 (if file-word (gud-massage-args file args))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
822 (gud-mode)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
823 (set-process-filter (get-buffer-process (current-buffer)) 'gud-filter)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
824 (set-process-sentinel (get-buffer-process (current-buffer)) 'gud-sentinel)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
825 (gud-set-buffer)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
826 )
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
827
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
828 (defun gud-set-buffer ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
829 (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
830 (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
831
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
832 ;; 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
833 ;; 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
834 ;; 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
835
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
836 (defun gud-filter (proc string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
837 ;; Here's where the actual buffer insertion is done
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
838 (let ((inhibit-quit t))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
839 (save-excursion
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
840 (set-buffer (process-buffer proc))
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
841 (let (moving output-after-point)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
842 (save-excursion
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
843 (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
844 ;; If we have been so requested, delete the debugger prompt.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
845 (if (marker-buffer gud-delete-prompt-marker)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
846 (progn
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
847 (delete-region (point) gud-delete-prompt-marker)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
848 (set-marker gud-delete-prompt-marker nil)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
849 (insert-before-markers (gud-marker-filter string))
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
850 (setq moving (= (point) (process-mark proc)))
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
851 (setq output-after-point (< (point) (process-mark proc)))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
852 ;; Check for a filename-and-line number.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
853 ;; Don't display the specified file
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
854 ;; unless (1) point is at or after the position where output appears
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
855 ;; and (2) this buffer is on the screen.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
856 (if (and 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
857 (not output-after-point)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
858 (get-buffer-window (current-buffer)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
859 (gud-display-frame)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
860 (if moving (goto-char (process-mark proc)))))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
861
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
862 (defun gud-sentinel (proc msg)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
863 (cond ((null (buffer-name (process-buffer proc)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
864 ;; buffer killed
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
865 ;; Stop displaying an arrow in a source file.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
866 (setq overlay-arrow-position nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
867 (set-process-buffer proc nil))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
868 ((memq (process-status proc) '(signal exit))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
869 ;; Stop displaying an arrow in a source file.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
870 (setq overlay-arrow-position nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
871 ;; Fix the mode line.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
872 (setq mode-line-process
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
873 (concat ": "
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
874 (symbol-name (process-status proc))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
875 (let* ((obuf (current-buffer)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
876 ;; save-excursion isn't the right thing if
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
877 ;; process-buffer is current-buffer
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
878 (unwind-protect
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
879 (progn
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
880 ;; Write something in *compilation* and hack its mode line,
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
881 (set-buffer (process-buffer proc))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
882 ;; Force mode line redisplay soon
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
883 (set-buffer-modified-p (buffer-modified-p))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
884 (if (eobp)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
885 (insert ?\n mode-name " " msg)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
886 (save-excursion
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
887 (goto-char (point-max))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
888 (insert ?\n mode-name " " msg)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
889 ;; If buffer and mode line will show that the process
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
890 ;; is dead, we can delete it now. Otherwise it
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
891 ;; will stay around until M-x list-processes.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
892 (delete-process proc))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
893 ;; Restore old buffer, but don't restore old point
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
894 ;; if obuf is the gud buffer.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
895 (set-buffer obuf))))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
896
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
897 (defun gud-display-frame ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
898 "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
899 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
900 (interactive)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
901 (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
902 (progn
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
903 (gud-set-buffer)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
904 (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
905 (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
906 gud-last-frame nil))))
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 ;; 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
909 ;; and that its line LINE is visible.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
910 ;; 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
911 ;; 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
912 ;; 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
913 ;; 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
914
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
915 (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
916 (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
917 (window (display-buffer buffer))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
918 (pos))
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
919 ;;; (if (equal buffer (current-buffer))
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
920 ;;; nil
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
921 ;;; (setq buffer-read-only nil))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
922 (save-excursion
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
923 ;;; (setq buffer-read-only t)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
924 (set-buffer buffer)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
925 (save-restriction
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
926 (widen)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
927 (goto-line line)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
928 (setq pos (point))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
929 (setq overlay-arrow-string "=>")
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
930 (or overlay-arrow-position
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
931 (setq overlay-arrow-position (make-marker)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
932 (set-marker overlay-arrow-position (point) (current-buffer)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
933 (cond ((or (< pos (point-min)) (> pos (point-max)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
934 (widen)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
935 (goto-char pos))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
936 (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
937
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
938 ;;; 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
939 ;;; 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
940 ;;; 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
941 ;;; gud-last-frame. Here's how we do it:
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
942
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
943 (defun gud-format-command (str arg)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
944 (let ((insource (not (eq (current-buffer) gud-comint-buffer)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
945 (frame (or gud-last-frame gud-last-last-frame))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
946 result)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
947 (while (and str (string-match "\\([^%]*\\)%\\([adeflp]\\)" str))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
948 (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
949 subst)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
950 (cond
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
951 ((eq key ?f)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
952 (setq subst (file-name-nondirectory (if insource
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
953 (buffer-file-name)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
954 (car frame)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
955 ((eq key ?d)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
956 (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
957 (buffer-file-name)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
958 (car frame)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
959 ((eq key ?l)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
960 (setq subst (if insource
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
961 (save-excursion
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
962 (beginning-of-line)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
963 (save-restriction (widen)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
964 (1+ (count-lines 1 (point)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
965 (cdr frame))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
966 ((eq key ?e)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
967 (setq subst (find-c-expr)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
968 ((eq key ?a)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
969 (setq subst (gud-read-address)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
970 ((eq key ?p)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
971 (setq subst (if arg (int-to-string arg) ""))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
972 (setq result (concat result
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
973 (substring str (match-beginning 1) (match-end 1))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
974 subst)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
975 (setq str (substring str (match-end 2))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
976 ;; 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
977 (concat result str)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
978
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
979 (defun gud-read-address ()
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
980 "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
981 (save-excursion
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
982 (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
983 (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
984 (cond
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
985 (found (forward-char 2)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
986 (buffer-substring found
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
987 (progn (re-search-forward "[^0-9a-f]")
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
988 (forward-char -1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
989 (point))))
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
990 (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
991 (forward-char 1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
992 (point)))
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
993 (forward-char 1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
994 (re-search-forward "[^0-9]")
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
995 (forward-char -1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
996 (buffer-substring begin (point)))))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
997
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
998 (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
999 (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
1000 (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
1001 (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
1002 (gud-basic-call msg)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1003
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1004 (defun gud-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
1005 "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
1006 (interactive)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1007 (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
1008 (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
1009 (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
1010
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1011 ;; 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
1012 (save-excursion
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1013 (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
1014 (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
1015 (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
1016 (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
1017 (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
1018 (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
1019
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1020 (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
1021 "Fix up a possibly garbled display, and redraw the arrow."
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1022 (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
1023 (recenter arg)
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
1024 (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
1025 (gud-display-frame))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1026
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1027 ;;; 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
1028 ;;; 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
1029 ;;;
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1030 ;;; 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
1031 ;;; 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
1032 ;;; 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
1033
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1034 (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
1035 "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
1036 (interactive)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1037 (save-excursion
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1038 (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
1039 (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
1040 (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
1041 (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
1042 (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
1043 (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
1044 (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
1045 (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
1046 (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
1047 (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
1048 (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
1049 (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
1050 (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
1051 )
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1052 (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
1053
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1054 (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
1055 "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
1056 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
1057 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
1058 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
1059 (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
1060 (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
1061 (setq begin (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1062 (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
1063 (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
1064 (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
1065 (progn
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1066 (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
1067 (goto-char p)
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1068 (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
1069 (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
1070 )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1071 )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1072 (goto-char begin)
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1073 (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
1074
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1075 (defun expr-backward-sexp ()
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1076 "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
1077 (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
1078 (backward-sexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1079 (error t)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1080
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1081 (defun expr-forward-sexp ()
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1082 "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
1083 (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
1084 (forward-sexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1085 (error t)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1086
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1087 (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
1088 "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
1089 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
1090 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
1091 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
1092 (let ((begin) (end))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1093 (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
1094 (setq begin (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1095 (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
1096 (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
1097 (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
1098 (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
1099
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1100 (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
1101 "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
1102 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
1103 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
1104 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
1105 (let ((begin) (end))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1106 (expr-forward-sexp)
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1107 (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
1108 (setq end (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1109 (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
1110 (setq begin (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1111 (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
1112
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1113 (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
1114 "Returns '.' for '->' & '.', returns ' ' for white space,
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3551
diff changeset
1115 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
1116 (let ((result ? )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1117 (syntax))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1118 (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
1119 (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
1120 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1121 ((= syntax ? ) t)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1122 ((= 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
1123 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1124 ((= 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
1125 ((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
1126 (setq result ?.)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1127 (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
1128 (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
1129 (setq result ??)))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1130 (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
1131 result))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1132
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1133 (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
1134 "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
1135 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
1136 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
1137 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
1138 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
1139 Expr -> Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1140 Expr . Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1141 Expr (Expr)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1142 Expr [Expr]
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1143 (Expr) Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1144 [Expr] Expr"
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1145 (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
1146 (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
1147 (syntax))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1148 (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
1149 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1150 ((= (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
1151 ((= (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
1152 ((= syntax ?.) t)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1153 ((= syntax ? )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1154 (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
1155 (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
1156 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1157 ((= 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
1158 ((= 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
1159 ((= 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
1160 ((= 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
1161 (t nil))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1162 )
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1163 (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
1164
4016
27d35763dda9 Add (provide 'gud).
Roland McGrath <roland@gnu.org>
parents: 3930
diff changeset
1165 (provide 'gud)
27d35763dda9 Add (provide 'gud).
Roland McGrath <roland@gnu.org>
parents: 3930
diff changeset
1166
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
1167 ;;; gud.el ends here