Mercurial > emacs
annotate lisp/gud.el @ 4680:9d56bce1534a
* filelock.c (fill_in_lock_short_file_name): corrected the crc
generation algorithm.
author | Francesco Potortì <pot@gnu.org> |
---|---|
date | Wed, 08 Sep 1993 15:28:44 +0000 |
parents | 820df40f1e8c |
children | fdbcbaea7296 |
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> |
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
|
5 ;; Version: 1.3 |
810
80303373daae
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
6 ;; Keywords: unix, tools |
80303373daae
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
7 |
2960
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
8 ;; Copyright (C) 1992, 1993 Free Software Foundation, Inc. |
460 | 9 |
10 ;; This file is part of GNU Emacs. | |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
13 ;; 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
|
14 ;; the Free Software Foundation; either version 2, or (at your option) |
460 | 15 ;; any later version. |
16 | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with GNU Emacs; see the file COPYING. If not, write to | |
24 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | |
25 | |
810
80303373daae
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
26 ;;; Commentary: |
80303373daae
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
27 |
460 | 28 ;; 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
|
29 ;; It was later rewritten by rms. Some ideas were due to Masanobu. |
810
80303373daae
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
30 ;; Grand Unification (sdb/dbx support) by Eric S. Raymond <esr@thyrsus.com> |
460 | 31 ;; The overloading code was then rewritten by Barry Warsaw <bwarsaw@cen.com>, |
3738
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
32 ;; who also hacked the mode to use comint.el. Shane Hartman <shane@spr.com> |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
33 ;; added support for xdb (HPUX debugger). |
460 | 34 |
810
80303373daae
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
35 ;;; Code: |
80303373daae
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
36 |
460 | 37 (require 'comint) |
923 | 38 (require 'etags) |
460 | 39 |
40 ;; ====================================================================== | |
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
|
41 ;; 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
|
42 |
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
|
43 (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
|
44 "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
|
45 |
2581
839d67a1dc58
Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2532
diff
changeset
|
46 (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
|
47 (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
|
48 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
49 ;; ====================================================================== |
460 | 50 ;; the overloading mechanism |
51 | |
52 (defun gud-overload-functions (gud-overload-alist) | |
53 "Overload functions defined in GUD-OVERLOAD-ALIST. | |
54 This association list has elements of the form | |
55 (ORIGINAL-FUNCTION-NAME OVERLOAD-FUNCTION)" | |
868
0cda1f7b154e
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
810
diff
changeset
|
56 (mapcar |
0cda1f7b154e
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
810
diff
changeset
|
57 (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
|
58 gud-overload-alist)) |
460 | 59 |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
60 (defun gud-massage-args (file args) |
460 | 61 (error "GUD not properly entered.")) |
62 | |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
63 (defun gud-marker-filter (str) |
460 | 64 (error "GUD not properly entered.")) |
65 | |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
66 (defun gud-find-file (f) |
460 | 67 (error "GUD not properly entered.")) |
68 | |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
69 ;; ====================================================================== |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
70 ;; command definition |
460 | 71 |
72 ;; 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
|
73 ;; Of course you may use `gud-def' with any other debugger command, including |
1255 | 74 ;; user defined ones. |
75 | |
76 ;; A macro call like (gud-def FUNC NAME KEY DOC) expands to a form | |
77 ;; 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
|
78 ;; 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
|
79 ;; 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
|
80 ;; 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
|
81 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
82 (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
|
83 "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
|
84 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
|
85 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
|
86 |
4344
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
87 %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
|
88 %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
|
89 %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
|
90 %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
|
91 %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
|
92 %p prefix argument to the command (if any) as a number |
460 | 93 |
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
|
94 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
|
95 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
|
96 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
|
97 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
|
98 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
|
99 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
|
100 (list 'progn |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
101 (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
|
102 (or doc "") |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
103 '(interactive "p") |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
104 (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
|
105 (if key |
2960
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
106 (list 'define-key |
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
107 '(current-local-map) |
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
108 (concat "\C-c" key) |
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
109 (list 'quote func))) |
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
110 (if key |
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
111 (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
|
112 (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
|
113 (list 'quote func))))) |
460 | 114 |
1275
68f025a5fdaa
* gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents:
1274
diff
changeset
|
115 ;; 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
|
116 ;; 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
|
117 ;; 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
|
118 (defvar gud-last-frame nil) |
68f025a5fdaa
* gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents:
1274
diff
changeset
|
119 |
3646
4b34cbec2058
* gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents:
3591
diff
changeset
|
120 ;; 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
|
121 ;; 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
|
122 ;; 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
|
123 (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
|
124 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
125 ;; 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
|
126 ;; Here's how it works, in case you ever need to add a debugger to the mode. |
460 | 127 ;; |
128 ;; Each entry must define the following at startup: | |
129 ;; | |
130 ;;<name> | |
131 ;; comint-prompt-regexp | |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
132 ;; gud-<name>-massage-args |
460 | 133 ;; 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
|
134 ;; gud-<name>-find-file |
460 | 135 ;; |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
136 ;; 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
|
137 ;; debugger arguments before running the debugger. |
477 | 138 ;; |
139 ;; The job of the marker-filter method is to detect file/line markers in | |
140 ;; strings and set the global gud-last-frame to indicate what display | |
141 ;; 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
|
142 ;; whatever the method *returns* is displayed in the buffer; thus, you |
477 | 143 ;; can filter the debugger's output, interpreting some and passing on |
144 ;; the rest. | |
145 ;; | |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
146 ;; The job of the find-file method is to visit and return the buffer indicated |
477 | 147 ;; by the car of gud-tag-frame. This may be a file name, a tag name, or |
148 ;; something else. | |
460 | 149 |
150 ;; ====================================================================== | |
151 ;; gdb functions | |
152 | |
3930
ac686479ca51
* gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents:
3745
diff
changeset
|
153 ;;; 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
|
154 (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
|
155 |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
156 (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
|
157 (cons "-fullname" (cons file args))) |
460 | 158 |
4346
3011390123ed
* gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents:
4344
diff
changeset
|
159 ;; 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
|
160 ;; 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
|
161 ;; 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
|
162 ;; 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
|
163 ;; 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
|
164 ;; filter. |
3011390123ed
* gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents:
4344
diff
changeset
|
165 (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
|
166 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
167 (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
|
168 (save-match-data |
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
169 (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
|
170 (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
|
171 |
4357
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
172 ;; 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
|
173 (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
|
174 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
|
175 (setq |
4346
3011390123ed
* gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents:
4344
diff
changeset
|
176 |
4357
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
177 ;; 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
|
178 gud-last-frame |
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
179 (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
|
180 (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
|
181 (match-beginning 2) |
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
182 (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
|
183 |
4357
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
184 ;; 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
|
185 ;; 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
|
186 output (concat output |
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
187 (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
|
188 |
4357
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
189 ;; 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
|
190 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
|
191 |
4357
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
192 ;; 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
|
193 ;; 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
|
194 ;; 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
|
195 ;; 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
|
196 ;; 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
|
197 (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
|
198 (progn |
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
199 ;; 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
|
200 (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
|
201 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
|
202 |
4357
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
203 ;; 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
|
204 (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
|
205 (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
|
206 |
4357
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
207 (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
|
208 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
|
209 |
4357
5731da0436e8
* gud.el (gud-gdb-marker-filter): Preserve the match data across
Jim Blandy <jimb@redhat.com>
parents:
4346
diff
changeset
|
210 output))) |
460 | 211 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
212 (defun gud-gdb-find-file (f) |
460 | 213 (find-file-noselect f)) |
214 | |
477 | 215 ;;;###autoload |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
216 (defun gdb (command-line) |
460 | 217 "Run gdb on program FILE in buffer *gud-FILE*. |
218 The directory containing FILE becomes the initial working directory | |
219 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
|
220 (interactive |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
221 (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
|
222 (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
|
223 (car gud-gdb-history) |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
224 "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
|
225 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
|
226 '(gud-gdb-history . 1)))) |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
227 (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
|
228 (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
|
229 (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
|
230 )) |
460 | 231 |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
232 (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
|
233 |
2960
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
234 (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
|
235 (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
|
236 (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
|
237 (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
|
238 (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
|
239 (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
|
240 (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
|
241 (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
|
242 (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
|
243 (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
|
244 (gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.") |
460 | 245 |
246 (setq comint-prompt-regexp "^(.*gdb[+]?) *") | |
247 (run-hooks 'gdb-mode-hook) | |
248 ) | |
249 | |
250 | |
251 ;; ====================================================================== | |
252 ;; sdb functions | |
253 | |
3930
ac686479ca51
* gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents:
3745
diff
changeset
|
254 ;;; 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
|
255 (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
|
256 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
257 (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
|
258 "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
|
259 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
260 (defvar gud-sdb-lastfile nil) |
460 | 261 |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
262 (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
|
263 (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
|
264 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
265 (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
|
266 (cond |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
267 ;; 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
|
268 ((string-match "\\(^0x\\w* in \\|^\\|\n\\)\\([^:\n]*\\):\\([0-9]*\\):.*\n" |
1255 | 269 string) |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
270 (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
|
271 (cons |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
272 (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
|
273 (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
|
274 (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
|
275 ;; 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
|
276 ((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
|
277 string) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
278 (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
|
279 (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
|
280 ((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
|
281 (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
|
282 (cons |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
283 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
|
284 (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
|
285 (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
|
286 (t |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
287 (setq gud-sdb-lastfile nil))) |
460 | 288 string) |
289 | |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
290 (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
|
291 (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
|
292 (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
|
293 (find-file-noselect f))) |
460 | 294 |
477 | 295 ;;;###autoload |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
296 (defun sdb (command-line) |
460 | 297 "Run sdb on program FILE in buffer *gud-FILE*. |
298 The directory containing FILE becomes the initial working directory | |
299 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
|
300 (interactive |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
301 (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
|
302 (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
|
303 (car gud-sdb-history) |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
304 "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
|
305 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
|
306 '(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
|
307 (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
|
308 (not (and (boundp 'tags-file-name) (file-exists-p tags-file-name)))) |
460 | 309 (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
|
310 (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
|
311 (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
|
312 (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
|
313 )) |
460 | 314 |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
315 (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
|
316 |
2960
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
317 (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
|
318 (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
|
319 (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
|
320 (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
|
321 (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
|
322 (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
|
323 (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
|
324 (gud-def gud-print "%e/" "\C-p" "Evaluate C expression at point.") |
460 | 325 |
1255 | 326 (setq comint-prompt-regexp "\\(^\\|\n\\)\\*") |
460 | 327 (run-hooks 'sdb-mode-hook) |
328 ) | |
329 | |
330 ;; ====================================================================== | |
331 ;; dbx functions | |
332 | |
3930
ac686479ca51
* gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents:
3745
diff
changeset
|
333 ;;; 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
|
334 (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
|
335 |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
336 (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
|
337 (cons file args)) |
460 | 338 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
339 (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
|
340 (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
|
341 "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
|
342 string) |
820df40f1e8c
(gud-dbx-marker-filter): Detect signals as well as bpts.
Richard M. Stallman <rms@gnu.org>
parents:
4357
diff
changeset
|
343 (string-match |
820df40f1e8c
(gud-dbx-marker-filter): Detect signals as well as bpts.
Richard M. Stallman <rms@gnu.org>
parents:
4357
diff
changeset
|
344 "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
|
345 string)) |
460 | 346 (setq gud-last-frame |
347 (cons | |
348 (substring string (match-beginning 2) (match-end 2)) | |
349 (string-to-int | |
350 (substring string (match-beginning 1) (match-end 1)))))) | |
351 string) | |
352 | |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
353 (defun gud-dbx-find-file (f) |
460 | 354 (find-file-noselect f)) |
355 | |
477 | 356 ;;;###autoload |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
357 (defun dbx (command-line) |
460 | 358 "Run dbx on program FILE in buffer *gud-FILE*. |
359 The directory containing FILE becomes the initial working directory | |
360 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
|
361 (interactive |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
362 (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
|
363 (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
|
364 (car gud-dbx-history) |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
365 "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
|
366 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
|
367 '(gud-dbx-history . 1)))) |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
368 (gud-overload-functions '((gud-massage-args . gud-dbx-massage-args) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
369 (gud-marker-filter . gud-dbx-marker-filter) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
370 (gud-find-file . gud-dbx-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
|
371 )) |
868
0cda1f7b154e
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
810
diff
changeset
|
372 |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
373 (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
|
374 |
4344
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
375 (gud-def gud-break "file \"%d%f\"\nstop at %l" |
2960
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
376 "\C-b" "Set breakpoint at current line.") |
4298
2455c90e1371
(dbx): For gud-break, send a file command and a stop command.
Richard M. Stallman <rms@gnu.org>
parents:
4092
diff
changeset
|
377 ;; (gud-def gud-break "stop at \"%f\":%l" |
2455c90e1371
(dbx): For gud-break, send a file command and a stop command.
Richard M. Stallman <rms@gnu.org>
parents:
4092
diff
changeset
|
378 ;; "\C-b" "Set breakpoint at current line.") |
2960
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
379 (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
|
380 (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
|
381 (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
|
382 (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
|
383 (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
|
384 (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
|
385 (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
|
386 (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
|
387 |
460 | 388 (setq comint-prompt-regexp "^[^)]*dbx) *") |
389 (run-hooks 'dbx-mode-hook) | |
390 ) | |
391 | |
3738
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
392 ;; ====================================================================== |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
393 ;; xdb (HP PARISC debugger) functions |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
394 |
3930
ac686479ca51
* gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents:
3745
diff
changeset
|
395 ;;; 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
|
396 (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
|
397 |
3745
3c4f7e74e3f0
(gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents:
3738
diff
changeset
|
398 (defvar gud-xdb-directories nil |
3c4f7e74e3f0
(gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents:
3738
diff
changeset
|
399 "*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
|
400 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
|
401 will be known to xdb. |
3c4f7e74e3f0
(gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents:
3738
diff
changeset
|
402 |
3c4f7e74e3f0
(gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents:
3738
diff
changeset
|
403 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
|
404 containing the executable being debugged.") |
3c4f7e74e3f0
(gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents:
3738
diff
changeset
|
405 |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
406 (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
|
407 (nconc (let ((directories gud-xdb-directories) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
408 (result nil)) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
409 (while directories |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
410 (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
|
411 (setq directories (cdr directories))) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
412 (nreverse (cons file result))) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
413 args)) |
3738
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
414 |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
415 (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
|
416 "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
|
417 (let ((result nil)) |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
418 (if (file-exists-p f) |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
419 (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
|
420 (let ((directories gud-xdb-directories)) |
3c4f7e74e3f0
(gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents:
3738
diff
changeset
|
421 (while directories |
3c4f7e74e3f0
(gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents:
3738
diff
changeset
|
422 (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
|
423 (if (file-exists-p path) |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
424 (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
|
425 directories nil))) |
3c4f7e74e3f0
(gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents:
3738
diff
changeset
|
426 (setq directories (cdr directories))))) |
3738
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
427 result)) |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
428 |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
429 ;; 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
|
430 (defvar gud-xdb-accumulation "") |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
431 |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
432 (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
|
433 (let (result) |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
434 (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
|
435 (string-match ".*\012" string)) |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
436 (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
|
437 gud-xdb-accumulation "") |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
438 (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
|
439 (if result |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
440 (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
|
441 (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
|
442 result)) |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
443 (let ((line (string-to-int |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
444 (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
|
445 (file (gud-xdb-file-name |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
446 (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
|
447 (if file |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
448 (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
|
449 (or result ""))) |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
450 |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
451 (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
|
452 (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
|
453 (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
|
454 |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
455 ;;;###autoload |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
456 (defun xdb (command-line) |
3738
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
457 "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
|
458 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
|
459 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
|
460 |
3745
3c4f7e74e3f0
(gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents:
3738
diff
changeset
|
461 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
|
462 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
|
463 (interactive |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
464 (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
|
465 (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
|
466 (car gud-xdb-history) |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
467 "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
|
468 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
|
469 '(gud-xdb-history . 1)))) |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
470 (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
|
471 (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
|
472 (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
|
473 |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
474 (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
|
475 |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
476 (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
|
477 (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
|
478 "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
|
479 (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
|
480 (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
|
481 (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
|
482 (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
|
483 (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
|
484 (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
|
485 (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
|
486 (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
|
487 |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
488 (setq comint-prompt-regexp "^>") |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
489 (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
|
490 (setq gud-xdb-accumulation "") |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
491 (run-hooks 'xdb-mode-hook)) |
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
492 |
460 | 493 ;; |
494 ;; End of debugger-specific information | |
477 | 495 ;; |
460 | 496 |
1256
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
497 ;;; 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
|
498 ;;; 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
|
499 ;;; 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
|
500 ;;; |
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
501 ;;; 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
|
502 ;;; -------------------- |
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
503 ;;; (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
|
504 ;;; (gdb) -!- |
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
505 ;;; -------------------- |
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
506 ;;; (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
|
507 ;;; 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
|
508 ;;; this: |
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
509 ;;; -------------------- |
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
510 ;;; (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
|
511 ;;; 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
|
512 ;;; (gdb) -!- |
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
513 ;;; -------------------- |
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
514 ;;; 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
|
515 ;;; 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
|
516 ;;; |
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
517 ;;; 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
|
518 ;;; 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
|
519 ;;; 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
|
520 ;;; 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
|
521 ;;; 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
|
522 ;;; 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
|
523 ;;; 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
|
524 ;;; 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
|
525 ;;; 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
|
526 ;;; 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
|
527 ;;; 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
|
528 ;;; 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
|
529 ;;; 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
|
530 ;;; |
ff24725192d3
* gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents:
1255
diff
changeset
|
531 ;;; 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
|
532 ;;; 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
|
533 ;;; 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
|
534 ;;; 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
|
535 ;;; 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
|
536 ;;; 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
|
537 (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
|
538 |
460 | 539 |
540 (defun gud-mode () | |
541 "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
|
542 |
3738
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
543 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
|
544 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
|
545 `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
|
546 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
547 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
|
548 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
|
549 or step operation: |
460 | 550 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
551 \\[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
|
552 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
|
553 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
|
554 |
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
|
555 \\[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
|
556 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
557 \\[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
|
558 in the gud buffer. |
460 | 559 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
560 \\[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
|
561 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
|
562 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
|
563 \\[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
|
564 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
565 \\[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
|
566 around point, and sends it to the debugger for value display. |
460 | 567 |
3738
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
568 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
|
569 does not support stepping instructions. |
868
0cda1f7b154e
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
810
diff
changeset
|
570 |
3738
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
571 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
|
572 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
|
573 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
|
574 |
3738
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
575 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
|
576 frame. \\[gud-down] drops back down through one. |
868
0cda1f7b154e
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
810
diff
changeset
|
577 |
3738
c5ebd279e007
(xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents:
3646
diff
changeset
|
578 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
|
579 the current function and stops. |
0cda1f7b154e
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
810
diff
changeset
|
580 |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
581 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
|
582 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
|
583 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
584 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
|
585 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
|
586 argument. |
868
0cda1f7b154e
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
810
diff
changeset
|
587 |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
588 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
|
589 commands. |
868
0cda1f7b154e
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
810
diff
changeset
|
590 |
0cda1f7b154e
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
810
diff
changeset
|
591 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
|
592 comint mode, which see." |
460 | 593 (interactive) |
594 (comint-mode) | |
595 (setq major-mode 'gud-mode) | |
596 (setq mode-name "Debugger") | |
597 (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
|
598 (use-local-map (copy-keymap comint-mode-map)) |
460 | 599 (make-local-variable 'gud-last-frame) |
600 (setq gud-last-frame nil) | |
601 (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
|
602 (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
|
603 (setq gud-delete-prompt-marker (make-marker)) |
460 | 604 (run-hooks 'gud-mode-hook) |
605 ) | |
606 | |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
607 (defvar gud-comint-buffer nil) |
460 | 608 |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
609 ;; 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
|
610 (defun gud-chop-words (string) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
611 (let ((i 0) (beg 0) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
612 (len (length string)) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
613 (words nil)) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
614 (while (< i len) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
615 (if (memq (aref string i) '(?\t ? )) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
616 (progn |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
617 (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
|
618 beg (1+ i)) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
619 (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
|
620 (setq beg (1+ beg))) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
621 (setq i (1+ beg))) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
622 (setq i (1+ i)))) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
623 (if (< beg len) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
624 (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
|
625 (nreverse words))) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
626 |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
627 ;; Perform initializations common to all debuggers. |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
628 (defun gud-common-init (command-line) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
629 (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
|
630 (program (car words)) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
631 (file-word (let ((w (cdr words))) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
632 (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
|
633 (setq w (cdr w))) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
634 (car w))) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
635 (args (delq file-word (cdr words))) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
636 (file (expand-file-name file-word)) |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
637 (filepart (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
|
638 (switch-to-buffer (concat "*gud-" filepart "*")) |
4092
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
639 (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
|
640 (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
|
641 (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
|
642 (apply 'make-comint (concat "gud-" filepart) program nil |
e72012acb5fb
(gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents:
4016
diff
changeset
|
643 (gud-massage-args file args))) |
460 | 644 (gud-mode) |
645 (set-process-filter (get-buffer-process (current-buffer)) 'gud-filter) | |
646 (set-process-sentinel (get-buffer-process (current-buffer)) 'gud-sentinel) | |
647 (gud-set-buffer) | |
648 ) | |
649 | |
650 (defun gud-set-buffer () | |
651 (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
|
652 (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
|
653 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
654 ;; 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
|
655 ;; 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
|
656 ;; 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
|
657 |
460 | 658 (defun gud-filter (proc string) |
659 ;; 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
|
660 (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
|
661 (save-excursion |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
662 (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
|
663 (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
|
664 (save-excursion |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
665 (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
|
666 ;; 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
|
667 (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
|
668 (progn |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
669 (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
|
670 (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
|
671 (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
|
672 (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
|
673 (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
|
674 ;; 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
|
675 ;; 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
|
676 ;; 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
|
677 ;; 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
|
678 (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
|
679 (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
|
680 (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
|
681 (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
|
682 (if moving (goto-char (process-mark proc))))))) |
460 | 683 |
684 (defun gud-sentinel (proc msg) | |
685 (cond ((null (buffer-name (process-buffer proc))) | |
686 ;; buffer killed | |
687 ;; Stop displaying an arrow in a source file. | |
688 (setq overlay-arrow-position nil) | |
689 (set-process-buffer proc nil)) | |
690 ((memq (process-status proc) '(signal exit)) | |
691 ;; Stop displaying an arrow in a source file. | |
692 (setq overlay-arrow-position nil) | |
693 ;; Fix the mode line. | |
694 (setq mode-line-process | |
695 (concat ": " | |
696 (symbol-name (process-status proc)))) | |
697 (let* ((obuf (current-buffer))) | |
698 ;; save-excursion isn't the right thing if | |
699 ;; process-buffer is current-buffer | |
700 (unwind-protect | |
701 (progn | |
702 ;; Write something in *compilation* and hack its mode line, | |
703 (set-buffer (process-buffer proc)) | |
704 ;; Force mode line redisplay soon | |
705 (set-buffer-modified-p (buffer-modified-p)) | |
706 (if (eobp) | |
707 (insert ?\n mode-name " " msg) | |
708 (save-excursion | |
709 (goto-char (point-max)) | |
710 (insert ?\n mode-name " " msg))) | |
711 ;; If buffer and mode line will show that the process | |
712 ;; is dead, we can delete it now. Otherwise it | |
713 ;; will stay around until M-x list-processes. | |
714 (delete-process proc)) | |
715 ;; Restore old buffer, but don't restore old point | |
716 ;; if obuf is the gud buffer. | |
717 (set-buffer obuf)))))) | |
718 | |
719 (defun gud-display-frame () | |
720 "Find and obey the last filename-and-line marker from the debugger. | |
721 Obeying it means displaying in another window the specified file and line." | |
722 (interactive) | |
723 (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
|
724 (progn |
460 | 725 (gud-set-buffer) |
726 (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
|
727 (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
|
728 gud-last-frame nil)))) |
460 | 729 |
730 ;; Make sure the file named TRUE-FILE is in a buffer that appears on the screen | |
731 ;; and that its line LINE is visible. | |
732 ;; 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
|
733 ;; 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
|
734 ;; 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
|
735 ;; to get around the fact that this is called inside a save-excursion. |
460 | 736 |
737 (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
|
738 (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
|
739 (window (display-buffer buffer)) |
460 | 740 (pos)) |
2960
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
741 ;;; (if (equal buffer (current-buffer)) |
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
742 ;;; nil |
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
743 ;;; (setq buffer-read-only nil)) |
460 | 744 (save-excursion |
2960
372386917f03
(gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents:
2594
diff
changeset
|
745 ;;; (setq buffer-read-only t) |
460 | 746 (set-buffer buffer) |
747 (save-restriction | |
748 (widen) | |
749 (goto-line line) | |
750 (setq pos (point)) | |
751 (setq overlay-arrow-string "=>") | |
752 (or overlay-arrow-position | |
753 (setq overlay-arrow-position (make-marker))) | |
754 (set-marker overlay-arrow-position (point) (current-buffer))) | |
755 (cond ((or (< pos (point-min)) (> pos (point-max))) | |
756 (widen) | |
757 (goto-char pos)))) | |
758 (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
|
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 ;;; 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
|
761 ;;; 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
|
762 ;;; 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
|
763 ;;; gud-last-frame. Here's how we do it: |
460 | 764 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
765 (defun gud-format-command (str arg) |
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
|
766 (let ((insource (not (eq (current-buffer) gud-comint-buffer)))) |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
767 (if (string-match "\\(.*\\)%f\\(.*\\)" str) |
4344
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
768 (setq str (concat |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
769 (substring str (match-beginning 1) (match-end 1)) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
770 (file-name-nondirectory (if insource |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
771 (buffer-file-name) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
772 (car gud-last-frame))) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
773 (substring str (match-beginning 2) (match-end 2))))) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
774 (if (string-match "\\(.*\\)%d\\(.*\\)" str) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
775 (setq str (concat |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
776 (substring str (match-beginning 1) (match-end 1)) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
777 (file-name-directory (if insource |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
778 (buffer-file-name) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
779 (car gud-last-frame))) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
780 (substring str (match-beginning 2) (match-end 2))))) |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
781 (if (string-match "\\(.*\\)%l\\(.*\\)" str) |
4344
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
782 (setq str (concat |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
783 (substring str (match-beginning 1) (match-end 1)) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
784 (if insource |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
785 (save-excursion |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
786 (beginning-of-line) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
787 (save-restriction (widen) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
788 (1+ (count-lines 1 (point))))) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
789 (cdr gud-last-frame)) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
790 (substring str (match-beginning 2) (match-end 2))))) |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
791 (if (string-match "\\(.*\\)%e\\(.*\\)" str) |
4344
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
792 (setq str (concat |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
793 (substring str (match-beginning 1) (match-end 1)) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
794 (find-c-expr) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
795 (substring str (match-beginning 2) (match-end 2))))) |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
796 (if (string-match "\\(.*\\)%a\\(.*\\)" str) |
4344
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
797 (setq str (concat |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
798 (substring str (match-beginning 1) (match-end 1)) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
799 (gud-read-address) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
800 (substring str (match-beginning 2) (match-end 2))))) |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
801 (if (string-match "\\(.*\\)%p\\(.*\\)" str) |
4344
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
802 (setq str (concat |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
803 (substring str (match-beginning 1) (match-end 1)) |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
804 (if arg (int-to-string arg) "") |
be116c77da2f
(dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents:
4335
diff
changeset
|
805 (substring str (match-beginning 2) (match-end 2))))) |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
806 ) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
807 str |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
808 ) |
460 | 809 |
1255 | 810 (defun gud-read-address () |
460 | 811 "Return a string containing the core-address found in the buffer at point." |
812 (save-excursion | |
1255 | 813 (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
|
814 (setq found (if (search-backward "0x" (- pt 7) t) (point))) |
1255 | 815 (cond |
816 (found (forward-char 2) | |
817 (buffer-substring found | |
818 (progn (re-search-forward "[^0-9a-f]") | |
819 (forward-char -1) | |
820 (point)))) | |
821 (t (setq begin (progn (re-search-backward "[^0-9]") | |
822 (forward-char 1) | |
823 (point))) | |
824 (forward-char 1) | |
825 (re-search-forward "[^0-9]") | |
826 (forward-char -1) | |
827 (buffer-substring begin (point))))))) | |
460 | 828 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
829 (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
|
830 (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
|
831 (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
|
832 (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
|
833 (gud-basic-call msg))) |
460 | 834 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
835 (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
|
836 "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
|
837 (interactive) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
838 (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
|
839 (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
|
840 (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
|
841 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
842 ;; 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
|
843 (save-excursion |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
844 (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
|
845 (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
|
846 (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
|
847 (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
|
848 (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
|
849 (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
|
850 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
851 (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
|
852 "Fix up a possibly garbled display, and redraw the arrow." |
460 | 853 (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
|
854 (recenter arg) |
3646
4b34cbec2058
* gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents:
3591
diff
changeset
|
855 (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
|
856 (gud-display-frame)) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
857 |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
858 ;;; 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
|
859 ;;; 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
|
860 ;;; |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
861 ;;; 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
|
862 ;;; 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
|
863 ;;; 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
|
864 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
865 (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
|
866 "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
|
867 (interactive) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
868 (save-excursion |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
869 (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
|
870 (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
|
871 (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
|
872 (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
|
873 (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
|
874 (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
|
875 (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
|
876 (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
|
877 (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
|
878 (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
|
879 (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
|
880 (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
|
881 (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
|
882 ) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
883 (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
|
884 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
885 (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
|
886 "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
|
887 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
|
888 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
|
889 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
|
890 (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
|
891 (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
|
892 (setq begin (point)) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
893 (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
|
894 (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
|
895 (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
|
896 (progn |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
897 (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
|
898 (goto-char p) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
899 (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
|
900 (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
|
901 ) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
902 ) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
903 (goto-char begin) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
904 (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
|
905 |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
906 (defun expr-backward-sexp () |
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
907 "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
|
908 (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
|
909 (backward-sexp) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
910 (error t))) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
911 |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
912 (defun expr-forward-sexp () |
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
913 "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
|
914 (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
|
915 (forward-sexp) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
916 (error t))) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
917 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
918 (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
|
919 "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
|
920 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
|
921 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
|
922 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
|
923 (let ((begin) (end)) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
924 (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
|
925 (setq begin (point)) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
926 (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
|
927 (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
|
928 (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
|
929 (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
|
930 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
931 (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
|
932 "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
|
933 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
|
934 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
|
935 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
|
936 (let ((begin) (end)) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
937 (expr-forward-sexp) |
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
938 (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
|
939 (setq end (point)) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
940 (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
|
941 (setq begin (point)) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
942 (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
|
943 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
944 (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
|
945 "Returns '.' for '->' & '.', returns ' ' for white space, |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3551
diff
changeset
|
946 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
|
947 (let ((result ? ) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
948 (syntax)) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
949 (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
|
950 (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
|
951 (cond |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
952 ((= syntax ? ) t) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
953 ((= 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
|
954 (cond |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
955 ((= 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
|
956 ((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
|
957 (setq result ?.) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
958 (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
|
959 (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
|
960 (setq result ??))))) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
961 (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
|
962 result)) |
2489
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
963 |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
964 (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
|
965 "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
|
966 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
|
967 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
|
968 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
|
969 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
|
970 Expr -> Expr |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
971 Expr . Expr |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
972 Expr (Expr) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
973 Expr [Expr] |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
974 (Expr) Expr |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
975 [Expr] Expr" |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
976 (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
|
977 (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
|
978 (syntax)) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
979 (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
|
980 (cond |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
981 ((= (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
|
982 ((= (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
|
983 ((= syntax ?.) t) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
984 ((= syntax ? ) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
985 (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
|
986 (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
|
987 (cond |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
988 ((= 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
|
989 ((= 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
|
990 ((= 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
|
991 ((= 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
|
992 (t nil)) |
b626f5b9a0df
Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1902
diff
changeset
|
993 ) |
3551
8b5fa2d1755f
Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents:
3343
diff
changeset
|
994 (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
|
995 |
4016 | 996 (provide 'gud) |
997 | |
810
80303373daae
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
998 ;;; gud.el ends here |