annotate lisp/progmodes/gdb-ui.el @ 107200:e8c35d7a4eac

Revert isearch.el change due to feature freeze. * isearch.el (isearch-update-post-hook, isearch-update): Revert 2010-02-17 change.
author Chong Yidong <cyd@stupidchicken.com>
date Fri, 19 Feb 2010 16:36:29 -0500
parents 19bad34b0d81
children 33d43eba45d4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1 ;;; gdb-ui.el --- User Interface for running GDB
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3 ;; Author: Nick Roberts <nickrob@gnu.org>
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4 ;; Maintainer: FSF
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
5 ;; Keywords: unix, tools
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
6
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106697
diff changeset
7 ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
8 ;; Free Software Foundation, Inc.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
9
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
11
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
15 ;; (at your option) any later version.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
16
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
20 ;; GNU General Public License for more details.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
21
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
24
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
25 ;;; Commentary:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
26
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
27 ;; This mode acts as a graphical user interface to GDB. You can interact with
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
28 ;; GDB through the GUD buffer in the usual way, but there are also further
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
29 ;; buffers which control the execution and describe the state of your program.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
30 ;; It separates the input/output of your program from that of GDB, if
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
31 ;; required, and watches expressions in the speedbar. It also uses features of
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
32 ;; Emacs 21 such as the fringe/display margin for breakpoints, and the toolbar
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
33 ;; (see the GDB Graphical Interface section in the Emacs info manual).
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
34
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
35 ;; By default, M-x gdb will start the debugger.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
36
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
37 ;; This file has evolved from gdba.el that was included with GDB 5.0 and
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
38 ;; written by Tom Lord and Jim Kingdon. It uses GDB's annotation interface.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
39 ;; You don't need to know about annotations to use this mode as a debugger,
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
40 ;; but if you are interested developing the mode itself, see the Annotations
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
41 ;; section in the GDB info manual.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
42
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
43 ;; GDB developers plan to make the annotation interface obsolete. A new
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
44 ;; interface called GDB/MI (machine interface) has been designed to replace it.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
45 ;; Some GDB/MI commands are used in this file through the CLI command
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
46 ;; 'interpreter mi <mi-command>'. To help with the process of fully migrating
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
47 ;; Emacs from annotations to GDB/MI, there is an experimental package called
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
48 ;; gdb-mi in the Emacs Lisp Package Archive ("http://tromey.com/elpa/"). It
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
49 ;; comprises of modified gud.el and a file called gdb-mi.el which replaces
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
50 ;; gdb-ui.el. When installed, this overrides the current files and invoking
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
51 ;; M-x gdb will use GDB/MI directly (starts with "gdb -i=mi"). When deleted
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
52 ;; ('d' followed by 'x' in Package Menu mode), the files are deleted and old
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
53 ;; functionality restored. This provides a convenient way to review the
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
54 ;; current status/contribute to its improvement. For someone who just wants to
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
55 ;; use GDB, however, the current mode in Emacs 22 is a much better option.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
56 ;; There is also a file, also called gdb-mi.el, a version of which is included
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
57 ;; the GDB distribution. This will probably only work with versions
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
58 ;; distributed with GDB 6.5 or later. Unlike the version in ELPA it works on
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
59 ;; top of gdb-ui.el and you can only start it with M-x gdbmi.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
60
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
61 ;; This mode SHOULD WORK WITH GDB 5.0 or later but you will NEED AT LEAST
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
62 ;; GDB 6.0 to use watch expressions. It works best with GDB 6.4 or later
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
63 ;; where watch expressions will update more quickly.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
64
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
65 ;;; Windows Platforms:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
66
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
67 ;; If you are using Emacs and GDB on Windows you will need to flush the buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
68 ;; explicitly in your program if you want timely display of I/O in Emacs.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
69 ;; Alternatively you can make the output stream unbuffered, for example, by
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
70 ;; using a macro:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
71
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
72 ;; #ifdef UNBUFFERED
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
73 ;; setvbuf (stdout, (char *) NULL, _IONBF, 0);
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
74 ;; #endif
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
75
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
76 ;; and compiling with -DUNBUFFERED while debugging.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
77
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
78 ;; If you are using Cygwin GDB and find that the source is not being displayed
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
79 ;; in Emacs when you step through it, possible solutions are to:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
80
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
81 ;; 1) Use Cygwin X Windows and Cygwin Emacs.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
82 ;; (Since 22.1 Emacs builds under Cygwin.)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
83 ;; 2) Use MinGW GDB instead.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
84 ;; 3) Use cygwin-mount.el
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
85
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
86 ;;; Mac OSX:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
87
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
88 ;; GDB in Emacs on Mac OSX works best with FSF GDB as Apple have made
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
89 ;; some changes to the version that they include as part of Mac OSX.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
90 ;; This requires GDB version 7.0 or later (estimated release date June 2009)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
91 ;; as earlier versions don not compile on Mac OSX.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
92
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
93 ;;; Known Bugs:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
94
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
95 ;; 1) Cannot handle multiple debug sessions.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
96 ;; 2) If you wish to call procedures from your program in GDB
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
97 ;; e.g "call myproc ()", "p mysquare (5)" then use level 2 annotations
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
98 ;; "gdb --annotate=2 myprog" to keep source buffer/selected frame fixed.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
99 ;; 3) After detaching from a process, clicking on the "GO" icon on toolbar
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
100 ;; (gud-go) sends "continue" to GDB (should be "run").
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
101
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
102 ;;; TODO:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
103
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
104 ;; 1) Use MI command -data-read-memory for memory window.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
105 ;; 2) Use tree-buffer.el (from ECB) instead of the speedbar for
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
106 ;; watch-expressions? Handling of watch-expressions needs to be
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
107 ;; overhauled to work for large arrays/structures by creating variable
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
108 ;; objects for visible watch-expressions only.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
109 ;; 3) Mark breakpoint locations on scroll-bar of source buffer?
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
110
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
111 ;;; Code:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
112
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
113 (require 'gud)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
114 (require 'json)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
115 (require 'bindat)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
116
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
117 (defvar tool-bar-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
118 (defvar speedbar-initial-expansion-list-name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
119 (defvar speedbar-frame)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
120
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
121 (defvar gdb-pc-address nil "Initialization for Assembler buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
122 Set to \"main\" at start if `gdb-show-main' is t.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
123 (defvar gdb-frame-address nil "Identity of frame for watch expression.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
124 (defvar gdb-previous-frame-pc-address nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
125 (defvar gdb-memory-address "main")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
126 (defvar gdb-previous-frame nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
127 (defvar gdb-selected-frame nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
128 (defvar gdb-frame-number nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
129 (defvar gdb-current-language nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
130 (defvar gdb-var-list nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
131 "List of variables in watch window.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
132 Each element has the form (VARNUM EXPRESSION NUMCHILD TYPE VALUE STATUS HAS_MORE FP)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
133 where STATUS is nil (`unchanged'), `changed' or `out-of-scope', FP the frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
134 address for root variables.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
135 (defvar gdb-main-file nil "Source file from which program execution begins.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
136 (defvar gud-old-arrow nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
137 (defvar gdb-thread-indicator nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
138 (defvar gdb-overlay-arrow-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
139 (defvar gdb-stack-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
140 (defvar gdb-server-prefix nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
141 (defvar gdb-flush-pending-output nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
142 (defvar gdb-location-alist nil
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
143 "Alist of breakpoint numbers and full filenames.
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
144 Only used for files that Emacs can't find.")
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
145 (defvar gdb-active-process nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
146 "GUD tooltips display variable values when t, and macro definitions otherwise.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
147 (defvar gdb-recording nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
148 "If t, then record session for playback and reverse execution")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
149 (defvar gdb-error "Non-nil when GDB is reporting an error.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
150 (defvar gdb-macro-info nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
151 "Non-nil if GDB knows that the inferior includes preprocessor macro info.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
152 (defvar gdb-buffer-fringe-width nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
153 (defvar gdb-signalled nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
154 (defvar gdb-source-window nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
155 (defvar gdb-inferior-status nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
156 (defvar gdb-continuation nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
157 (defvar gdb-look-up-stack nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
158 (defvar gdb-frame-begin nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
159 "Non-nil when GDB generates frame-begin annotation.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
160 (defvar gdb-printing t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
161 (defvar gdb-parent-bptno-enabled nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
162 (defvar gdb-ready nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
163 (defvar gdb-stack-update nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
164 (defvar gdb-early-user-input nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
165
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
166 (defvar gdb-buffer-type nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
167 "One of the symbols bound in `gdb-buffer-rules'.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
168 (make-variable-buffer-local 'gdb-buffer-type)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
169
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
170 (defvar gdb-input-queue ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
171 "A list of gdb command objects.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
172
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
173 (defvar gdb-prompting nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
174 "True when gdb is idle with no pending input.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
175
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
176 (defvar gdb-output-sink nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
177 "The disposition of the output of the current gdb command.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
178 Possible values are these symbols:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
179
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
180 `user' -- gdb output should be copied to the GUD buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
181 for the user to see.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
182
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
183 `inferior' -- gdb output should be copied to the inferior-io buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
184
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
185 `pre-emacs' -- output should be ignored util the post-prompt
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
186 annotation is received. Then the output-sink
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
187 becomes:...
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
188 `emacs' -- output should be collected in the partial-output-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
189 for subsequent processing by a command. This is the
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
190 disposition of output generated by commands that
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
191 gdb mode sends to gdb on its own behalf.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
192 `post-emacs' -- ignore output until the prompt annotation is
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
193 received, then go to USER disposition.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
194
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
195 gdba (gdb-ui.el) uses all five values, gdbmi (gdb-mi.el) only two
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
196 \(`user' and `emacs').")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
197
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
198 (defvar gdb-current-item nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
199 "The most recent command item sent to gdb.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
200
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
201 (defvar gdb-pending-triggers '()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
202 "A list of trigger functions that have run later than their output handlers.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
203
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
204 (defvar gdb-first-post-prompt nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
205 (defvar gdb-version nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
206 (defvar gdb-locals-font-lock-keywords nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
207 (defvar gdb-source-file-list nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
208 "List of source files for the current executable.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
209 (defconst gdb-error-regexp "\\^error,msg=\"\\(.+\\)\"")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
210
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
211 (defvar gdb-locals-font-lock-keywords-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
212 '(;; var = (struct struct_tag) value
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
213 ( "\\(^\\(\\sw\\|[_.]\\)+\\) += +(\\(struct\\) \\(\\(\\sw\\|[_.]\\)+\\)"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
214 (1 font-lock-variable-name-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
215 (3 font-lock-keyword-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
216 (4 font-lock-type-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
217 ;; var = (type) value
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
218 ( "\\(^\\(\\sw\\|[_.]\\)+\\) += +(\\(\\(\\sw\\|[_.]\\)+\\)"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
219 (1 font-lock-variable-name-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
220 (3 font-lock-type-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
221 ;; var = val
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
222 ( "\\(^\\(\\sw\\|[_.]\\)+\\) += +[^(]"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
223 (1 font-lock-variable-name-face)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
224 "Font lock keywords used in `gdb-local-mode'.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
225
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
226 (defvar gdb-locals-font-lock-keywords-2
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
227 '(;; var = type value
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
228 ( "\\(^\\(\\sw\\|[_.]\\)+\\)\t+\\(\\(\\sw\\|[_.]\\)+\\)"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
229 (1 font-lock-variable-name-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
230 (3 font-lock-type-face)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
231 "Font lock keywords used in `gdb-local-mode'.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
232
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
233 ;; Variables for GDB 6.4+
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
234 (defvar gdb-register-names nil "List of register names.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
235 (defvar gdb-changed-registers nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
236 "List of changed register numbers (strings).")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
237
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
238 ;;;###autoload
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
239 (defun gdb (command-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
240 "Run gdb on program FILE in buffer *gud-FILE*.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
241 The directory containing FILE becomes the initial working
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
242 directory and source-file directory for your debugger.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
243
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
244 If `gdb-many-windows' is nil (the default value) then gdb just
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
245 pops up the GUD buffer unless `gdb-show-main' is t. In this case
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
246 it starts with two windows: one displaying the GUD buffer and the
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
247 other with the source file with the main routine of the inferior.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
248
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
249 If `gdb-many-windows' is t, regardless of the value of
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
250 `gdb-show-main', the layout below will appear unless
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
251 `gdb-use-separate-io-buffer' is nil when the source buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
252 occupies the full width of the frame. Keybindings are shown in
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
253 some of the buffers.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
254
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
255 Watch expressions appear in the speedbar/slowbar.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
256
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
257 The following commands help control operation :
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
258
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
259 `gdb-many-windows' - Toggle the number of windows gdb uses.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
260 `gdb-restore-windows' - To restore the window layout.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
261
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
262 See Info node `(emacs)GDB Graphical Interface' for a more
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
263 detailed description of this mode.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
264
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
265 +----------------------------------------------------------------------+
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
266 | GDB Toolbar |
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
267 +-----------------------------------+----------------------------------+
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
268 | GUD buffer (I/O of GDB) | Locals buffer |
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
269 |-----------------------------------+----------------------------------+
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
270 | | |
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
271 | Source buffer | I/O buffer for debugged program |
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
272 | | |
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
273 |-----------------------------------+----------------------------------+
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
274 | Stack buffer | Breakpoints/threads buffer |
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
275 +-----------------------------------+----------------------------------+
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
276
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
277 The option \"--annotate=3\" must be included in this value. To
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
278 run GDB in text command mode, use `gud-gdb'. You need to use
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
279 text command mode to debug multiple programs within one Emacs
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
280 session."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
281 (interactive (list (gud-query-cmdline 'gdb)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
282
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
283 (when (and gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
284 (buffer-name gud-comint-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
285 (get-buffer-process gud-comint-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
286 (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
287 (gdb-restore-windows)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
288 (error
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
289 "Multiple debugging requires restarting in text command mode"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
290
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
291 (gud-common-init command-line nil 'gud-gdba-marker-filter)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
292 (set (make-local-variable 'gud-minor-mode) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
293 (setq comint-input-sender 'gdb-send)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
294
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
295 (gud-def gud-break "break %f:%l" "\C-b" "Set breakpoint at current line.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
296 (gud-def gud-tbreak "tbreak %f:%l" "\C-t"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
297 "Set temporary breakpoint at current line.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
298 (gud-def gud-remove "clear %f:%l" "\C-d" "Remove breakpoint at current line.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
299 (gud-def gud-step "step %p" "\C-s" "Step one source line with display.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
300 (gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
301 (gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
302 (gud-def gud-nexti "nexti %p" nil "Step one instruction (skip functions).")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
303 (gud-def gud-cont "continue" "\C-r" "Continue with display.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
304 (gud-def gud-finish "finish" "\C-f" "Finish executing current function.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
305 (gud-def gud-jump
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
306 (progn (gud-call "tbreak %f:%l") (gud-call "jump %f:%l"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
307 "\C-j" "Set execution address to current line.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
308
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
309 (gud-def gud-rstep "reverse-step %p" nil "Reverse step one source line with display.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
310 (gud-def gud-rstepi "reverse-stepi %p" nil "Reverse step one instruction with display.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
311 (gud-def gud-rnext "reverse-next %p" nil "Reverse step one line (skip functions).")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
312 (gud-def gud-rnexti "reverse-nexti %p" nil "Reverse step one instruction (skip functions).")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
313 (gud-def gud-rcont "reverse-continue" nil "Reverse continue with display.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
314 (gud-def gud-rfinish "reverse-finish" nil "Reverse finish executing current function.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
315
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
316 (gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
317 (gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
318 (gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
319 (gud-def gud-pstar "print* %e" nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
320 "Evaluate C dereferenced pointer expression at point.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
321
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
322 ;; For debugging Emacs only.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
323 (gud-def gud-pv "pv1 %e" "\C-v" "Print the value of the lisp variable.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
324
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
325 (gud-def gud-until "until %l" "\C-u" "Continue to current line.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
326 (gud-def gud-run "run" nil "Run the program.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
327
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
328 (local-set-key "\C-i" 'gud-gdb-complete-command)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
329 (setq comint-prompt-regexp "^(.*gdb[+]?) *")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
330 (setq paragraph-start comint-prompt-regexp)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
331 (setq gdb-output-sink 'user)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
332 (setq gdb-first-prompt t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
333 (setq gud-running nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
334 (setq gdb-ready nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
335 (setq gdb-stack-update nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
336 (setq gdb-flush-pending-output nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
337 (setq gdb-early-user-input nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
338 (setq gud-filter-pending-text nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
339 (gdb-thread-identification)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
340 (run-hooks 'gdb-mode-hook))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
341
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
342 ;; Keep as an alias for compatibility with Emacs 22.1.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
343 ;;;###autoload
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
344 (defalias 'gdba 'gdb)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
345
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
346 (defgroup gdb nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
347 "Gdb Graphical Mode options specifically for running Gdb in Emacs."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
348 :group 'processes
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
349 :group 'tools)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
350
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
351 (defcustom gdb-debug-log-max 128
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
352 "Maximum size of `gdb-debug-log'. If nil, size is unlimited."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
353 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
354 :type '(choice (integer :tag "Number of elements")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
355 (const :tag "Unlimited" nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
356 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
357
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
358 (defvar gdb-debug-log nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
359 "List of commands sent to and replies received from GDB.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
360 Most recent commands are listed first. This list stores only the last
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
361 `gdb-debug-log-max' values. This variable is used to debug GDB-UI.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
362
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
363 ;;;###autoload
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
364 (defcustom gdb-enable-debug nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
365 "Non-nil means record the process input and output in `gdb-debug-log'."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
366 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
367 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
368 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
369
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
370 (defcustom gdb-cpp-define-alist-program "gcc -E -dM -"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
371 "Shell command for generating a list of defined macros in a source file.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
372 This list is used to display the #define directive associated
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
373 with an identifier as a tooltip. It works in a debug session with
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
374 GDB, when `gud-tooltip-mode' is t.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
375
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
376 Set `gdb-cpp-define-alist-flags' for any include paths or
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
377 predefined macros."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
378 :type 'string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
379 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
380 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
381
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
382 (defcustom gdb-cpp-define-alist-flags ""
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
383 "Preprocessor flags for `gdb-cpp-define-alist-program'."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
384 :type 'string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
385 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
386 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
387
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
388 (defcustom gdb-create-source-file-list t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
389 "Non-nil means create a list of files from which the executable was built.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
390 Set this to nil if the GUD buffer displays \"initializing...\" in the mode
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
391 line for a long time when starting, possibly because your executable was
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
392 built from a large number of files. This allows quicker initialization
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
393 but means that these files are not automatically enabled for debugging,
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
394 e.g., you won't be able to click in the fringe to set a breakpoint until
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
395 execution has already stopped there."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
396 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
397 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
398 :version "23.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
399
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
400 (defcustom gdb-show-main nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
401 "Non-nil means display source file containing the main routine at startup.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
402 Also display the main routine in the disassembly buffer if present."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
403 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
404 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
405 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
406
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
407 (defcustom gdb-many-windows nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
408 "If nil, just pop up the GUD buffer unless `gdb-show-main' is t.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
409 In this case start with two windows: one displaying the GUD
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
410 buffer and the other with the source file with the main routine
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
411 of the debugged program. Non-nil means display the layout shown
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
412 for `gdba'."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
413 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
414 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
415 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
416
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
417 (defcustom gdb-use-separate-io-buffer nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
418 "Non-nil means display output from the debugged program in a separate buffer."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
419 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
420 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
421 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
422
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
423 (defun gdb-force-mode-line-update (status)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
424 (let ((buffer gud-comint-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
425 (if (and buffer (buffer-name buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
426 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
427 (setq mode-line-process
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
428 (format ":%s [%s]"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
429 (process-status (get-buffer-process buffer)) status))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
430 ;; Force mode line redisplay soon.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
431 (force-mode-line-update)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
432
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
433 (defun gdb-enable-debug (arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
434 "Toggle logging of transaction between Emacs and Gdb.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
435 The log is stored in `gdb-debug-log' as an alist with elements
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
436 whose cons is send, send-item or recv and whose cdr is the string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
437 being transferred. This list may grow up to a size of
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
438 `gdb-debug-log-max' after which the oldest element (at the end of
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
439 the list) is deleted every time a new one is added (at the front)."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
440 (interactive "P")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
441 (setq gdb-enable-debug
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
442 (if (null arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
443 (not gdb-enable-debug)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
444 (> (prefix-numeric-value arg) 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
445 (message (format "Logging of transaction %sabled"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
446 (if gdb-enable-debug "en" "dis"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
447
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
448 (defun gdb-many-windows (arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
449 "Toggle the number of windows in the basic arrangement.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
450 With prefix argument ARG, display additional buffers if ARG is positive,
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
451 otherwise use a single window."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
452 (interactive "P")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
453 (setq gdb-many-windows
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
454 (if (null arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
455 (not gdb-many-windows)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
456 (> (prefix-numeric-value arg) 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
457 (message (format "Display of other windows %sabled"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
458 (if gdb-many-windows "en" "dis")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
459 (if (and gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
460 (buffer-name gud-comint-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
461 (condition-case nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
462 (gdb-restore-windows)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
463 (error nil))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
464
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
465 (defun gdb-use-separate-io-buffer (arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
466 "Toggle separate IO for debugged program.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
467 With prefix argument ARG, use separate IO if ARG is positive,
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
468 otherwise do not."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
469 (interactive "P")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
470 (setq gdb-use-separate-io-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
471 (if (null arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
472 (not gdb-use-separate-io-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
473 (> (prefix-numeric-value arg) 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
474 (message (format "Separate IO %sabled"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
475 (if gdb-use-separate-io-buffer "en" "dis")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
476 (if (and gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
477 (buffer-name gud-comint-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
478 (condition-case nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
479 (if gdb-use-separate-io-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
480 (if gdb-many-windows (gdb-restore-windows))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
481 (kill-buffer (gdb-inferior-io-name)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
482 (error nil))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
483
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
484 (defvar gdb-define-alist nil "Alist of #define directives for GUD tooltips.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
485
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
486 (defun gdb-create-define-alist ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
487 "Create an alist of #define directives for GUD tooltips."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
488 (let* ((file (buffer-file-name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
489 (output
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
490 (with-output-to-string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
491 (with-current-buffer standard-output
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
492 (and file
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
493 (file-exists-p file)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
494 ;; call-process doesn't work with remote file names.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
495 (not (file-remote-p default-directory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
496 (call-process shell-file-name file
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
497 (list t nil) nil "-c"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
498 (concat gdb-cpp-define-alist-program " "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
499 gdb-cpp-define-alist-flags))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
500 (define-list (split-string output "\n" t)) (name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
501 (setq gdb-define-alist nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
502 (dolist (define define-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
503 (setq name (nth 1 (split-string define "[( ]")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
504 (push (cons name define) gdb-define-alist))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
505
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
506 (declare-function tooltip-show "tooltip" (text &optional use-echo-area))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
507 (defvar tooltip-use-echo-area)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
508
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
509 (defun gdb-tooltip-print (expr)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
510 (tooltip-show
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
511 (with-current-buffer (gdb-get-buffer 'gdb-partial-output-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
512 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
513 (let ((string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
514 (if (search-forward "=" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
515 (concat expr (buffer-substring (- (point) 2) (point-max)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
516 (buffer-string))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
517 ;; remove newline for gud-tooltip-echo-area
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
518 (substring string 0 (- (length string) 1))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
519 (or gud-tooltip-echo-area tooltip-use-echo-area
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
520 (not (display-graphic-p)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
521
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
522 ;; If expr is a macro for a function don't print because of possible dangerous
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
523 ;; side-effects. Also printing a function within a tooltip generates an
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
524 ;; unexpected starting annotation (phase error).
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
525 (defun gdb-tooltip-print-1 (expr)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
526 (with-current-buffer (gdb-get-buffer 'gdb-partial-output-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
527 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
528 (if (search-forward "expands to: " nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
529 (unless (looking-at "\\S-+.*(.*).*")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
530 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
531 (list (concat gdb-server-prefix "print " expr "\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
532 `(lambda () (gdb-tooltip-print ,expr))))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
533
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
534 (defconst gdb-source-file-regexp "\\(.+?\\), \\|\\([^, \n].*$\\)")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
535
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
536 (defun gdb-init-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
537 (set (make-local-variable 'gud-minor-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
538 (buffer-local-value 'gud-minor-mode gud-comint-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
539 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
540 (when gud-tooltip-mode
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
541 (make-local-variable 'gdb-define-alist)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
542 (gdb-create-define-alist)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
543 (add-hook 'after-save-hook 'gdb-create-define-alist nil t)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
544
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
545 (defun gdb-set-gud-minor-mode-existing-buffers ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
546 "Create list of source files for current GDB session."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
547 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
548 (when (search-forward "read in on demand:" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
549 (while (re-search-forward gdb-source-file-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
550 (push (file-name-nondirectory (or (match-string 1) (match-string 2)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
551 gdb-source-file-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
552 (dolist (buffer (buffer-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
553 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
554 (when (and buffer-file-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
555 (member (file-name-nondirectory buffer-file-name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
556 gdb-source-file-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
557 (gdb-init-buffer)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
558 (gdb-force-mode-line-update
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
559 (propertize "ready" 'face font-lock-variable-name-face)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
560
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
561 (defun gdb-find-watch-expression ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
562 (let* ((var (nth (- (line-number-at-pos (point)) 2) gdb-var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
563 (varnum (car var)) expr array)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
564 (string-match "\\(var[0-9]+\\)\\.\\(.*\\)" varnum)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
565 (let ((var1 (assoc (match-string 1 varnum) gdb-var-list)) var2 varnumlet
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
566 (component-list (split-string (match-string 2 varnum) "\\." t)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
567 (setq expr (nth 1 var1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
568 (setq varnumlet (car var1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
569 (dolist (component component-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
570 (setq var2 (assoc varnumlet gdb-var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
571 (setq expr (concat expr
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
572 (if (string-match ".*\\[[0-9]+\\]$" (nth 3 var2))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
573 (concat "[" component "]")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
574 (concat "." component))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
575 (setq varnumlet (concat varnumlet "." component)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
576 expr)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
577
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
578 (defun gdb-toggle-recording ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
579 "Start/stop recording of debug session."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
580 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
581 (if gud-running
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
582 (message-box "Recording cannot be started or stopped while your program is still running")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
583 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
584 (list (concat gdb-server-prefix
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
585 (if gdb-recording "record stop\n" "target record\n"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
586 'gdb-recording-handler))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
587
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
588 ;; Convenience function for tool bar.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
589 (defalias 'gdb-toggle-recording-1 'gdb-toggle-recording)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
590
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
591 (defun gdb-recording-handler ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
592 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
593 (if (re-search-forward "current architecture doesn't support record function" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
594 (message-box "Not enabled. The current architecture doesn't support the process record function.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
595 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
596 (if (re-search-forward "Undefined target command" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
597 (message-box "Not enabled. Process record requires GDB 7.0 onwards.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
598 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
599 (if (re-search-forward "the program is not being run" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
600 (message-box "Not enabled. Starting process recording requires an active target (running process).")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
601 (setq gdb-recording (not gdb-recording))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
602 ;; Actually forcing the tool-bar to update.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
603 (force-mode-line-update)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
604
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
605 (defun gdb-init-1 ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
606 (gud-def gud-break (if (not (string-match "Machine" mode-name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
607 (gud-call "break %f:%l" arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
608 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
609 (beginning-of-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
610 (forward-char 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
611 (gud-call "break *%a" arg)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
612 "\C-b" "Set breakpoint at current line or address.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
613 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
614 (gud-def gud-remove (if (not (string-match "Machine" mode-name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
615 (gud-call "clear %f:%l" arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
616 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
617 (beginning-of-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
618 (forward-char 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
619 (gud-call "clear *%a" arg)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
620 "\C-d" "Remove breakpoint at current line or address.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
621 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
622 (gud-def gud-until (if (not (string-match "Machine" mode-name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
623 (gud-call "until %f:%l" arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
624 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
625 (beginning-of-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
626 (forward-char 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
627 (gud-call "until *%a" arg)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
628 "\C-u" "Continue to current line or address.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
629 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
630 (gud-def gud-go (gud-call (if gdb-active-process "continue" "run") arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
631 nil "Start or continue execution.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
632
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
633 ;; For debugging Emacs only.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
634 (gud-def gud-pp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
635 (gud-call
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
636 (concat
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
637 "pp1 " (if (eq (buffer-local-value
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
638 'major-mode (window-buffer)) 'speedbar-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
639 (gdb-find-watch-expression) "%e")) arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
640 nil "Print the Emacs s-expression.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
641
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
642 (define-key gud-minor-mode-map [left-margin mouse-1]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
643 'gdb-mouse-set-clear-breakpoint)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
644 (define-key gud-minor-mode-map [left-fringe mouse-1]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
645 'gdb-mouse-set-clear-breakpoint)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
646 (define-key gud-minor-mode-map [left-margin C-mouse-1]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
647 'gdb-mouse-toggle-breakpoint-margin)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
648 (define-key gud-minor-mode-map [left-fringe C-mouse-1]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
649 'gdb-mouse-toggle-breakpoint-fringe)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
650
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
651 (define-key gud-minor-mode-map [left-margin drag-mouse-1]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
652 'gdb-mouse-until)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
653 (define-key gud-minor-mode-map [left-fringe drag-mouse-1]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
654 'gdb-mouse-until)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
655 (define-key gud-minor-mode-map [left-margin mouse-3]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
656 'gdb-mouse-until)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
657 (define-key gud-minor-mode-map [left-fringe mouse-3]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
658 'gdb-mouse-until)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
659
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
660 (define-key gud-minor-mode-map [left-margin C-drag-mouse-1]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
661 'gdb-mouse-jump)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
662 (define-key gud-minor-mode-map [left-fringe C-drag-mouse-1]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
663 'gdb-mouse-jump)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
664 (define-key gud-minor-mode-map [left-fringe C-mouse-3]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
665 'gdb-mouse-jump)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
666 (define-key gud-minor-mode-map [left-margin C-mouse-3]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
667 'gdb-mouse-jump)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
668
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
669 ;; (re-)initialize
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
670 (setq gdb-pc-address (if gdb-show-main "main" nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
671 (setq gdb-previous-frame-pc-address nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
672 gdb-memory-address "main"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
673 gdb-previous-frame nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
674 gdb-selected-frame nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
675 gdb-current-language nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
676 gdb-frame-number nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
677 gdb-var-list nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
678 gdb-main-file nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
679 gdb-first-post-prompt t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
680 gdb-prompting nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
681 gdb-input-queue nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
682 gdb-current-item nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
683 gdb-pending-triggers nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
684 gdb-output-sink 'user
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
685 gdb-server-prefix "server "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
686 gdb-location-alist nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
687 gdb-source-file-list nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
688 gdb-error nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
689 gdb-macro-info nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
690 gdb-buffer-fringe-width (car (window-fringes))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
691 gdb-debug-log nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
692 gdb-signalled nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
693 gdb-source-window nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
694 gdb-inferior-status nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
695 gdb-continuation nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
696 gdb-look-up-stack nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
697 gdb-frame-begin nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
698 gdb-printing t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
699 gud-old-arrow nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
700 gdb-thread-indicator nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
701 gdb-register-names nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
702 gdb-recording nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
703
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
704 (setq gdb-buffer-type 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
705
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
706 (if gdb-use-separate-io-buffer (gdb-clear-inferior-io))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
707
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
708 ;; Hack to see test for GDB 6.4+ (-stack-info-frame was implemented in 6.4)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
709 (gdb-enqueue-input (list "server interpreter mi -stack-info-frame\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
710 'gdb-get-version)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
711
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
712 (defun gdb-init-2 ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
713 (if (eq window-system 'w32)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
714 (gdb-enqueue-input (list "set new-console off\n" 'ignore)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
715 (gdb-enqueue-input (list "set height 0\n" 'ignore))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
716 (gdb-enqueue-input (list "set width 0\n" 'ignore))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
717
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
718 (if (string-equal gdb-version "pre-6.4")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
719 (if gdb-create-source-file-list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
720 (gdb-enqueue-input (list (concat gdb-server-prefix "info sources\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
721 'gdb-set-gud-minor-mode-existing-buffers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
722 (setq gdb-locals-font-lock-keywords gdb-locals-font-lock-keywords-1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
723 ; Needs GDB 6.2 onwards.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
724 (if gdb-create-source-file-list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
725 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
726 (list "server interpreter mi \"-file-list-exec-source-files\"\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
727 'gdb-set-gud-minor-mode-existing-buffers-1)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
728 (setq gdb-locals-font-lock-keywords gdb-locals-font-lock-keywords-2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
729 ; Needs GDB 7.0 onwards.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
730 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
731 (list "server interpreter mi -enable-pretty-printing\n" 'ignore)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
732
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
733 ;; Find source file and compilation directory here.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
734 ;; Works for C, C++, Fortran and Ada but not Java (GDB 6.4)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
735 (gdb-enqueue-input (list "server list\n" 'ignore))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
736 (gdb-enqueue-input (list "server list MAIN__\n" 'ignore))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
737 (gdb-enqueue-input (list "server info source\n" 'gdb-source-info)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
738
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
739 (defun gdb-get-version ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
740 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
741 (if (re-search-forward "Undefined\\( mi\\)* command:" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
742 (setq gdb-version "pre-6.4")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
743 (setq gdb-version "6.4+"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
744 (gdb-init-2))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
745
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
746 (defmacro gdb-if-arrow (arrow-position &rest body)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
747 `(if ,arrow-position
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
748 (let ((buffer (marker-buffer ,arrow-position)) (line))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
749 (if (equal buffer (window-buffer (posn-window end)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
750 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
751 (when (or (equal start end)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
752 (equal (posn-point start)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
753 (marker-position ,arrow-position)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
754 ,@body))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
755
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
756 (defun gdb-mouse-until (event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
757 "Continue running until a source line past the current line.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
758 The destination source line can be selected either by clicking
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
759 with mouse-3 on the fringe/margin or dragging the arrow
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
760 with mouse-1 (default bindings)."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
761 (interactive "e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
762 (let ((start (event-start event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
763 (end (event-end event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
764 (gdb-if-arrow gud-overlay-arrow-position
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
765 (setq line (line-number-at-pos (posn-point end)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
766 (gud-call (concat "until " (number-to-string line))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
767 (gdb-if-arrow gdb-overlay-arrow-position
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
768 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
769 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
770 (forward-line (1- (line-number-at-pos (posn-point end))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
771 (forward-char 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
772 (gud-call (concat "until *%a"))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
773
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
774 (defun gdb-mouse-jump (event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
775 "Set execution address/line.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
776 The destination source line can be selected either by clicking with C-mouse-3
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
777 on the fringe/margin or dragging the arrow with C-mouse-1 (default bindings).
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
778 Unlike `gdb-mouse-until' the destination address can be before the current
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
779 line, and no execution takes place."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
780 (interactive "e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
781 (let ((start (event-start event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
782 (end (event-end event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
783 (gdb-if-arrow gud-overlay-arrow-position
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
784 (setq line (line-number-at-pos (posn-point end)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
785 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
786 (gud-call (concat "tbreak " (number-to-string line)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
787 (gud-call (concat "jump " (number-to-string line)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
788 (gdb-if-arrow gdb-overlay-arrow-position
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
789 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
790 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
791 (forward-line (1- (line-number-at-pos (posn-point end))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
792 (forward-char 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
793 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
794 (gud-call (concat "tbreak *%a"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
795 (gud-call (concat "jump *%a")))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
796
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
797 (defcustom gdb-speedbar-auto-raise nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
798 "If non-nil raise speedbar every time display of watch expressions is\
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
799 updated."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
800 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
801 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
802 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
803
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
804 (defun gdb-speedbar-auto-raise (arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
805 "Toggle automatic raising of the speedbar for watch expressions.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
806 With prefix argument ARG, automatically raise speedbar if ARG is
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
807 positive, otherwise don't automatically raise it."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
808 (interactive "P")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
809 (setq gdb-speedbar-auto-raise
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
810 (if (null arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
811 (not gdb-speedbar-auto-raise)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
812 (> (prefix-numeric-value arg) 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
813 (message (format "Auto raising %sabled"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
814 (if gdb-speedbar-auto-raise "en" "dis"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
815
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
816 (defcustom gdb-use-colon-colon-notation nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
817 "If non-nil use FUN::VAR format to display variables in the speedbar."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
818 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
819 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
820 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
821
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
822 (define-key gud-minor-mode-map "\C-c\C-w" 'gud-watch)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
823 (define-key global-map (concat gud-key-prefix "\C-w") 'gud-watch)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
824
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
825 (declare-function tooltip-identifier-from-point "tooltip" (point))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
826
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
827 (defun gud-watch (&optional arg event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
828 "Watch expression at point.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
829 With arg, enter name of variable to be watched in the minibuffer."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
830 (interactive (list current-prefix-arg last-input-event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
831 (let ((minor-mode (buffer-local-value 'gud-minor-mode gud-comint-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
832 (if (memq minor-mode '(gdbmi gdba))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
833 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
834 (if event (posn-set-point (event-end event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
835 (require 'tooltip)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
836 (save-selected-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
837 (let ((expr
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
838 (if arg
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
839 (completing-read "Name of variable: "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
840 'gud-gdb-complete-command)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
841 (if (and transient-mark-mode mark-active)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
842 (buffer-substring (region-beginning) (region-end))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
843 (concat (if (eq major-mode 'gdb-registers-mode) "$")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
844 (tooltip-identifier-from-point (point)))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
845 (set-text-properties 0 (length expr) nil expr)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
846 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
847 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
848 (if (eq minor-mode 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
849 (concat
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
850 "server interpreter mi \"-var-create - * " expr "\"\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
851 (concat"-var-create - * " expr "\n"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
852 `(lambda () (gdb-var-create-handler ,expr)))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
853 (message "gud-watch is a no-op in this mode."))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
854
106680
63c5fb6b67fc Declare some functions for the byte-compiler.
Juanma Barranquero <lekktu@gmail.com>
parents: 106678
diff changeset
855 (declare-function speedbar-change-initial-expansion-list "speedbar" (new-default))
63c5fb6b67fc Declare some functions for the byte-compiler.
Juanma Barranquero <lekktu@gmail.com>
parents: 106678
diff changeset
856
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
857 (defun gdb-var-create-handler (expr)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
858 (let* ((result (gdb-json-partial-output)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
859 (if (not (bindat-get-field result 'msg))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
860 (let ((var
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
861 (list (bindat-get-field result 'name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
862 (if (and (string-equal gdb-current-language "c")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
863 gdb-use-colon-colon-notation gdb-selected-frame)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
864 (setq expr (concat gdb-selected-frame "::" expr))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
865 expr)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
866 (bindat-get-field result 'numchild)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
867 (bindat-get-field result 'type)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
868 (bindat-get-field result 'value)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
869 nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
870 (bindat-get-field result 'has_more)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
871 gdb-frame-address)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
872 (push var gdb-var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
873 (speedbar 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
874 (unless (string-equal
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
875 speedbar-initial-expansion-list-name "GUD")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
876 (speedbar-change-initial-expansion-list "GUD")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
877 (message-box "No symbol \"%s\" in current context." expr))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
878
106680
63c5fb6b67fc Declare some functions for the byte-compiler.
Juanma Barranquero <lekktu@gmail.com>
parents: 106678
diff changeset
879 (declare-function speedbar-timer-fn "speedbar" ())
63c5fb6b67fc Declare some functions for the byte-compiler.
Juanma Barranquero <lekktu@gmail.com>
parents: 106678
diff changeset
880
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
881 (defun gdb-speedbar-update ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
882 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
883 (not (member 'gdb-speedbar-timer gdb-pending-triggers)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
884 ;; Dummy command to update speedbar even when idle.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
885 (gdb-enqueue-input (list "server pwd\n" 'gdb-speedbar-timer-fn))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
886 ;; Keep gdb-pending-triggers non-nil till end.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
887 (push 'gdb-speedbar-timer gdb-pending-triggers)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
888
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
889 (defun gdb-speedbar-timer-fn ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
890 (if gdb-speedbar-auto-raise
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
891 (raise-frame speedbar-frame))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
892 (setq gdb-pending-triggers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
893 (delq 'gdb-speedbar-timer gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
894 (speedbar-timer-fn))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
895
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
896 (defun gdb-var-evaluate-expression-handler (varnum changed)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
897 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
898 (re-search-forward "\\(.+\\)\\^done,value=\\(\".*\"\\)" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
899 (setq gdb-pending-triggers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
900 (delq (string-to-number (match-string 1)) gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
901 (let ((var (assoc varnum gdb-var-list)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
902 (when var
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
903 (if changed (setcar (nthcdr 5 var) 'changed))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
904 (setcar (nthcdr 4 var) (read (match-string 2)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
905 (gdb-speedbar-update))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
906
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
907 (defun gdb-var-list-children (varnum)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
908 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
909 (list (concat "server interpreter mi \"-var-list-children " varnum "\"\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
910 `(lambda () (gdb-var-list-children-handler ,varnum)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
911
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
912 (defconst gdb-var-list-children-regexp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
913 "child={.*?name=\"\\(.*?\\)\".*?,exp=\"\\(.*?\\)\".*?,\
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
914 numchild=\"\\(.*?\\)\"\\(}\\|.*?,\\(type=\"\\(.*?\\)\"\\)?.*?}\\)")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
915
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
916 (defun gdb-var-list-children-handler (varnum)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
917 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
918 (let ((var-list nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
919 (catch 'child-already-watched
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
920 (dolist (var gdb-var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
921 (if (string-equal varnum (car var))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
922 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
923 (push var var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
924 (while (re-search-forward gdb-var-list-children-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
925 (let ((varchild (list (match-string 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
926 (match-string 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
927 (match-string 3)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
928 (match-string 6)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
929 nil nil)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
930 (if (assoc (car varchild) gdb-var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
931 (throw 'child-already-watched nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
932 (push varchild var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
933 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
934 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
935 (concat
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
936 "server interpreter mi \"0-var-evaluate-expression "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
937 (car varchild) "\"\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
938 `(lambda () (gdb-var-evaluate-expression-handler
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
939 ,(car varchild) nil)))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
940 (push var var-list)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
941 (setq gdb-var-list (nreverse var-list)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
942
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
943 (defun gdb-var-update ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
944 (when (not (member 'gdb-var-update gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
945 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
946 (list "server interpreter mi \"-var-update *\"\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
947 'gdb-var-update-handler))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
948 (push 'gdb-var-update gdb-pending-triggers)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
949
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
950 (defconst gdb-var-update-regexp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
951 "{.*?name=\"\\(.*?\\)\".*?,in_scope=\"\\(.*?\\)\".*?,\
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
952 type_changed=\".*?\".*?}")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
953
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
954 (defun gdb-var-update-handler ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
955 (dolist (var gdb-var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
956 (setcar (nthcdr 5 var) nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
957 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
958 (let ((n 0))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
959 (while (re-search-forward gdb-var-update-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
960 (let ((varnum (match-string 1)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
961 (if (string-equal (match-string 2) "false")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
962 (let ((var (assoc varnum gdb-var-list)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
963 (if var (setcar (nthcdr 5 var) 'out-of-scope)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
964 (setq n (1+ n))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
965 (push n gdb-pending-triggers)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
966 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
967 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
968 (concat "server interpreter mi \"" (number-to-string n)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
969 "-var-evaluate-expression " varnum "\"\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
970 `(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
971 (setq gdb-pending-triggers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
972 (delq 'gdb-var-update gdb-pending-triggers)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
973
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
974 (defun gdb-var-set-format (format)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
975 "Set the output format for a variable displayed in the speedbar."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
976 (let* ((var (nth (- (count-lines (point-min) (point)) 2) gdb-var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
977 (varnum (car var)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
978 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
979 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
980 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
981 (concat "server interpreter mi \"-var-set-format "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
982 varnum " " format "\"\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
983 (concat "-var-set-format " varnum " " format "\n"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
984 `(lambda () (gdb-var-set-format-handler ,varnum))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
985
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
986 (defconst gdb-var-set-format-regexp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
987 "format=\"\\(.*?\\)\",.*value=\"\\(.*?\\)\"")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
988
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
989 (defun gdb-var-set-format-handler (varnum)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
990 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
991 (if (re-search-forward gdb-var-set-format-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
992 (let ((var (assoc varnum gdb-var-list)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
993 (setcar (nthcdr 4 var) (match-string 2))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
994 (gdb-var-update-1))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
995
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
996 (defun gdb-var-delete-1 (var varnum)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
997 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
998 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
999 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1000 (concat "server interpreter mi \"-var-delete " varnum "\"\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1001 (concat "-var-delete " varnum "\n"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1002 'ignore))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1003 (setq gdb-var-list (delq var gdb-var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1004 (dolist (varchild gdb-var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1005 (if (string-match (concat (car var) "\\.") (car varchild))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1006 (setq gdb-var-list (delq varchild gdb-var-list)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1007
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1008 (defun gdb-var-delete ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1009 "Delete watch expression at point from the speedbar."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1010 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1011 (if (memq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1012 '(gdbmi gdba))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1013 (let* ((var (nth (- (count-lines (point-min) (point)) 2) gdb-var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1014 (varnum (car var)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1015 (if (string-match "\\." (car var))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1016 (message-box "Can only delete a root expression")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1017 (gdb-var-delete-1 var varnum)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1018
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1019 (defun gdb-var-delete-children (varnum)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1020 "Delete children of variable object at point from the speedbar."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1021 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1022 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1023 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1024 (concat "server interpreter mi \"-var-delete -c " varnum "\"\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1025 (concat "-var-delete -c " varnum "\n")) 'ignore)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1026
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1027 (defun gdb-edit-value (text token indent)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1028 "Assign a value to a variable displayed in the speedbar."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1029 (let* ((var (nth (- (count-lines (point-min) (point)) 2) gdb-var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1030 (varnum (car var)) (value))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1031 (setq value (read-string "New value: "))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1032 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1033 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1034 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1035 (concat "server interpreter mi \"-var-assign "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1036 varnum " " value "\"\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1037 (concat "-var-assign " varnum " " value "\n"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1038 `(lambda () (gdb-edit-value-handler ,value))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1039
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1040 (defun gdb-edit-value-handler (value)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1041 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1042 (if (re-search-forward gdb-error-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1043 (message-box "Invalid number or expression (%s)" value)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1044
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1045 (defcustom gdb-show-changed-values t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1046 "If non-nil change the face of out of scope variables and changed values.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1047 Out of scope variables are suppressed with `shadow' face.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1048 Changed values are highlighted with the face `font-lock-warning-face'."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1049 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1050 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1051 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1052
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1053 (defcustom gdb-max-children 40
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1054 "Maximum number of children before expansion requires confirmation."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1055 :type 'integer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1056 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1057 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1058
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1059 (defcustom gdb-delete-out-of-scope t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1060 "If non-nil delete watch expressions automatically when they go out of scope."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1061 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1062 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1063 :version "22.2")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1064
106680
63c5fb6b67fc Declare some functions for the byte-compiler.
Juanma Barranquero <lekktu@gmail.com>
parents: 106678
diff changeset
1065 (declare-function speedbar-change-expand-button-char "speedbar" (char))
63c5fb6b67fc Declare some functions for the byte-compiler.
Juanma Barranquero <lekktu@gmail.com>
parents: 106678
diff changeset
1066 (declare-function speedbar-delete-subblock "speedbar" (indent))
63c5fb6b67fc Declare some functions for the byte-compiler.
Juanma Barranquero <lekktu@gmail.com>
parents: 106678
diff changeset
1067 (declare-function speedbar-center-buffer-smartly "speedbar" ())
63c5fb6b67fc Declare some functions for the byte-compiler.
Juanma Barranquero <lekktu@gmail.com>
parents: 106678
diff changeset
1068
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1069 (defun gdb-speedbar-expand-node (text token indent)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1070 "Expand the node the user clicked on.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1071 TEXT is the text of the button we clicked on, a + or - item.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1072 TOKEN is data related to this node.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1073 INDENT is the current indentation depth."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1074 (if (and gud-comint-buffer (buffer-name gud-comint-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1075 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1076 (cond ((string-match "+" text) ;expand this node
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1077 (let* ((var (assoc token gdb-var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1078 (expr (nth 1 var)) (children (nth 2 var)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1079 (if (or (<= (string-to-number children) gdb-max-children)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1080 (y-or-n-p
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1081 (format
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
1082 "%s has %s children. Continue? " expr children)))
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1083 (if (and (eq (buffer-local-value
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1084 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1085 (string-equal gdb-version "pre-6.4"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1086 (gdb-var-list-children token)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1087 (gdb-var-list-children-1 token)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1088 ((string-match "-" text) ;contract this node
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1089 (dolist (var gdb-var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1090 (if (string-match (concat token "\\.") (car var))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1091 (setq gdb-var-list (delq var gdb-var-list))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1092 (gdb-var-delete-children token)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1093 (speedbar-change-expand-button-char ?+)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1094 (speedbar-delete-subblock indent))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1095 (t (error "Ooops... not sure what to do")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1096 (speedbar-center-buffer-smartly))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1097 (message-box "GUD session has been killed")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1098
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1099 (defun gdb-get-target-string ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1100 (with-current-buffer gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1101 gud-target-name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1102
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1103
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1104 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1105 ;; gdb buffers.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1106 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1107 ;; Each buffer has a TYPE -- a symbol that identifies the function
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1108 ;; of that particular buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1109 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1110 ;; The usual gdb interaction buffer is given the type `gdba' and
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1111 ;; is constructed specially.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1112 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1113 ;; Others are constructed by gdb-get-buffer-create and
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1114 ;; named according to the rules set forth in the gdb-buffer-rules-assoc
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1115
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1116 (defvar gdb-buffer-rules-assoc '())
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1117
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1118 (defun gdb-get-buffer (key)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1119 "Return the gdb buffer tagged with type KEY.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1120 The key should be one of the cars in `gdb-buffer-rules-assoc'."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1121 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1122 (gdb-look-for-tagged-buffer key (buffer-list))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1123
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1124 (defun gdb-get-buffer-create (key)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1125 "Create a new gdb buffer of the type specified by KEY.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1126 The key should be one of the cars in `gdb-buffer-rules-assoc'."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1127 (or (gdb-get-buffer key)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1128 (let* ((rules (assoc key gdb-buffer-rules-assoc))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1129 (name (funcall (gdb-rules-name-maker rules)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1130 (new (get-buffer-create name)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1131 (with-current-buffer new
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1132 (let ((trigger))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1133 (if (cdr (cdr rules))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1134 (setq trigger (funcall (car (cdr (cdr rules))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1135 (setq gdb-buffer-type key)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1136 (set (make-local-variable 'gud-minor-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1137 (buffer-local-value 'gud-minor-mode gud-comint-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1138 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1139 (if trigger (funcall trigger)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1140 new))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1141
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1142 (defun gdb-rules-name-maker (rules) (car (cdr rules)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1143
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1144 (defun gdb-look-for-tagged-buffer (key bufs)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1145 (let ((retval nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1146 (while (and (not retval) bufs)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1147 (set-buffer (car bufs))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1148 (if (eq gdb-buffer-type key)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1149 (setq retval (car bufs)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1150 (setq bufs (cdr bufs)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1151 retval))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1152
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1153 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1154 ;; This assoc maps buffer type symbols to rules. Each rule is a list of
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1155 ;; at least one and possible more functions. The functions have these
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1156 ;; roles in defining a buffer type:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1157 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1158 ;; NAME - Return a name for this buffer type.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1159 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1160 ;; The remaining function(s) are optional:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1161 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1162 ;; MODE - called in a new buffer with no arguments, should establish
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1163 ;; the proper mode for the buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1164 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1165
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1166 (defun gdb-set-buffer-rules (buffer-type &rest rules)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1167 (let ((binding (assoc buffer-type gdb-buffer-rules-assoc)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1168 (if binding
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1169 (setcdr binding rules)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1170 (push (cons buffer-type rules)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1171 gdb-buffer-rules-assoc))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1172
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1173 ;; GUD buffers are an exception to the rules
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1174 (gdb-set-buffer-rules 'gdba 'error)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1175
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1176 ;; Partial-output buffer : This accumulates output from a command executed on
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1177 ;; behalf of emacs (rather than the user).
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1178 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1179 (gdb-set-buffer-rules 'gdb-partial-output-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1180 'gdb-partial-output-name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1181
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1182 (defun gdb-partial-output-name ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1183 (concat " *partial-output-"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1184 (gdb-get-target-string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1185 "*"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1186
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1187
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1188 (gdb-set-buffer-rules 'gdb-inferior-io
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1189 'gdb-inferior-io-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1190 'gdb-inferior-io-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1191
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1192 (defun gdb-inferior-io-name ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1193 (concat "*input/output of "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1194 (gdb-get-target-string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1195 "*"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1196
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1197 (defun gdb-display-separate-io-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1198 "Display IO of debugged program in a separate window."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1199 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1200 (if gdb-use-separate-io-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1201 (gdb-display-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1202 (gdb-get-buffer-create 'gdb-inferior-io) t)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1203
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1204 (defconst gdb-frame-parameters
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1205 '((height . 14) (width . 80)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1206 (unsplittable . t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1207 (tool-bar-lines . nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1208 (menu-bar-lines . nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1209 (minibuffer . nil)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1210
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1211 (defun gdb-frame-separate-io-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1212 "Display IO of debugged program in a new frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1213 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1214 (if gdb-use-separate-io-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1215 (let ((special-display-regexps (append special-display-regexps '(".*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1216 (special-display-frame-alist gdb-frame-parameters))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1217 (display-buffer (gdb-get-buffer-create 'gdb-inferior-io)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1218
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1219 (defvar gdb-inferior-io-mode-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1220 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1221 (define-key map "\C-c\C-c" 'gdb-separate-io-interrupt)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1222 (define-key map "\C-c\C-z" 'gdb-separate-io-stop)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1223 (define-key map "\C-c\C-\\" 'gdb-separate-io-quit)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1224 (define-key map "\C-c\C-d" 'gdb-separate-io-eof)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1225 (define-key map "\C-d" 'gdb-separate-io-eof)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1226 map))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1227
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1228 (define-derived-mode gdb-inferior-io-mode comint-mode "Inferior I/O"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1229 "Major mode for gdb inferior-io."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1230 :syntax-table nil :abbrev-table nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1231 ;; We want to use comint because it has various nifty and familiar
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1232 ;; features. We don't need a process, but comint wants one, so create
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1233 ;; a dummy one.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1234 (make-comint-in-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1235 (substring (buffer-name) 1 (- (length (buffer-name)) 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1236 (current-buffer) "hexl")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1237 (setq comint-input-sender 'gdb-inferior-io-sender))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1238
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1239 (defun gdb-inferior-io-sender (proc string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1240 ;; PROC is the pseudo-process created to satisfy comint.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1241 (with-current-buffer (process-buffer proc)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1242 (setq proc (get-buffer-process gud-comint-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1243 (process-send-string proc string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1244 (process-send-string proc "\n")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1245
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1246 (defun gdb-separate-io-interrupt ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1247 "Interrupt the program being debugged."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1248 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1249 (interrupt-process
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1250 (get-buffer-process gud-comint-buffer) comint-ptyp))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1251
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1252 (defun gdb-separate-io-quit ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1253 "Send quit signal to the program being debugged."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1254 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1255 (quit-process
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1256 (get-buffer-process gud-comint-buffer) comint-ptyp))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1257
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1258 (defun gdb-separate-io-stop ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1259 "Stop the program being debugged."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1260 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1261 (stop-process
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1262 (get-buffer-process gud-comint-buffer) comint-ptyp))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1263
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1264 (defun gdb-separate-io-eof ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1265 "Send end-of-file to the program being debugged."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1266 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1267 (process-send-eof
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1268 (get-buffer-process gud-comint-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1269
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1270
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1271 ;; gdb communications
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1272 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1273
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1274 ;; INPUT: things sent to gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1275 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1276 ;; The queues are lists. Each element is either a string (indicating user or
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1277 ;; user-like input) or a list of the form:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1278 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1279 ;; (INPUT-STRING HANDLER-FN)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1280 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1281 ;; The handler function will be called from the partial-output buffer when the
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1282 ;; command completes. This is the way to write commands which invoke gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1283 ;; commands autonomously.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1284 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1285 ;; These lists are consumed tail first.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1286 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1287
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1288 (defun gdb-send (proc string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1289 "A comint send filter for gdb.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1290 This filter may simply queue input for a later time."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1291 (if gdb-ready
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1292 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1293 (with-current-buffer gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1294 (let ((inhibit-read-only t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1295 (remove-text-properties (point-min) (point-max) '(face))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1296 (if gud-running
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1297 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1298 (let ((item (concat string "\n")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1299 (if gdb-enable-debug (push (cons 'send item) gdb-debug-log))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1300 (process-send-string proc item)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1301 (if (string-match "\\\\\\'" string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1302 (setq gdb-continuation (concat gdb-continuation string "\n"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1303 (let ((item (concat
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1304 gdb-continuation string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1305 (if (not comint-input-sender-no-newline) "\n"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1306 (gdb-enqueue-input item)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1307 (setq gdb-continuation nil)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1308 (push (concat string "\n") gdb-early-user-input)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1309
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1310 ;; Note: Stuff enqueued here will be sent to the next prompt, even if it
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1311 ;; is a query, or other non-top-level prompt.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1312
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1313 (defun gdb-enqueue-input (item)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1314 (if (not gud-running)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1315 (if gdb-prompting
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1316 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1317 (gdb-send-item item)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1318 (setq gdb-prompting nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1319 (push item gdb-input-queue))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1320
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1321 (defun gdb-dequeue-input ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1322 (let ((queue gdb-input-queue))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1323 (if queue
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1324 (let ((last (car (last queue))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1325 (unless (nbutlast queue) (setq gdb-input-queue '()))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1326 last)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1327 ;; This should be nil here anyway but set it just to make sure.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1328 (setq gdb-pending-triggers nil))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1329
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1330 (defun gdb-send-item (item)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1331 (setq gdb-flush-pending-output nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1332 (if gdb-enable-debug (push (cons 'send-item item) gdb-debug-log))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1333 (setq gdb-current-item item)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1334 (let ((process (get-buffer-process gud-comint-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1335 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1336 (if (stringp item)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1337 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1338 (setq gdb-output-sink 'user)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1339 (process-send-string process item))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1340 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1341 (gdb-clear-partial-output)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1342 (setq gdb-output-sink 'pre-emacs)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1343 (process-send-string process
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1344 (car item))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1345 ;; case: eq gud-minor-mode 'gdbmi
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1346 (gdb-clear-partial-output)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1347 (setq gdb-output-sink 'emacs)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1348 (process-send-string process (car item)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1349
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1350 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1351 ;; output -- things gdb prints to emacs
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1352 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1353 ;; GDB output is a stream interrupted by annotations.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1354 ;; Annotations can be recognized by their beginning
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1355 ;; with \C-j\C-z\C-z<tag><opt>\C-j
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1356 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1357 ;; The tag is a string obeying symbol syntax.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1358 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1359 ;; The optional part `<opt>' can be either the empty string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1360 ;; or a space followed by more data relating to the annotation.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1361 ;; For example, the SOURCE annotation is followed by a filename,
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1362 ;; line number and various useless goo. This data must not include
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1363 ;; any newlines.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1364 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1365
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1366 (defcustom gud-gdb-command-name "gdb --annotate=3"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1367 "Default command to execute an executable under the GDB debugger.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1368 The option \"--annotate=3\" must be included in this value if you
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1369 want the GDB Graphical Interface."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1370 :type 'string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1371 :group 'gud
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1372 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1373
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1374 (defvar gdb-annotation-rules
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1375 '(("pre-prompt" gdb-pre-prompt)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1376 ("prompt" gdb-prompt)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1377 ("commands" gdb-subprompt)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1378 ("overload-choice" gdb-subprompt)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1379 ("query" gdb-subprompt)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1380 ;; Need this prompt for GDB 6.1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1381 ("nquery" gdb-subprompt)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1382 ("prompt-for-continue" gdb-subprompt)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1383 ("post-prompt" gdb-post-prompt)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1384 ("source" gdb-source)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1385 ("starting" gdb-starting)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1386 ("exited" gdb-exited)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1387 ("signalled" gdb-signalled)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1388 ("signal" gdb-signal)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1389 ("breakpoint" gdb-stopping)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1390 ("watchpoint" gdb-stopping)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1391 ("frame-begin" gdb-frame-begin)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1392 ("stopped" gdb-stopped)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1393 ("error-begin" gdb-error)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1394 ("error" gdb-error)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1395 ("new-thread" (lambda (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1396 (gdb-get-buffer-create 'gdb-threads-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1397 ("thread-changed" gdb-thread-changed))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1398 "An assoc mapping annotation tags to functions which process them.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1399
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1400 (defun gdb-resync()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1401 (setq gdb-flush-pending-output t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1402 (setq gud-running nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1403 (gdb-force-mode-line-update
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1404 (propertize "stopped" 'face font-lock-warning-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1405 (setq gdb-output-sink 'user)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1406 (setq gdb-input-queue nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1407 (setq gdb-pending-triggers nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1408 (setq gdb-prompting t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1409
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1410 (defconst gdb-source-spec-regexp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1411 "\\(.*\\):\\([0-9]*\\):[0-9]*:[a-z]*:0x0*\\([a-f0-9]*\\)")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1412
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1413 ;; Do not use this except as an annotation handler.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1414 (defun gdb-source (args)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1415 (string-match gdb-source-spec-regexp args)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1416 ;; Extract the frame position from the marker.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1417 (setq gud-last-frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1418 (cons
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1419 (match-string 1 args)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1420 (string-to-number (match-string 2 args))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1421 (setq gdb-pc-address (match-string 3 args))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1422 ;; cover for auto-display output which comes *before*
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1423 ;; stopped annotation
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1424 (if (eq gdb-output-sink 'inferior) (setq gdb-output-sink 'user)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1425
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1426 (defun gdb-pre-prompt (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1427 "An annotation handler for `pre-prompt'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1428 This terminates the collection of output from a previous command if that
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1429 happens to be in effect."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1430 (setq gdb-error nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1431 (let ((sink gdb-output-sink))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1432 (cond
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1433 ((eq sink 'user) t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1434 ((eq sink 'emacs)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1435 (setq gdb-output-sink 'post-emacs))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1436 (t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1437 (gdb-resync)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1438 (error "Phase error in gdb-pre-prompt (got %s)" sink)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1439
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1440 (defun gdb-prompt (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1441 "An annotation handler for `prompt'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1442 This sends the next command (if any) to gdb."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1443 (when gdb-first-prompt
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1444 (gdb-force-mode-line-update
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1445 (propertize "initializing..." 'face font-lock-variable-name-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1446 (gdb-init-1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1447 (setq gdb-first-prompt nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1448 (let ((sink gdb-output-sink))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1449 (cond
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1450 ((eq sink 'user) t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1451 ((eq sink 'post-emacs)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1452 (setq gdb-output-sink 'user)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1453 (let ((handler
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1454 (car (cdr gdb-current-item))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1455 (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1456 (funcall handler))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1457 (t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1458 (gdb-resync)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1459 (error "Phase error in gdb-prompt (got %s)" sink))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1460 (let ((input (gdb-dequeue-input)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1461 (if input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1462 (gdb-send-item input)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1463 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1464 (setq gdb-prompting t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1465 (gud-display-frame)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1466 (setq gdb-early-user-input (nreverse gdb-early-user-input))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1467 (while gdb-early-user-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1468 (gdb-enqueue-input (car gdb-early-user-input))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1469 (setq gdb-early-user-input (cdr gdb-early-user-input)))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1470
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1471 (defun gdb-subprompt (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1472 "An annotation handler for non-top-level prompts."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1473 (setq gdb-prompting t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1474
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1475 (defun gdb-starting (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1476 "An annotation handler for `starting'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1477 This says that I/O for the subprocess is now the program being debugged,
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1478 not GDB."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1479 (setq gdb-active-process t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1480 (setq gdb-printing t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1481 (let ((sink gdb-output-sink))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1482 (cond
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1483 ((eq sink 'user)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1484 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1485 (setq gud-running t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1486 (setq gdb-stack-update t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1487 ;; Temporarily set gud-running to nil to force "info stack" onto queue.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1488 (let ((gud-running nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1489 (gdb-invalidate-frames)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1490 (unless (or gdb-register-names
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
1491 (string-equal gdb-version "pre-6.4"))
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1492 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1493 (list "server interpreter mi -data-list-register-names\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1494 'gdb-get-register-names))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1495 (setq gdb-inferior-status "running")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1496 (setq gdb-signalled nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1497 (gdb-force-mode-line-update
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1498 (propertize gdb-inferior-status 'face font-lock-type-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1499 (gdb-remove-text-properties)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1500 (setq gud-old-arrow gud-overlay-arrow-position)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1501 (setq gud-overlay-arrow-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1502 (setq gdb-overlay-arrow-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1503 (setq gdb-stack-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1504 (if gdb-use-separate-io-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1505 (setq gdb-output-sink 'inferior))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1506 (t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1507 (gdb-resync)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1508 (error "Unexpected `starting' annotation")))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1509
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1510 (defun gdb-signal (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1511 (setq gdb-inferior-status "signal")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1512 (gdb-force-mode-line-update
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1513 (propertize gdb-inferior-status 'face font-lock-warning-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1514 (gdb-stopping ignored))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1515
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1516 (defun gdb-stopping (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1517 "An annotation handler for `breakpoint' and other annotations.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1518 They say that I/O for the subprocess is now GDB, not the program
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1519 being debugged."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1520 (if gdb-use-separate-io-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1521 (let ((sink gdb-output-sink))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1522 (cond
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1523 ((eq sink 'inferior)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1524 (setq gdb-output-sink 'user))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1525 (t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1526 (gdb-resync)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1527 (error "Unexpected stopping annotation"))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1528
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1529 (defun gdb-exited (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1530 "An annotation handler for `exited' and `signalled'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1531 They say that I/O for the subprocess is now GDB, not the program
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1532 being debugged and that the program is no longer running. This
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1533 function is used to change the focus of GUD tooltips to #define
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1534 directives."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1535 (setq gdb-active-process nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1536 (setq gud-overlay-arrow-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1537 (setq gdb-overlay-arrow-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1538 (setq gdb-stack-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1539 (setq gud-old-arrow nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1540 (setq gdb-inferior-status "exited")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1541 (gdb-force-mode-line-update
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1542 (propertize gdb-inferior-status 'face font-lock-warning-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1543 (gdb-stopping ignored))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1544
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1545 (defun gdb-signalled (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1546 (setq gdb-signalled t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1547
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1548 (defun gdb-frame-begin (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1549 (setq gdb-frame-begin t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1550 (setq gdb-printing nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1551 (let ((sink gdb-output-sink))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1552 (cond
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1553 ((eq sink 'inferior)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1554 (setq gdb-output-sink 'user))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1555 ((eq sink 'user) t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1556 ((eq sink 'emacs) t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1557 (t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1558 (gdb-resync)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1559 (error "Unexpected frame-begin annotation (%S)" sink)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1560
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1561 (defcustom gdb-same-frame (not focus-follows-mouse)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1562 "Non-nil means pop up GUD buffer in same frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1563 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1564 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1565 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1566
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1567 (defcustom gdb-find-source-frame nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1568 "Non-nil means try to find a source frame further up stack e.g after signal."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1569 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1570 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1571 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1572
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1573 (defun gdb-find-source-frame (arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1574 "Toggle looking for a source frame further up call stack.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1575 The code associated with current (innermost) frame may not have
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1576 been compiled with debug information, e.g., C library routine.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1577 With prefix argument ARG, look for a source frame further up
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1578 stack to display in the source buffer if ARG is positive,
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1579 otherwise don't look further up."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1580 (interactive "P")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1581 (setq gdb-find-source-frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1582 (if (null arg)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1583 (not gdb-find-source-frame)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1584 (> (prefix-numeric-value arg) 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1585 (message (format "Looking for source frame %sabled"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1586 (if gdb-find-source-frame "en" "dis"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1587
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1588 (defun gdb-stopped (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1589 "An annotation handler for `stopped'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1590 It is just like `gdb-stopping', except that if we already set the output
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1591 sink to `user' in `gdb-stopping', that is fine."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1592 (setq gud-running nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1593 (unless (or gud-overlay-arrow-position gud-last-frame)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1594 (if (and gdb-frame-begin gdb-printing)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1595 (setq gud-overlay-arrow-position gud-old-arrow)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1596 ;;Pop up GUD buffer to display current frame when it doesn't have source
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1597 ;;information i.e if not compiled with -g as with libc routines generally.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1598 (if gdb-same-frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1599 (gdb-display-gdb-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1600 (gdb-frame-gdb-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1601 (if gdb-find-source-frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1602 ;;Try to find source further up stack e.g after signal.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1603 (setq gdb-look-up-stack
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1604 (if (gdb-get-buffer 'gdb-stack-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1605 'keep
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1606 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1607 (gdb-get-buffer-create 'gdb-stack-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1608 (gdb-invalidate-frames)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1609 'delete))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1610 (unless (member gdb-inferior-status '("exited" "signal"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1611 (setq gdb-active-process t) ;Just for attaching case.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1612 (setq gdb-inferior-status "stopped")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1613 (gdb-force-mode-line-update
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1614 (propertize gdb-inferior-status 'face font-lock-warning-face)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1615 (let ((sink gdb-output-sink))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1616 (cond
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1617 ((eq sink 'inferior)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1618 (setq gdb-output-sink 'user))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1619 ((eq sink 'user) t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1620 (t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1621 (gdb-resync)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1622 (error "Unexpected stopped annotation"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1623 (if gdb-signalled (gdb-exited ignored)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1624
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1625 (defun gdb-error (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1626 (setq gdb-error (not gdb-error)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1627
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1628 (defun gdb-thread-changed (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1629 (gdb-frames-force-update))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1630
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1631 (defun gdb-post-prompt (ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1632 "An annotation handler for `post-prompt'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1633 This begins the collection of output from the current command if that
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1634 happens to be appropriate."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1635 ;; Don't add to queue if there outstanding items or gdb-version is not known
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1636 ;; yet.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1637 (unless (or gdb-pending-triggers gdb-first-post-prompt)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1638 (gdb-get-selected-frame)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1639 (gdb-invalidate-frames)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1640 ;; Regenerate breakpoints buffer in case it has been inadvertantly deleted.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1641 (gdb-get-buffer-create 'gdb-breakpoints-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1642 (gdb-invalidate-breakpoints)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1643 ;; Do this through gdb-get-selected-frame -> gdb-frame-handler
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1644 ;; so gdb-pc-address is updated.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1645 ;; (gdb-invalidate-assembler)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1646
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1647 (if (string-equal gdb-version "pre-6.4")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1648 (gdb-invalidate-registers)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1649 (gdb-get-changed-registers)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1650 (gdb-invalidate-registers-1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1651
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1652 (gdb-invalidate-memory)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1653 (if (string-equal gdb-version "pre-6.4")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1654 (gdb-invalidate-locals)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1655 (gdb-invalidate-locals-1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1656
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1657 (gdb-invalidate-threads)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1658 (unless (or (null gdb-var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1659 (eq system-type 'darwin)) ;Breaks on Darwin's GDB-5.3.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1660 ;; FIXME: with GDB-6 on Darwin, this might very well work.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1661 ;; Only needed/used with speedbar/watch expressions.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1662 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1663 (if (string-equal gdb-version "pre-6.4")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1664 (gdb-var-update)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1665 (gdb-var-update-1)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1666 (setq gdb-first-post-prompt nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1667 (let ((sink gdb-output-sink))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1668 (cond
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1669 ((eq sink 'user) t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1670 ((eq sink 'pre-emacs)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1671 (setq gdb-output-sink 'emacs))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1672 (t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1673 (gdb-resync)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1674 (error "Phase error in gdb-post-prompt (got %s)" sink)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1675
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1676 (defconst gdb-buffer-list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1677 '(gdb-stack-buffer gdb-locals-buffer gdb-registers-buffer gdb-threads-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1679 (defun gdb-remove-text-properties ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1680 (dolist (buffertype gdb-buffer-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1681 (let ((buffer (gdb-get-buffer buffertype)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1682 (if buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1683 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1684 (let ((inhibit-read-only t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1685 (remove-text-properties
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1686 (point-min) (point-max) '(mouse-face nil help-echo nil))))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1687
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1688 ;; GUD displays the selected GDB frame. This might might not be the current
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1689 ;; GDB frame (after up, down etc). If no GDB frame is visible but the last
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1690 ;; visited breakpoint is, use that window.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1691 (defun gdb-display-source-buffer (buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1692 (let* ((last-window (if gud-last-last-frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1693 (get-buffer-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1694 (gud-find-file (car gud-last-last-frame)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1695 (source-window (or last-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1696 (if (and gdb-source-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1697 (window-live-p gdb-source-window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1698 gdb-source-window))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1699 (when source-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1700 (setq gdb-source-window source-window)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1701 (set-window-buffer source-window buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1702 source-window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1703
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1704 ;; Derived from gud-gdb-marker-regexp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1705 (defvar gdb-fullname-regexp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1706 (concat "\\(.:?[^" ":" "\n]*\\)" ":" "\\([0-9]*\\)" ":" ".*"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1707
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1708 (defun gud-gdba-marker-filter (string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1709 "A gud marker filter for gdb. Handle a burst of output from GDB."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1710 (if gdb-flush-pending-output
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1711 nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1712 (when gdb-enable-debug
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1713 (push (cons 'recv string) gdb-debug-log)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1714 (if (and gdb-debug-log-max
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1715 (> (length gdb-debug-log) gdb-debug-log-max))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1716 (setcdr (nthcdr (1- gdb-debug-log-max) gdb-debug-log) nil)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1717 ;; Recall the left over gud-marker-acc from last time.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1718 (setq gud-marker-acc (concat gud-marker-acc string))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1719 ;; Start accumulating output for the GUD buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1720 (let ((output ""))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1721 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1722 ;; Process all the complete markers in this chunk.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1723 (while (string-match "\n\032\032\\(.*\\)\n" gud-marker-acc)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1724 (let ((annotation (match-string 1 gud-marker-acc))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1725 (before (substring gud-marker-acc 0 (match-beginning 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1726 (after (substring gud-marker-acc (match-end 0))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1727 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1728 ;; Parse the tag from the annotation, and maybe its arguments.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1729 (string-match "\\(\\S-*\\) ?\\(.*\\)" annotation)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1730 (let* ((annotation-type (match-string 1 annotation))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1731 (annotation-arguments (match-string 2 annotation))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1732 (annotation-rule (assoc annotation-type
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1733 gdb-annotation-rules)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1734
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1735 ;; Stuff prior to the match is just ordinary output.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1736 ;; It is either concatenated to OUTPUT or directed
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1737 ;; elsewhere.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1738 (setq output (gdb-concat-output output before))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1739
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1740 ;; Take that stuff off the gud-marker-acc.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1741 (setq gud-marker-acc after)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1742
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1743 ;; Call the handler for this annotation.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1744 (if annotation-rule
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1745 (funcall (car (cdr annotation-rule))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1746 annotation-arguments))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1747
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1748 ;; Else the annotation is not recognized. Ignore it silently,
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1749 ;; so that GDB can add new annotations without causing
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1750 ;; us to blow up.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1751 )))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1752
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1753 ;; Does the remaining text end in a partial line?
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1754 ;; If it does, then keep part of the gud-marker-acc until we get more.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1755 (if (string-match "\n\\'\\|\n\032\\'\\|\n\032\032.*\\'"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1756 gud-marker-acc)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1757 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1758 ;; Everything before the potential marker start can be output.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1759 (setq output
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1760 (gdb-concat-output output
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1761 (substring gud-marker-acc 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1762 (match-beginning 0))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1763 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1764 ;; Everything after, we save, to combine with later input.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1765 (setq gud-marker-acc (substring gud-marker-acc
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1766 (match-beginning 0))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1767 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1768 ;; In case we know the gud-marker-acc contains no partial annotations:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1769 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1770 (setq output (gdb-concat-output output gud-marker-acc))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1771 (setq gud-marker-acc "")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1772 output)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1773
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1774 (defun gdb-concat-output (so-far new)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1775 (if gdb-error
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1776 (put-text-property 0 (length new) 'face font-lock-warning-face new))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1777 (let ((sink gdb-output-sink))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1778 (cond
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1779 ((eq sink 'user) (concat so-far new))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1780 ((or (eq sink 'pre-emacs) (eq sink 'post-emacs)) so-far)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1781 ((eq sink 'emacs)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1782 (gdb-append-to-partial-output new)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1783 so-far)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1784 ((eq sink 'inferior)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1785 (gdb-append-to-inferior-io new)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1786 so-far)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1787 (t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1788 (gdb-resync)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1789 (error "Bogon output sink %S" sink)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1790
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1791 (defun gdb-append-to-partial-output (string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1792 (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1793 (goto-char (point-max))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1794 (insert string)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1795
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1796 (defun gdb-clear-partial-output ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1797 (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1798 (erase-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1799
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1800 (defun gdb-append-to-inferior-io (string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1801 (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1802 (goto-char (point-max))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1803 (insert-before-markers string))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1804 (if (not (string-equal string ""))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1805 (gdb-display-buffer (gdb-get-buffer-create 'gdb-inferior-io) t)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1806
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1807 (defun gdb-clear-inferior-io ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1808 (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1809 (erase-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1810
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1811 (defun gdb-jsonify-buffer (&optional fix-key fix-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1812 "Prepare GDB/MI output in current buffer for parsing with `json-read'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1813
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1814 Field names are wrapped in double quotes and equal signs are
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1815 replaced with semicolons.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1816
106840
5df8e547a422 Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
1817 If FIX-KEY is non-nil, strip all \"FIX-KEY=\" occurrences from
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
1818 partial output. This is used to get rid of useless keys in lists
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
1819 in MI messages, e.g.: [key=.., key=..]. -stack-list-frames and
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1820 -break-info are examples of MI commands which issue such
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1821 responses.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1822
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1823 If FIX-LIST is non-nil, \"FIX-LIST={..}\" is replaced with
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
1824 \"FIX-LIST=[..]\" prior to parsing. This is used to fix broken
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1825 -break-info output when it contains breakpoint script field
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1826 incompatible with GDB/MI output syntax."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1827 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1828 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1829 ;; Sometimes missing symbol information precedes "^done" record.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1830 (re-search-forward "[[:ascii:]]*?\\^done," nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1831 (replace-match "")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1832 (re-search-forward "(gdb) \n" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1833 (replace-match "")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1834 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1835 (when fix-key
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1836 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1837 (while (re-search-forward (concat "[\\[,]\\(" fix-key "=\\)") nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1838 (replace-match "" nil nil nil 1))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1839 (when fix-list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1840 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1841 ;; Find positions of braces which enclose broken list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1842 (while (re-search-forward (concat fix-list "={\"") nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1843 (let ((p1 (goto-char (- (point) 2)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1844 (p2 (progn (forward-sexp)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1845 (1- (point)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1846 ;; Replace braces with brackets
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1847 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1848 (goto-char p1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1849 (delete-char 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1850 (insert "[")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1851 (goto-char p2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1852 (delete-char 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1853 (insert "]"))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1854 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1855 (insert "{")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1856 (while (re-search-forward
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1857 "\\([[:alnum:]-_]+\\)=\\({\\|\\[\\|\"\"\\|\".*?[^\\]\"\\)" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1858 (replace-match "\"\\1\":\\2" nil nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1859 (goto-char (point-max))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1860 (insert "}")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1861
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1862 (defun gdb-json-read-buffer (&optional fix-key fix-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1863 "Prepare and parse GDB/MI output in current buffer with `json-read'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1864
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1865 FIX-KEY and FIX-LIST work as in `gdb-jsonify-buffer'."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1866 (gdb-jsonify-buffer fix-key fix-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1867 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1868 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1869 (let ((json-array-type 'list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1870 (json-read))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1871
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1872 (defun gdb-json-partial-output (&optional fix-key fix-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1873 "Prepare and parse gdb-partial-output-buffer with `json-read'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1874
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1875 FIX-KEY and FIX-KEY work as in `gdb-jsonify-buffer'."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1876 (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1877 (gdb-json-read-buffer fix-key fix-list)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1878
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1879
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1880 ;; One trick is to have a command who's output is always available in a buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1881 ;; of it's own, and is always up to date. We build several buffers of this
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1882 ;; type.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1883 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1884 ;; There are two aspects to this: gdb has to tell us when the output for that
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1885 ;; command might have changed, and we have to be able to run the command
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1886 ;; behind the user's back.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1887 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1888 ;; The output phasing associated with the variable gdb-output-sink
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1889 ;; help us to run commands behind the user's back.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1890 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1891 ;; Below is the code for specificly managing buffers of output from one
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1892 ;; command.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1893 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1894
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1895 ;; The trigger function is suitable for use in the assoc GDB-ANNOTATION-RULES
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1896 ;; It adds an input for the command we are tracking. It should be the
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1897 ;; annotation rule binding of whatever gdb sends to tell us this command
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1898 ;; might have changed it's output.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1899 ;;
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
1900 ;; NAME is the function name. DEMAND-PREDICATE tests if output is really needed.
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1901 ;; GDB-COMMAND is a string of such. OUTPUT-HANDLER is the function bound to the
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1902 ;; input in the input queue (see comment about ``gdb communications'' above).
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1903
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1904 (defmacro def-gdb-auto-update-trigger (name demand-predicate gdb-command
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1905 output-handler)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1906 `(defun ,name (&optional ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1907 (if (and ,demand-predicate
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1908 (not (member ',name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1909 gdb-pending-triggers)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1910 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1911 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1912 (list ,gdb-command ',output-handler))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1913 (push ',name gdb-pending-triggers)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1914
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1915 (defmacro def-gdb-auto-update-handler (name trigger buf-key custom-defun)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1916 `(defun ,name ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1917 (setq gdb-pending-triggers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1918 (delq ',trigger
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1919 gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1920 (let ((buf (gdb-get-buffer ',buf-key)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1921 (and buf
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1922 (with-current-buffer buf
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1923 (let* ((window (get-buffer-window buf 0))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1924 (start (window-start window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1925 (p (if window (window-point window) (point)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1926 (buffer-read-only nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1927 (erase-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1928 (insert-buffer-substring (gdb-get-buffer-create
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1929 'gdb-partial-output-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1930 (if window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1931 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1932 (set-window-start window start)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1933 (set-window-point window p))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1934 (goto-char p))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1935 ;; put customisation here
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1936 (,custom-defun)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1937
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1938 (defmacro def-gdb-auto-updated-buffer (buffer-key
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1939 trigger-name gdb-command
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1940 output-handler-name custom-defun)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1941 `(progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1942 (def-gdb-auto-update-trigger ,trigger-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1943 ;; The demand predicate:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1944 (gdb-get-buffer ',buffer-key)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1945 ,gdb-command
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1946 ,output-handler-name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1947 (def-gdb-auto-update-handler ,output-handler-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1948 ,trigger-name ,buffer-key ,custom-defun)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1949
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1950
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1951 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1952 ;; Breakpoint buffer : This displays the output of `info breakpoints'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1953 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1954 (gdb-set-buffer-rules 'gdb-breakpoints-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1955 'gdb-breakpoints-buffer-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1956 'gdb-breakpoints-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1957
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1958 (def-gdb-auto-updated-buffer gdb-breakpoints-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1959 ;; This defines the auto update rule for buffers of type
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1960 ;; `gdb-breakpoints-buffer'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1961 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1962 ;; It defines a function to serve as the annotation handler that
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1963 ;; handles the `foo-invalidated' message. That function is called:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1964 gdb-invalidate-breakpoints
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1965 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1966 ;; To update the buffer, this command is sent to gdb.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1967 "server info breakpoints\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1968 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1969 ;; This also defines a function to be the handler for the output
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1970 ;; from the command above. That function will copy the output into
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1971 ;; the appropriately typed buffer. That function will be called:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1972 gdb-info-breakpoints-handler
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1973 ;; buffer specific functions
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1974 gdb-info-breakpoints-custom)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1975
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1976 (defconst breakpoint-xpm-data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1977 "/* XPM */
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1978 static char *magick[] = {
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1979 /* columns rows colors chars-per-pixel */
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1980 \"10 10 2 1\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1981 \" c red\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1982 \"+ c None\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1983 /* pixels */
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1984 \"+++ +++\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1985 \"++ ++\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1986 \"+ +\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1987 \" \",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1988 \" \",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1989 \" \",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1990 \" \",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1991 \"+ +\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1992 \"++ ++\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1993 \"+++ +++\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1994 };"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1995 "XPM data used for breakpoint icon.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1996
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1997 (defconst breakpoint-enabled-pbm-data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1998 "P1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1999 10 10\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2000 0 0 0 0 1 1 1 1 0 0 0 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2001 0 0 0 1 1 1 1 1 1 0 0 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2002 0 0 1 1 1 1 1 1 1 1 0 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2003 0 1 1 1 1 1 1 1 1 1 1 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2004 0 1 1 1 1 1 1 1 1 1 1 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2005 0 1 1 1 1 1 1 1 1 1 1 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2006 0 1 1 1 1 1 1 1 1 1 1 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2007 0 0 1 1 1 1 1 1 1 1 0 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2008 0 0 0 1 1 1 1 1 1 0 0 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2009 0 0 0 0 1 1 1 1 0 0 0 0"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2010 "PBM data used for enabled breakpoint icon.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2011
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2012 (defconst breakpoint-disabled-pbm-data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2013 "P1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2014 10 10\",
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2015 0 0 1 0 1 0 1 0 0 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2016 0 1 0 1 0 1 0 1 0 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2017 1 0 1 0 1 0 1 0 1 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2018 0 1 0 1 0 1 0 1 0 1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2019 1 0 1 0 1 0 1 0 1 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2020 0 1 0 1 0 1 0 1 0 1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2021 1 0 1 0 1 0 1 0 1 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2022 0 1 0 1 0 1 0 1 0 1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2023 0 0 1 0 1 0 1 0 1 0
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2024 0 0 0 1 0 1 0 1 0 0"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2025 "PBM data used for disabled breakpoint icon.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2026
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2027 (defvar breakpoint-enabled-icon nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2028 "Icon for enabled breakpoint in display margin.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2029
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2030 (defvar breakpoint-disabled-icon nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2031 "Icon for disabled breakpoint in display margin.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2032
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2033 (declare-function define-fringe-bitmap "fringe.c"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2034 (bitmap bits &optional height width align))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2035
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2036 (and (display-images-p)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2037 ;; Bitmap for breakpoint in fringe
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2038 (define-fringe-bitmap 'breakpoint
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2039 "\x3c\x7e\xff\xff\xff\xff\x7e\x3c")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2040 ;; Bitmap for gud-overlay-arrow in fringe
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2041 (define-fringe-bitmap 'hollow-right-triangle
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2042 "\xe0\x90\x88\x84\x84\x88\x90\xe0"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2043
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2044 (defface breakpoint-enabled
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2045 '((t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2046 :foreground "red1"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2047 :weight bold))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2048 "Face for enabled breakpoint icon in fringe."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2049 :group 'gdb)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2050
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2051 (defface breakpoint-disabled
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2052 '((((class color) (min-colors 88)) :foreground "grey70")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2053 ;; Ensure that on low-color displays that we end up something visible.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2054 (((class color) (min-colors 8) (background light))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2055 :foreground "black")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2056 (((class color) (min-colors 8) (background dark))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2057 :foreground "white")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2058 (((type tty) (class mono))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2059 :inverse-video t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2060 (t :background "gray"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2061 "Face for disabled breakpoint icon in fringe."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2062 :group 'gdb)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2063
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2064 (defconst gdb-breakpoint-regexp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2065 "\\(?:\\([0-9]+\\).*?\\(?:point\\|catch\\s-+\\S-+\\)\\s-+\\S-+\\|\\([0-9]+\\.[0-9]+\\)\\)\\s-+\\(.\\)\\s-+")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2066
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2067 ;; Put breakpoint icons in relevant margins (even those set in the GUD buffer).
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2068 (defun gdb-info-breakpoints-custom ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2069 (let ((flag) (bptno))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2070 ;; Remove all breakpoint-icons in source buffers but not assembler buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2071 (dolist (buffer (buffer-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2072 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2073 (if (and (memq gud-minor-mode '(gdba gdbmi))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2074 (not (string-match "\\` ?\\*.+\\*\\'" (buffer-name))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2075 (gdb-remove-breakpoint-icons (point-min) (point-max)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2076 (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2077 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2078 (let ((buffer-read-only nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2079 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2080 (while (< (point) (- (point-max) 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2081 (forward-line 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2082 (if (looking-at gdb-breakpoint-regexp)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2083 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2084 (setq bptno (or (match-string 1) (match-string 2)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2085 (setq flag (char-after (match-beginning 3)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2086 (if (match-string 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2087 (setq gdb-parent-bptno-enabled (eq flag ?y)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2088 (add-text-properties
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2089 (match-beginning 3) (match-end 3)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2090 (if (eq flag ?y)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2091 '(face font-lock-warning-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2092 '(face font-lock-type-face)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2093 (let ((bl (point))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2094 (el (line-end-position)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2095 (when (re-search-forward " in \\(.*\\) at" el t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2096 (add-text-properties
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2097 (match-beginning 1) (match-end 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2098 '(face font-lock-function-name-face)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2099 (if (re-search-forward
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2100 ".*\\s-+\\(\\S-+\\):\\([0-9]+\\)$" el t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2101 (let ((line (match-string 2))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2102 (file (match-string 1)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2103 (add-text-properties bl el
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2104 '(mouse-face highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2105 help-echo "mouse-2, RET: visit breakpoint"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2106 (unless (file-exists-p file)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2107 (setq file (cdr (assoc bptno gdb-location-alist))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2108 (if (and file
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2109 (not (string-equal file "File not found")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2110 (with-current-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2111 (find-file-noselect file 'nowarn)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2112 (gdb-init-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2113 ;; Only want one breakpoint icon at each
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2114 ;; location.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2115 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2116 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2117 (forward-line (1- (string-to-number line)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2118 (gdb-put-breakpoint-icon (eq flag ?y) bptno)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2119 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2120 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2121 (concat gdb-server-prefix "list "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2122 (match-string-no-properties 1) ":1\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2123 'ignore))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2124 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2125 (list (concat gdb-server-prefix "info source\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2126 `(lambda () (gdb-get-location
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2127 ,bptno ,line ,flag))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2128 (if (re-search-forward
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2129 "<\\(\\(\\sw\\|[_.]\\)+\\)\\(\\+[0-9]+\\)?>"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2130 el t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2131 (add-text-properties
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2132 (match-beginning 1) (match-end 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2133 '(face font-lock-function-name-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2134 (end-of-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2135 (re-search-backward "\\s-\\(\\S-*\\)"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2136 bl t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2137 (add-text-properties
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2138 (match-beginning 1) (match-end 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2139 '(face font-lock-variable-name-face)))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2140 (end-of-line))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2141 (if (gdb-get-buffer 'gdb-assembler-buffer) (gdb-assembler-custom))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2142
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2143 ;; Breakpoints buffer is always present. Hack to just update
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2144 ;; current frame if there's been no execution.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2145 (if gdb-stack-update
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2146 (setq gdb-stack-update nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2147 (if (gdb-get-buffer 'gdb-stack-buffer) (gdb-info-stack-custom))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2148
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2149 (declare-function gud-remove "gdb-ui" t t) ; gud-def
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2150 (declare-function gud-break "gdb-ui" t t) ; gud-def
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2151 (declare-function fringe-bitmaps-at-pos "fringe.c" (&optional pos window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2152
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2153 (defun gdb-mouse-set-clear-breakpoint (event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2154 "Set/clear breakpoint in left fringe/margin at mouse click.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2155 If not in a source or disassembly buffer just set point."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2156 (interactive "e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2157 (mouse-minibuffer-check event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2158 (let ((posn (event-end event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2159 (with-selected-window (posn-window posn)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2160 (if (or (buffer-file-name) (eq major-mode 'gdb-assembler-mode))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2161 (if (numberp (posn-point posn))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2162 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2163 (goto-char (posn-point posn))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2164 (if (or (posn-object posn)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2165 (eq (car (fringe-bitmaps-at-pos (posn-point posn)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2166 'breakpoint))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2167 (gud-remove nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2168 (gud-break nil)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2169 (posn-set-point posn))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2170
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2171 (defun gdb-mouse-toggle-breakpoint-margin (event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2172 "Enable/disable breakpoint in left margin with mouse click."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2173 (interactive "e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2174 (mouse-minibuffer-check event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2175 (let ((posn (event-end event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2176 (if (numberp (posn-point posn))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2177 (with-selected-window (posn-window posn)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2178 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2179 (goto-char (posn-point posn))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2180 (if (posn-object posn)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2181 (let* ((bptno (get-text-property
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2182 0 'gdb-bptno (car (posn-string posn)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2183 (string-match "\\([0-9+]\\)*" bptno)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2184 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2185 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2186 (concat gdb-server-prefix
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2187 (if (get-text-property
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2188 0 'gdb-enabled (car (posn-string posn)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2189 "disable "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2190 "enable ")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2191 (match-string 1 bptno) "\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2192 'ignore)))))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2193
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2194 (defun gdb-mouse-toggle-breakpoint-fringe (event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2195 "Enable/disable breakpoint in left fringe with mouse click."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2196 (interactive "e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2197 (mouse-minibuffer-check event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2198 (let* ((posn (event-end event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2199 (pos (posn-point posn))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2200 obj)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2201 (when (numberp pos)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2202 (with-selected-window (posn-window posn)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2203 (with-current-buffer (window-buffer (selected-window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2204 (goto-char pos)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2205 (dolist (overlay (overlays-in pos pos))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2206 (when (overlay-get overlay 'put-break)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2207 (setq obj (overlay-get overlay 'before-string))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2208 (when (stringp obj)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2209 (let* ((bptno (get-text-property 0 'gdb-bptno obj)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2210 (string-match "\\([0-9+]\\)*" bptno)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2211 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2212 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2213 (concat gdb-server-prefix
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2214 (if (get-text-property 0 'gdb-enabled obj)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2215 "disable "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2216 "enable ")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2217 (match-string 1 bptno) "\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2218 'ignore)))))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2219
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2220 (defun gdb-breakpoints-buffer-name ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2221 (with-current-buffer gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2222 (concat "*breakpoints of " (gdb-get-target-string) "*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2223
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2224 (defun gdb-display-breakpoints-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2225 "Display status of user-settable breakpoints."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2226 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2227 (gdb-display-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2228 (gdb-get-buffer-create 'gdb-breakpoints-buffer) t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2229
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2230 (defun gdb-frame-breakpoints-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2231 "Display status of user-settable breakpoints in a new frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2232 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2233 (let ((special-display-regexps (append special-display-regexps '(".*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2234 (special-display-frame-alist gdb-frame-parameters))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2235 (display-buffer (gdb-get-buffer-create 'gdb-breakpoints-buffer))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2236
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2237 (defvar gdb-breakpoints-mode-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2238 (let ((map (make-sparse-keymap))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2239 (menu (make-sparse-keymap "Breakpoints")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2240 (define-key menu [quit] '("Quit" . gdb-delete-frame-or-window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2241 (define-key menu [goto] '("Goto" . gdb-goto-breakpoint))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2242 (define-key menu [delete] '("Delete" . gdb-delete-breakpoint))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2243 (define-key menu [toggle] '("Toggle" . gdb-toggle-breakpoint))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2244 (suppress-keymap map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2245 (define-key map [menu-bar breakpoints] (cons "Breakpoints" menu))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2246 (define-key map " " 'gdb-toggle-breakpoint)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2247 (define-key map "D" 'gdb-delete-breakpoint)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2248 ;; Don't bind "q" to kill-this-buffer as we need it for breakpoint icons.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2249 (define-key map "q" 'gdb-delete-frame-or-window)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2250 (define-key map "\r" 'gdb-goto-breakpoint)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2251 (define-key map [mouse-2] 'gdb-goto-breakpoint)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2252 (define-key map [follow-link] 'mouse-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2253 map))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2254
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2255 (defun gdb-delete-frame-or-window ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2256 "Delete frame if there is only one window. Otherwise delete the window."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2257 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2258 (if (one-window-p) (delete-frame)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2259 (delete-window)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2260
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2261 ;;from make-mode-line-mouse-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2262 (defun gdb-make-header-line-mouse-map (mouse function) "\
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2263 Return a keymap with single entry for mouse key MOUSE on the header line.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2264 MOUSE is defined to run function FUNCTION with no args in the buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2265 corresponding to the mode line clicked."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2266 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2267 (define-key map (vector 'header-line mouse) function)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2268 (define-key map (vector 'header-line 'down-mouse-1) 'ignore)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2269 map))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2270
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2271 (defmacro gdb-propertize-header (name buffer help-echo mouse-face face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2272 `(propertize ,name
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
2273 'help-echo ,help-echo
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2274 'mouse-face ',mouse-face
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2275 'face ',face
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2276 'local-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2277 (gdb-make-header-line-mouse-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2278 'mouse-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2279 (lambda (event) (interactive "e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2280 (save-selected-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2281 (select-window (posn-window (event-start event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2282 (set-window-dedicated-p (selected-window) nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2283 (switch-to-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2284 (gdb-get-buffer-create ',buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2285 (setq header-line-format(gdb-set-header ',buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2286 (set-window-dedicated-p (selected-window) t))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2287
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2288 (defun gdb-set-header (buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2289 (cond ((eq buffer 'gdb-locals-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2290 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2291 (gdb-propertize-header "Locals" gdb-locals-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2292 nil nil mode-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2293 " "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2294 (gdb-propertize-header "Registers" gdb-registers-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2295 "mouse-1: select" mode-line-highlight mode-line-inactive)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2296 ((eq buffer 'gdb-registers-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2297 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2298 (gdb-propertize-header "Locals" gdb-locals-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2299 "mouse-1: select" mode-line-highlight mode-line-inactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2300 " "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2301 (gdb-propertize-header "Registers" gdb-registers-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2302 nil nil mode-line)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2303 ((eq buffer 'gdb-breakpoints-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2304 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2305 (gdb-propertize-header "Breakpoints" gdb-breakpoints-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2306 nil nil mode-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2307 " "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2308 (gdb-propertize-header "Threads" gdb-threads-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2309 "mouse-1: select" mode-line-highlight mode-line-inactive)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2310 ((eq buffer 'gdb-threads-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2311 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2312 (gdb-propertize-header "Breakpoints" gdb-breakpoints-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2313 "mouse-1: select" mode-line-highlight mode-line-inactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2314 " "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2315 (gdb-propertize-header "Threads" gdb-threads-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2316 nil nil mode-line)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2317
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2318 (defvar gdb-breakpoints-header
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2319 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2320 (gdb-propertize-header "Breakpoints" gdb-breakpoints-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2321 nil nil mode-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2322 " "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2323 (gdb-propertize-header "Threads" gdb-threads-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2324 "mouse-1: select" mode-line-highlight mode-line-inactive)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2325
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2326 (defun gdb-breakpoints-mode ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2327 "Major mode for gdb breakpoints.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2328
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2329 \\{gdb-breakpoints-mode-map}"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2330 (kill-all-local-variables)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2331 (setq major-mode 'gdb-breakpoints-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2332 (setq mode-name "Breakpoints")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2333 (use-local-map gdb-breakpoints-mode-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2334 (setq buffer-read-only t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2335 (buffer-disable-undo)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2336 (setq header-line-format gdb-breakpoints-header)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2337 (run-mode-hooks 'gdb-breakpoints-mode-hook)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2338 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2339 'gdb-invalidate-breakpoints
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2340 'gdbmi-invalidate-breakpoints))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2341
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2342 (defun gdb-toggle-breakpoint ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2343 "Enable/disable breakpoint at current line."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2344 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2345 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2346 (beginning-of-line 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2347 (if (looking-at gdb-breakpoint-regexp)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2348 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2349 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2350 (concat gdb-server-prefix
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2351 (if (eq ?y (char-after (match-beginning 3)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2352 "disable "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2353 "enable ")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2354 (or (match-string 1) (match-string 2)) "\n") 'ignore))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2355 (error "Not recognized as break/watchpoint line"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2356
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2357 (defun gdb-delete-breakpoint ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2358 "Delete the breakpoint at current line."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2359 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2360 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2361 (beginning-of-line 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2362 (if (looking-at gdb-breakpoint-regexp)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2363 (if (match-string 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2364 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2365 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2366 (concat gdb-server-prefix "delete " (match-string 1) "\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2367 'ignore))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2368 (message-box "This breakpoint cannot be deleted on its own."))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2369 (error "Not recognized as break/watchpoint line"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2370
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2371 (defun gdb-goto-breakpoint (&optional event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2372 "Display the breakpoint location specified at current line."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2373 (interactive (list last-input-event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2374 (if event (posn-set-point (event-end event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2375 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2376 (beginning-of-line 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2377 (if (looking-at "\\([0-9]+\\.?[0-9]*\\) .*\\s-+\\(\\S-+\\):\\([0-9]+\\)$")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2378 (let ((bptno (match-string 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2379 (file (match-string 2))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2380 (line (match-string 3)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2381 (save-selected-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2382 (let* ((buffer (find-file-noselect
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2383 (if (file-exists-p file) file
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2384 (cdr (assoc bptno gdb-location-alist)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2385 (window (or (gdb-display-source-buffer buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2386 (display-buffer buffer))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2387 (setq gdb-source-window window)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2388 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2389 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2390 (forward-line (1- (string-to-number line)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2391 (set-window-point window (point))))))
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
2392 (error "No location specified"))))
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2393
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2394
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2395 ;; Frames buffer. This displays a perpetually correct backtrace
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2396 ;; (from the command `where').
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2397 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2398 ;; Alas, if your stack is deep, it is costly.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2399 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2400 (defcustom gdb-max-frames 40
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2401 "Maximum number of frames displayed in call stack."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2402 :type 'integer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2403 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2404 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2405
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2406 (gdb-set-buffer-rules 'gdb-stack-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2407 'gdb-stack-buffer-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2408 'gdb-frames-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2409
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2410 (def-gdb-auto-updated-buffer gdb-stack-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2411 gdb-invalidate-frames
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2412 (concat "server info stack " (number-to-string gdb-max-frames) "\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2413 gdb-info-stack-handler
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2414 gdb-info-stack-custom)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2415
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2416 ;; This may be more important for embedded targets where unwinding the
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2417 ;; stack may take a long time.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2418 (defadvice gdb-invalidate-frames (around gdb-invalidate-frames-advice
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2419 (&optional ignored) activate compile)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2420 "Only queue \"info stack\" if execution has occurred."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2421 (if gdb-stack-update ad-do-it))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2422
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2423 (defun gdb-info-stack-custom ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2424 (with-current-buffer (gdb-get-buffer 'gdb-stack-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2425 (let (move-to)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2426 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2427 (unless (eq gdb-look-up-stack 'delete)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2428 (let ((buffer-read-only nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2429 bl el)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2430 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2431 (while (< (point) (point-max))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2432 (setq bl (line-beginning-position)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2433 el (line-end-position))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2434 (when (looking-at "#")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2435 (add-text-properties bl el
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2436 '(mouse-face highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2437 help-echo "mouse-2, RET: Select frame")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2438 (goto-char bl)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2439 (when (looking-at "^#\\([0-9]+\\)")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2440 (when (string-equal (match-string 1) gdb-frame-number)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2441 (if (gud-tool-bar-item-visible-no-fringe)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2442 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2443 (put-text-property bl (+ bl 4)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2444 'face '(:inverse-video t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2445 (setq move-to bl))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2446 (or gdb-stack-position
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2447 (setq gdb-stack-position (make-marker)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2448 (set-marker gdb-stack-position (point))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2449 (setq move-to gdb-stack-position)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2450 (when (re-search-forward "\\([^ ]+\\) (" el t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2451 (put-text-property (match-beginning 1) (match-end 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2452 'face font-lock-function-name-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2453 (setq bl (match-end 0))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2454 (while (re-search-forward "<\\([^>]+\\)>" el t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2455 (put-text-property (match-beginning 1) (match-end 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2456 'face font-lock-function-name-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2457 (goto-char bl)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2458 (while (re-search-forward "\\(\\(\\sw\\|[_.]\\)+\\)=" el t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2459 (put-text-property (match-beginning 1) (match-end 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2460 'face font-lock-variable-name-face))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2461 (forward-line 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2462 (forward-line -1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2463 (when (looking-at "(More stack frames follow...)")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2464 (add-text-properties
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2465 (match-beginning 0) (match-end 0)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2466 '(mouse-face highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2467 gdb-max-frames t
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2468 help-echo
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2469 "mouse-2, RET: customize gdb-max-frames to see more frames"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2470 )))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2471 (when gdb-look-up-stack
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2472 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2473 (when (re-search-forward "\\(\\S-+?\\):\\([0-9]+\\)" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2474 (let ((start (line-beginning-position))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2475 (file (match-string 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2476 (line (match-string 2)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2477 (re-search-backward "^#*\\([0-9]+\\)" start t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2478 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2479 (list (concat gdb-server-prefix "frame "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2480 (match-string 1) "\n") 'gdb-set-hollow))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2481 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2482 (list (concat gdb-server-prefix "frame 0\n") 'ignore))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2483 (when move-to
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2484 (let ((window (get-buffer-window (current-buffer) 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2485 (when window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2486 (with-selected-window window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2487 (goto-char move-to)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2488 (unless (pos-visible-in-window-p)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2489 (recenter '(center)))))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2490 (if (eq gdb-look-up-stack 'delete)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2491 (kill-buffer (gdb-get-buffer 'gdb-stack-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2492 (setq gdb-look-up-stack nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2493
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2494 (defun gdb-set-hollow ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2495 (if gud-last-last-frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2496 (with-current-buffer (gud-find-file (car gud-last-last-frame))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2497 (setq fringe-indicator-alist
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2498 '((overlay-arrow . hollow-right-triangle))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2499
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2500 (defun gdb-stack-buffer-name ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2501 (with-current-buffer gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2502 (concat "*stack frames of " (gdb-get-target-string) "*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2503
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2504 (defun gdb-display-stack-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2505 "Display backtrace of current stack."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2506 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2507 (gdb-display-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2508 (gdb-get-buffer-create 'gdb-stack-buffer) t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2509
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2510 (defun gdb-frame-stack-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2511 "Display backtrace of current stack in a new frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2512 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2513 (let ((special-display-regexps (append special-display-regexps '(".*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2514 (special-display-frame-alist gdb-frame-parameters))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2515 (display-buffer (gdb-get-buffer-create 'gdb-stack-buffer))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2516
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2517 (defvar gdb-frames-mode-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2518 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2519 (suppress-keymap map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2520 (define-key map "q" 'kill-this-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2521 (define-key map "\r" 'gdb-frames-select)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2522 (define-key map "F" 'gdb-frames-force-update)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2523 (define-key map [mouse-2] 'gdb-frames-select)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2524 (define-key map [follow-link] 'mouse-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2525 map))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2526
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2527 (declare-function gdbmi-invalidate-frames "ext:gdb-mi" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2528
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2529 (defun gdb-frames-force-update ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2530 "Force update of call stack.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2531 Use when the displayed call stack gets out of sync with the
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2532 actual one, e.g after using the Gdb command \"return\" or setting
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2533 $pc directly from the GUD buffer. This command isn't normally needed."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2534 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2535 (setq gdb-stack-update t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2536 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2537 (gdb-invalidate-frames)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2538 (gdbmi-invalidate-frames)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2539
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2540 (defun gdb-frames-mode ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2541 "Major mode for gdb call stack.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2542
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2543 \\{gdb-frames-mode-map}"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2544 (kill-all-local-variables)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2545 (setq major-mode 'gdb-frames-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2546 (setq mode-name "Frames")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2547 (setq gdb-stack-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2548 (add-to-list 'overlay-arrow-variable-list 'gdb-stack-position)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2549 (setq truncate-lines t) ;; Make it easier to see overlay arrow.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2550 (setq buffer-read-only t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2551 (buffer-disable-undo)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2552 (gdb-thread-identification)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2553 (use-local-map gdb-frames-mode-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2554 (run-mode-hooks 'gdb-frames-mode-hook)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2555 (setq gdb-stack-update t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2556 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2557 'gdb-invalidate-frames
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2558 'gdbmi-invalidate-frames))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2559
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2560 (defun gdb-get-frame-number ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2561 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2562 (end-of-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2563 (let* ((start (line-beginning-position))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2564 (pos (re-search-backward "^#*\\([0-9]+\\)" start t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2565 (n (or (and pos (match-string 1)) "0")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2566 n)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2567
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2568 (defun gdb-frames-select (&optional event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2569 "Select the frame and display the relevant source."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2570 (interactive (list last-input-event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2571 (if event (posn-set-point (event-end event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2572 (if (get-text-property (point) 'gdb-max-frames)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2573 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2574 (message-box "After setting gdb-max-frames, you need to enter\n\
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2575 another GDB command e.g pwd, to see new frames")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2576 (customize-variable-other-window 'gdb-max-frames))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2577 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2578 (list (concat gdb-server-prefix "frame "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2579 (gdb-get-frame-number) "\n") 'ignore))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2580
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2581
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2582 ;; Threads buffer. This displays a selectable thread list.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2583 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2584 (gdb-set-buffer-rules 'gdb-threads-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2585 'gdb-threads-buffer-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2586 'gdb-threads-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2587
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2588 (def-gdb-auto-updated-buffer gdb-threads-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2589 gdb-invalidate-threads
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2590 (concat gdb-server-prefix "info threads\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2591 gdb-info-threads-handler
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2592 gdb-info-threads-custom)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2593
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2594 (defun gdb-info-threads-custom ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2595 (with-current-buffer (gdb-get-buffer 'gdb-threads-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2596 (let ((buffer-read-only nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2597 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2598 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2599 (if (re-search-forward "\\* \\([0-9]+\\)" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2600 (setq gdb-thread-indicator
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2601 (propertize (concat " [" (match-string 1) "]")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2602 ; FIXME: this help-echo doesn't work
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2603 'help-echo "thread id")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2604 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2605 (while (< (point) (point-max))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2606 (unless (looking-at "No ")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2607 (add-text-properties (line-beginning-position) (line-end-position)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2608 '(mouse-face highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2609 help-echo "mouse-2, RET: select thread")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2610 (forward-line 1))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2611
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2612 (defun gdb-threads-buffer-name ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2613 (with-current-buffer gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2614 (concat "*threads of " (gdb-get-target-string) "*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2615
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2616 (defun gdb-display-threads-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2617 "Display IDs of currently known threads."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2618 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2619 (gdb-display-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2620 (gdb-get-buffer-create 'gdb-threads-buffer) t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2621
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2622 (defun gdb-frame-threads-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2623 "Display IDs of currently known threads in a new frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2624 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2625 (let ((special-display-regexps (append special-display-regexps '(".*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2626 (special-display-frame-alist gdb-frame-parameters))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2627 (display-buffer (gdb-get-buffer-create 'gdb-threads-buffer))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2628
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2629 (defvar gdb-threads-mode-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2630 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2631 (suppress-keymap map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2632 (define-key map "q" 'kill-this-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2633 (define-key map "\r" 'gdb-threads-select)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2634 (define-key map [mouse-2] 'gdb-threads-select)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2635 (define-key map [follow-link] 'mouse-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2636 map))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2637
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2638 (defvar gdb-threads-font-lock-keywords
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2639 '((") +\\([^ ]+\\) (" (1 font-lock-function-name-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2640 ("in \\([^ ]+\\) (" (1 font-lock-function-name-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2641 ("\\(\\(\\sw\\|[_.]\\)+\\)=" (1 font-lock-variable-name-face)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2642 "Font lock keywords used in `gdb-threads-mode'.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2643
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2644 (defun gdb-threads-mode ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2645 "Major mode for gdb threads.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2646
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2647 \\{gdb-threads-mode-map}"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2648 (kill-all-local-variables)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2649 (setq major-mode 'gdb-threads-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2650 (setq mode-name "Threads")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2651 (setq buffer-read-only t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2652 (buffer-disable-undo)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2653 (setq header-line-format gdb-breakpoints-header)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2654 (use-local-map gdb-threads-mode-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2655 (set (make-local-variable 'font-lock-defaults)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2656 '(gdb-threads-font-lock-keywords))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2657 (run-mode-hooks 'gdb-threads-mode-hook)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2658 ;; Force "info threads" onto queue.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2659 (lambda () (let ((gud-running nil)) (gdb-invalidate-threads))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2660
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2661 (defun gdb-get-thread-number ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2662 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2663 (re-search-backward "^\\s-*\\([0-9]*\\)" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2664 (match-string-no-properties 1)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2665
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2666 (defun gdb-threads-select (&optional event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2667 "Select the thread and display the relevant source."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2668 (interactive (list last-input-event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2669 (if event (posn-set-point (event-end event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2670 (setq gdb-stack-update t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2671 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2672 (list (concat gdb-server-prefix "thread "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2673 (gdb-get-thread-number) "\n") 'ignore))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2674 (gud-display-frame))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2675
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2676 (defun gdb-thread-identification ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2677 (setq mode-line-buffer-identification
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2678 (list (car mode-line-buffer-identification)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2679 '(gdb-thread-indicator gdb-thread-indicator))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2680
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2681 ;; Registers buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2682 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2683 (defcustom gdb-all-registers nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2684 "Non-nil means include floating-point registers."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2685 :type 'boolean
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2686 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2687 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2688
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2689 (gdb-set-buffer-rules 'gdb-registers-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2690 'gdb-registers-buffer-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2691 'gdb-registers-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2692
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2693 (def-gdb-auto-updated-buffer gdb-registers-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2694 gdb-invalidate-registers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2695 (concat
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2696 gdb-server-prefix "info " (if gdb-all-registers "all-") "registers\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2697 gdb-info-registers-handler
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2698 gdb-info-registers-custom)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2699
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2700 (defun gdb-info-registers-custom ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2701 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2702 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2703 (let ((buffer-read-only nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2704 start end)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2705 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2706 (while (< (point) (point-max))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2707 (setq start (line-beginning-position))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2708 (setq end (line-end-position))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2709 (when (looking-at "^[^ ]+")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2710 (unless (string-equal (match-string 0) "The")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2711 (put-text-property start (match-end 0)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2712 'face font-lock-variable-name-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2713 (add-text-properties start end
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2714 '(help-echo "mouse-2: edit value"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2715 mouse-face highlight))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2716 (forward-line 1))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2717
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2718 (defun gdb-edit-register-value (&optional event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2719 (interactive (list last-input-event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2720 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2721 (if event (posn-set-point (event-end event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2722 (beginning-of-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2723 (let* ((register (current-word))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2724 (value (read-string (format "New value (%s): " register))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2725 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2726 (list (concat gdb-server-prefix "set $" register "=" value "\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2727 'ignore)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2728
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2729 (defvar gdb-registers-mode-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2730 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2731 (suppress-keymap map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2732 (define-key map "\r" 'gdb-edit-register-value)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2733 (define-key map [mouse-2] 'gdb-edit-register-value)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2734 (define-key map " " 'gdb-all-registers)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2735 (define-key map "q" 'kill-this-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2736 map))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2737
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2738 (defvar gdb-locals-header
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2739 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2740 (gdb-propertize-header "Locals" gdb-locals-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2741 nil nil mode-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2742 " "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2743 (gdb-propertize-header "Registers" gdb-registers-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2744 "mouse-1: select" mode-line-highlight mode-line-inactive)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2745
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2746
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2747 (defun gdb-registers-mode ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2748 "Major mode for gdb registers.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2749
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2750 \\{gdb-registers-mode-map}"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2751 (kill-all-local-variables)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2752 (setq major-mode 'gdb-registers-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2753 (setq mode-name "Registers")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2754 (setq header-line-format gdb-locals-header)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2755 (setq buffer-read-only t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2756 (buffer-disable-undo)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2757 (gdb-thread-identification)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2758 (use-local-map gdb-registers-mode-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2759 (run-mode-hooks 'gdb-registers-mode-hook)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2760 (if (string-equal gdb-version "pre-6.4")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2761 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2762 (if gdb-all-registers (setq mode-name "Registers:All"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2763 'gdb-invalidate-registers)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2764 'gdb-invalidate-registers-1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2765
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2766 (defun gdb-registers-buffer-name ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2767 (with-current-buffer gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2768 (concat "*registers of " (gdb-get-target-string) "*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2769
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2770 (defun gdb-display-registers-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2771 "Display integer register contents."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2772 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2773 (gdb-display-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2774 (gdb-get-buffer-create 'gdb-registers-buffer) t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2775
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2776 (defun gdb-frame-registers-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2777 "Display integer register contents in a new frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2778 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2779 (let ((special-display-regexps (append special-display-regexps '(".*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2780 (special-display-frame-alist gdb-frame-parameters))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2781 (display-buffer (gdb-get-buffer-create 'gdb-registers-buffer))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2782
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2783 (defun gdb-all-registers ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2784 "Toggle the display of floating-point registers (pre GDB 6.4 only)."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2785 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2786 (when (string-equal gdb-version "pre-6.4")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2787 (if gdb-all-registers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2788 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2789 (setq gdb-all-registers nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2790 (with-current-buffer (gdb-get-buffer-create 'gdb-registers-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2791 (setq mode-name "Registers")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2792 (setq gdb-all-registers t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2793 (with-current-buffer (gdb-get-buffer-create 'gdb-registers-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2794 (setq mode-name "Registers:All")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2795 (message (format "Display of floating-point registers %sabled"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2796 (if gdb-all-registers "en" "dis")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2797 (gdb-invalidate-registers)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2798
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2799
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2800 ;; Memory buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2801 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2802 (defcustom gdb-memory-repeat-count 32
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2803 "Number of data items in memory window."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2804 :type 'integer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2805 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2806 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2807
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2808 (defcustom gdb-memory-format "x"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2809 "Display format of data items in memory window."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2810 :type '(choice (const :tag "Hexadecimal" "x")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2811 (const :tag "Signed decimal" "d")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2812 (const :tag "Unsigned decimal" "u")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2813 (const :tag "Octal" "o")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2814 (const :tag "Binary" "t"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2815 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2816 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2817
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2818 (defcustom gdb-memory-unit "w"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2819 "Unit size of data items in memory window."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2820 :type '(choice (const :tag "Byte" "b")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2821 (const :tag "Halfword" "h")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2822 (const :tag "Word" "w")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2823 (const :tag "Giant word" "g"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2824 :group 'gdb
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2825 :version "22.1")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2826
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2827 (gdb-set-buffer-rules 'gdb-memory-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2828 'gdb-memory-buffer-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2829 'gdb-memory-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2830
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2831 (def-gdb-auto-updated-buffer gdb-memory-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2832 gdb-invalidate-memory
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2833 (concat gdb-server-prefix "x/" (number-to-string gdb-memory-repeat-count)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2834 gdb-memory-format gdb-memory-unit " " gdb-memory-address "\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2835 gdb-read-memory-handler
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2836 gdb-read-memory-custom)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2837
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2838 (defun gdb-read-memory-custom ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2839 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2840 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2841 (if (looking-at "0x[[:xdigit:]]+")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2842 (setq gdb-memory-address (match-string 0)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2843
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2844 (defvar gdb-memory-mode-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2845 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2846 (suppress-keymap map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2847 (define-key map "S" 'gdb-memory-set-address)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2848 (define-key map "N" 'gdb-memory-set-repeat-count)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2849 (define-key map "q" 'kill-this-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2850 map))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2851
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2852 (defun gdb-memory-set-address (&optional event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2853 "Set the start memory address."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2854 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2855 (let ((arg (read-from-minibuffer "Start address: ")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2856 (setq gdb-memory-address arg))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2857 (gdb-invalidate-memory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2858
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2859 (defun gdb-memory-set-repeat-count (&optional event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2860 "Set the number of data items in memory window."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2861 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2862 (let* ((arg (read-from-minibuffer "Repeat count: "))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2863 (count (string-to-number arg)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2864 (if (<= count 0)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2865 (error "Positive numbers only")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2866 (customize-set-variable 'gdb-memory-repeat-count count)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2867 (gdb-invalidate-memory))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2868
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2869 (defun gdb-memory-format-binary ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2870 "Set the display format to binary."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2871 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2872 (customize-set-variable 'gdb-memory-format "t")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2873 (gdb-invalidate-memory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2874
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2875 (defun gdb-memory-format-octal ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2876 "Set the display format to octal."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2877 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2878 (customize-set-variable 'gdb-memory-format "o")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2879 (gdb-invalidate-memory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2880
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2881 (defun gdb-memory-format-unsigned ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2882 "Set the display format to unsigned decimal."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2883 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2884 (customize-set-variable 'gdb-memory-format "u")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2885 (gdb-invalidate-memory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2886
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2887 (defun gdb-memory-format-signed ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2888 "Set the display format to decimal."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2889 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2890 (customize-set-variable 'gdb-memory-format "d")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2891 (gdb-invalidate-memory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2892
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2893 (defun gdb-memory-format-hexadecimal ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2894 "Set the display format to hexadecimal."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2895 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2896 (customize-set-variable 'gdb-memory-format "x")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2897 (gdb-invalidate-memory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2898
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2899 (defvar gdb-memory-format-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2900 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2901 (define-key map [header-line down-mouse-3] 'gdb-memory-format-menu-1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2902 map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2903 "Keymap to select format in the header line.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2904
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2905 (defvar gdb-memory-format-menu (make-sparse-keymap "Format")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2906 "Menu of display formats in the header line.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2907
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2908 (define-key gdb-memory-format-menu [binary]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2909 '(menu-item "Binary" gdb-memory-format-binary
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2910 :button (:radio . (equal gdb-memory-format "t"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2911 (define-key gdb-memory-format-menu [octal]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2912 '(menu-item "Octal" gdb-memory-format-octal
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2913 :button (:radio . (equal gdb-memory-format "o"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2914 (define-key gdb-memory-format-menu [unsigned]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2915 '(menu-item "Unsigned Decimal" gdb-memory-format-unsigned
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2916 :button (:radio . (equal gdb-memory-format "u"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2917 (define-key gdb-memory-format-menu [signed]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2918 '(menu-item "Signed Decimal" gdb-memory-format-signed
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2919 :button (:radio . (equal gdb-memory-format "d"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2920 (define-key gdb-memory-format-menu [hexadecimal]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2921 '(menu-item "Hexadecimal" gdb-memory-format-hexadecimal
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2922 :button (:radio . (equal gdb-memory-format "x"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2923
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2924 (defun gdb-memory-format-menu (event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2925 (interactive "@e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2926 (x-popup-menu event gdb-memory-format-menu))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2927
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2928 (defun gdb-memory-format-menu-1 (event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2929 (interactive "e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2930 (save-selected-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2931 (select-window (posn-window (event-start event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2932 (let* ((selection (gdb-memory-format-menu event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2933 (binding (and selection (lookup-key gdb-memory-format-menu
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2934 (vector (car selection))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2935 (if binding (call-interactively binding)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2936
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2937 (defun gdb-memory-unit-giant ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2938 "Set the unit size to giant words (eight bytes)."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2939 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2940 (customize-set-variable 'gdb-memory-unit "g")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2941 (gdb-invalidate-memory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2942
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2943 (defun gdb-memory-unit-word ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2944 "Set the unit size to words (four bytes)."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2945 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2946 (customize-set-variable 'gdb-memory-unit "w")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2947 (gdb-invalidate-memory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2948
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2949 (defun gdb-memory-unit-halfword ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2950 "Set the unit size to halfwords (two bytes)."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2951 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2952 (customize-set-variable 'gdb-memory-unit "h")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2953 (gdb-invalidate-memory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2954
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2955 (defun gdb-memory-unit-byte ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2956 "Set the unit size to bytes."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2957 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2958 (customize-set-variable 'gdb-memory-unit "b")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2959 (gdb-invalidate-memory))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2960
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2961 (defvar gdb-memory-unit-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2962 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2963 (define-key map [header-line down-mouse-3] 'gdb-memory-unit-menu-1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2964 map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2965 "Keymap to select units in the header line.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2966
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2967 (defvar gdb-memory-unit-menu (make-sparse-keymap "Unit")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2968 "Menu of units in the header line.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2969
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2970 (define-key gdb-memory-unit-menu [giantwords]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2971 '(menu-item "Giant words" gdb-memory-unit-giant
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2972 :button (:radio . (equal gdb-memory-unit "g"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2973 (define-key gdb-memory-unit-menu [words]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2974 '(menu-item "Words" gdb-memory-unit-word
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2975 :button (:radio . (equal gdb-memory-unit "w"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2976 (define-key gdb-memory-unit-menu [halfwords]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2977 '(menu-item "Halfwords" gdb-memory-unit-halfword
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2978 :button (:radio . (equal gdb-memory-unit "h"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2979 (define-key gdb-memory-unit-menu [bytes]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2980 '(menu-item "Bytes" gdb-memory-unit-byte
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2981 :button (:radio . (equal gdb-memory-unit "b"))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2982
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2983 (defun gdb-memory-unit-menu (event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2984 (interactive "@e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2985 (x-popup-menu event gdb-memory-unit-menu))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2986
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2987 (defun gdb-memory-unit-menu-1 (event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2988 (interactive "e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2989 (save-selected-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2990 (select-window (posn-window (event-start event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2991 (let* ((selection (gdb-memory-unit-menu event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2992 (binding (and selection (lookup-key gdb-memory-unit-menu
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2993 (vector (car selection))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2994 (if binding (call-interactively binding)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2995
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2996 (defvar gdb-memory-font-lock-keywords
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2997 '(;; <__function.name+n>
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2998 ("<\\(\\(\\sw\\|[_.]\\)+\\)\\(\\+[0-9]+\\)?>" (1 font-lock-function-name-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2999 )
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3000 "Font lock keywords used in `gdb-memory-mode'.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3001
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3002 (defun gdb-memory-mode ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3003 "Major mode for examining memory.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3004
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3005 \\{gdb-memory-mode-map}"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3006 (kill-all-local-variables)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3007 (setq major-mode 'gdb-memory-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3008 (setq mode-name "Memory")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3009 (setq buffer-read-only t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3010 (buffer-disable-undo)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3011 (use-local-map gdb-memory-mode-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3012 (setq header-line-format
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3013 '(:eval
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3014 (concat
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3015 "Start address["
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3016 (propertize
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3017 "-"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3018 'face font-lock-warning-face
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3019 'help-echo "mouse-1: decrement address"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3020 'mouse-face 'mode-line-highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3021 'local-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3022 (gdb-make-header-line-mouse-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3023 'mouse-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3024 (lambda () (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3025 (let ((gdb-memory-address
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3026 ;; Let GDB do the arithmetic.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3027 (concat
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3028 gdb-memory-address " - "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3029 (number-to-string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3030 (* gdb-memory-repeat-count
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3031 (cond ((string= gdb-memory-unit "b") 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3032 ((string= gdb-memory-unit "h") 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3033 ((string= gdb-memory-unit "w") 4)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3034 ((string= gdb-memory-unit "g") 8)))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3035 (gdb-invalidate-memory)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3036 "|"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3037 (propertize "+"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3038 'face font-lock-warning-face
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3039 'help-echo "mouse-1: increment address"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3040 'mouse-face 'mode-line-highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3041 'local-map (gdb-make-header-line-mouse-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3042 'mouse-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3043 (lambda () (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3044 (let ((gdb-memory-address nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3045 (gdb-invalidate-memory)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3046 "]: "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3047 (propertize gdb-memory-address
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3048 'face font-lock-warning-face
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3049 'help-echo "mouse-1: set start address"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3050 'mouse-face 'mode-line-highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3051 'local-map (gdb-make-header-line-mouse-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3052 'mouse-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3053 #'gdb-memory-set-address))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3054 " Repeat Count: "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3055 (propertize (number-to-string gdb-memory-repeat-count)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3056 'face font-lock-warning-face
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3057 'help-echo "mouse-1: set repeat count"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3058 'mouse-face 'mode-line-highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3059 'local-map (gdb-make-header-line-mouse-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3060 'mouse-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3061 #'gdb-memory-set-repeat-count))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3062 " Display Format: "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3063 (propertize gdb-memory-format
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3064 'face font-lock-warning-face
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3065 'help-echo "mouse-3: select display format"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3066 'mouse-face 'mode-line-highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3067 'local-map gdb-memory-format-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3068 " Unit Size: "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3069 (propertize gdb-memory-unit
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3070 'face font-lock-warning-face
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3071 'help-echo "mouse-3: select unit size"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3072 'mouse-face 'mode-line-highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3073 'local-map gdb-memory-unit-map))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3074 (set (make-local-variable 'font-lock-defaults)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3075 '(gdb-memory-font-lock-keywords))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3076 (run-mode-hooks 'gdb-memory-mode-hook)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3077 'gdb-invalidate-memory)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3078
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3079 (defun gdb-memory-buffer-name ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3080 (with-current-buffer gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3081 (concat "*memory of " (gdb-get-target-string) "*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3082
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3083 (defun gdb-display-memory-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3084 "Display memory contents."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3085 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3086 (gdb-display-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3087 (gdb-get-buffer-create 'gdb-memory-buffer) t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3088
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3089 (defun gdb-frame-memory-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3090 "Display memory contents in a new frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3091 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3092 (let* ((special-display-regexps (append special-display-regexps '(".*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3093 (special-display-frame-alist
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3094 (cons '(left-fringe . 0)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3095 (cons '(right-fringe . 0)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3096 (cons '(width . 83) gdb-frame-parameters)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3097 (display-buffer (gdb-get-buffer-create 'gdb-memory-buffer))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3098
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3099
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3100 ;; Locals buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3101 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3102 (gdb-set-buffer-rules 'gdb-locals-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3103 'gdb-locals-buffer-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3104 'gdb-locals-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3105
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3106 (def-gdb-auto-update-trigger gdb-invalidate-locals
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3107 (gdb-get-buffer 'gdb-locals-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3108 "server info locals\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3109 gdb-info-locals-handler)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3110
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3111 (defvar gdb-locals-watch-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3112 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3113 (suppress-keymap map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3114 (define-key map "\r" (lambda () (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3115 (beginning-of-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3116 (gud-watch)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3117 (define-key map [mouse-2] (lambda (event) (interactive "e")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3118 (mouse-set-point event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3119 (beginning-of-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3120 (gud-watch)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3121 map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3122 "Keymap to create watch expression of a complex data type local variable.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3123
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3124 (defconst gdb-struct-string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3125 (concat (propertize "[struct/union]"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3126 'mouse-face 'highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3127 'help-echo "mouse-2: create watch expression"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3128 'local-map gdb-locals-watch-map) "\n"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3129
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3130 (defconst gdb-array-string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3131 (concat " " (propertize "[array]"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3132 'mouse-face 'highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3133 'help-echo "mouse-2: create watch expression"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3134 'local-map gdb-locals-watch-map) "\n"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3135
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3136 ;; Abbreviate for arrays and structures.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3137 ;; These can be expanded using gud-display.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3138 (defun gdb-info-locals-handler ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3139 (setq gdb-pending-triggers (delq 'gdb-invalidate-locals
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3140 gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3141 (let ((buf (gdb-get-buffer 'gdb-partial-output-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3142 (with-current-buffer buf
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3143 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3144 ;; Need this in case "set print pretty" is on.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3145 (while (re-search-forward "^[ }].*\n" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3146 (replace-match "" nil nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3147 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3148 (while (re-search-forward "{\\(.*=.*\n\\|\n\\)" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3149 (replace-match gdb-struct-string nil nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3150 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3151 (while (re-search-forward "\\s-*{[^.].*\n" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3152 (replace-match gdb-array-string nil nil))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3153 (let ((buf (gdb-get-buffer 'gdb-locals-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3154 (and buf
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3155 (with-current-buffer buf
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3156 (let* ((window (get-buffer-window buf 0))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3157 (start (window-start window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3158 (p (window-point window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3159 (buffer-read-only nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3160 (erase-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3161 (insert-buffer-substring (gdb-get-buffer-create
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3162 'gdb-partial-output-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3163 (set-window-start window start)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3164 (set-window-point window p)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3165 (run-hooks 'gdb-info-locals-hook))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3166
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3167 (defvar gdb-locals-mode-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3168 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3169 (suppress-keymap map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3170 (define-key map "q" 'kill-this-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3171 map))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3172
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3173 (defun gdb-locals-mode ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3174 "Major mode for gdb locals.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3175
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3176 \\{gdb-locals-mode-map}"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3177 (kill-all-local-variables)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3178 (setq major-mode 'gdb-locals-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3179 (setq mode-name (concat "Locals:" gdb-selected-frame))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3180 (use-local-map gdb-locals-mode-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3181 (setq buffer-read-only t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3182 (buffer-disable-undo)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3183 (setq header-line-format gdb-locals-header)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3184 (gdb-thread-identification)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3185 (set (make-local-variable 'font-lock-defaults)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3186 '(gdb-locals-font-lock-keywords))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3187 (run-mode-hooks 'gdb-locals-mode-hook)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3188 (if (and (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3189 (string-equal gdb-version "pre-6.4"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3190 'gdb-invalidate-locals
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3191 'gdb-invalidate-locals-1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3192
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3193 (defun gdb-locals-buffer-name ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3194 (with-current-buffer gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3195 (concat "*locals of " (gdb-get-target-string) "*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3196
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3197 (defun gdb-display-locals-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3198 "Display local variables of current stack and their values."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3199 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3200 (gdb-display-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3201 (gdb-get-buffer-create 'gdb-locals-buffer) t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3202
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3203 (defun gdb-frame-locals-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3204 "Display local variables of current stack and their values in a new frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3205 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3206 (let ((special-display-regexps (append special-display-regexps '(".*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3207 (special-display-frame-alist gdb-frame-parameters))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3208 (display-buffer (gdb-get-buffer-create 'gdb-locals-buffer))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3209
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3210
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3211 ;;;; Window management
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3212 (defun gdb-display-buffer (buf dedicated &optional frame)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3213 (let ((answer (get-buffer-window buf (or frame 0))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3214 (if answer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3215 (display-buffer buf nil (or frame 0)) ;Deiconify the frame if necessary.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3216 (let ((window (get-lru-window)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3217 (if (memq (buffer-local-value 'gud-minor-mode (window-buffer window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3218 '(gdba gdbmi))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3219 (let* ((largest (get-largest-window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3220 (cur-size (window-height largest)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3221 (setq answer (split-window largest))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3222 (set-window-buffer answer buf)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3223 (set-window-dedicated-p answer dedicated)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3224 answer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3225 (set-window-buffer window buf)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3226 window)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3227
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3228
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3229 ;;; Shared keymap initialization:
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3230
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3231 (let ((menu (make-sparse-keymap "GDB-Windows")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3232 (define-key gud-menu-map [displays]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3233 `(menu-item "GDB-Windows" ,menu
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3234 :help "Open a GDB-UI buffer in a new window."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3235 :visible (memq gud-minor-mode '(gdbmi gdba))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3236 (define-key menu [gdb] '("Gdb" . gdb-display-gdb-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3237 (define-key menu [threads] '("Threads" . gdb-display-threads-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3238 (define-key menu [inferior]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3239 '(menu-item "Separate IO" gdb-display-separate-io-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3240 :enable gdb-use-separate-io-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3241 (define-key menu [memory] '("Memory" . gdb-display-memory-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3242 (define-key menu [registers] '("Registers" . gdb-display-registers-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3243 (define-key menu [disassembly]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3244 '("Disassembly" . gdb-display-assembler-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3245 (define-key menu [breakpoints]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3246 '("Breakpoints" . gdb-display-breakpoints-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3247 (define-key menu [locals] '("Locals" . gdb-display-locals-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3248 (define-key menu [frames] '("Stack" . gdb-display-stack-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3249
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3250 (let ((menu (make-sparse-keymap "GDB-Frames")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3251 (define-key gud-menu-map [frames]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3252 `(menu-item "GDB-Frames" ,menu
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3253 :help "Open a GDB-UI buffer in a new frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3254 :visible (memq gud-minor-mode '(gdbmi gdba))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3255 (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3256 (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3257 (define-key menu [memory] '("Memory" . gdb-frame-memory-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3258 (define-key menu [inferior]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3259 '(menu-item "Separate IO" gdb-frame-separate-io-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3260 :enable gdb-use-separate-io-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3261 (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3262 (define-key menu [disassembly] '("Disassembly" . gdb-frame-assembler-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3263 (define-key menu [breakpoints]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3264 '("Breakpoints" . gdb-frame-breakpoints-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3265 (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3266 (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3267
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3268 (let ((menu (make-sparse-keymap "GDB-UI/MI")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3269 (define-key gud-menu-map [ui]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3270 `(menu-item (if (eq gud-minor-mode 'gdba) "GDB-UI" "GDB-MI")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3271 ,menu :visible (memq gud-minor-mode '(gdbmi gdba))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3272 (define-key menu [gdb-customize]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3273 '(menu-item "Customize" (lambda () (interactive) (customize-group 'gdb))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3274 :help "Customize Gdb Graphical Mode options."))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3275 (define-key menu [gdb-find-source-frame]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3276 '(menu-item "Look For Source Frame" gdb-find-source-frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3277 :visible (eq gud-minor-mode 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3278 :help "Toggle looking for source frame further up call stack."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3279 :button (:toggle . gdb-find-source-frame)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3280 (define-key menu [gdb-use-separate-io]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3281 '(menu-item "Separate IO" gdb-use-separate-io-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3282 :visible (eq gud-minor-mode 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3283 :help "Toggle separate IO for debugged program."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3284 :button (:toggle . gdb-use-separate-io-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3285 (define-key menu [gdb-many-windows]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3286 '(menu-item "Display Other Windows" gdb-many-windows
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
3287 :help "Toggle display of locals, stack and breakpoint information."
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3288 :button (:toggle . gdb-many-windows)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3289 (define-key menu [gdb-restore-windows]
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3290 '(menu-item "Restore Window Layout" gdb-restore-windows
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3291 :help "Restore standard layout for debug session.")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3292
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3293 (defun gdb-frame-gdb-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3294 "Display GUD buffer in a new frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3295 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3296 (let ((special-display-regexps (append special-display-regexps '(".*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3297 (special-display-frame-alist
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3298 (remove '(menu-bar-lines) (remove '(tool-bar-lines)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3299 gdb-frame-parameters)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3300 (same-window-regexps nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3301 (display-buffer gud-comint-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3302
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3303 (defun gdb-display-gdb-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3304 "Display GUD buffer."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3305 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3306 (let ((same-window-regexps nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3307 (select-window (display-buffer gud-comint-buffer nil 0))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3308
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3309 (defun gdb-set-window-buffer (name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3310 (set-window-buffer (selected-window) (get-buffer name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3311 (set-window-dedicated-p (selected-window) t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3312
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3313 (defun gdb-setup-windows ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3314 "Layout the window pattern for `gdb-many-windows'."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3315 (gdb-display-locals-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3316 (gdb-display-stack-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3317 (delete-other-windows)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3318 (gdb-display-breakpoints-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3319 (delete-other-windows)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3320 ; Don't dedicate.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3321 (pop-to-buffer gud-comint-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3322 (split-window nil ( / ( * (window-height) 3) 4))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3323 (split-window nil ( / (window-height) 3))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3324 (split-window-horizontally)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3325 (other-window 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3326 (gdb-set-window-buffer (gdb-locals-buffer-name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3327 (other-window 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3328 (switch-to-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3329 (if gud-last-last-frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3330 (gud-find-file (car gud-last-last-frame))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3331 (if gdb-main-file
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3332 (gud-find-file gdb-main-file)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3333 ;; Put buffer list in window if we
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3334 ;; can't find a source file.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3335 (list-buffers-noselect))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3336 (setq gdb-source-window (selected-window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3337 (when gdb-use-separate-io-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3338 (split-window-horizontally)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3339 (other-window 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3340 (gdb-set-window-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3341 (gdb-get-buffer-create 'gdb-inferior-io)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3342 (other-window 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3343 (gdb-set-window-buffer (gdb-stack-buffer-name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3344 (split-window-horizontally)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3345 (other-window 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3346 (gdb-set-window-buffer (gdb-breakpoints-buffer-name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3347 (other-window 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3348
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3349 (defun gdb-restore-windows ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3350 "Restore the basic arrangement of windows used by gdba.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3351 This arrangement depends on the value of `gdb-many-windows'."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3352 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3353 (pop-to-buffer gud-comint-buffer) ;Select the right window and frame.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3354 (delete-other-windows)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3355 (if gdb-many-windows
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3356 (gdb-setup-windows)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3357 (when (or gud-last-last-frame gdb-show-main)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3358 (split-window)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3359 (other-window 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3360 (switch-to-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3361 (if gud-last-last-frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3362 (gud-find-file (car gud-last-last-frame))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3363 (gud-find-file gdb-main-file)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3364 (setq gdb-source-window (selected-window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3365 (other-window 1))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3366
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3367 (defun gdb-reset ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3368 "Exit a debugging session cleanly.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3369 Kills the gdb buffers, and resets variables and the source buffers."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3370 (dolist (buffer (buffer-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3371 (unless (eq buffer gud-comint-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3372 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3373 (if (memq gud-minor-mode '(gdbmi gdba))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3374 (if (string-match "\\` ?\\*.+\\*\\'" (buffer-name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3375 (kill-buffer nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3376 (gdb-remove-breakpoint-icons (point-min) (point-max) t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3377 (setq gud-minor-mode nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3378 (kill-local-variable 'tool-bar-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3379 (kill-local-variable 'gdb-define-alist))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3380 (setq gdb-overlay-arrow-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3381 (setq overlay-arrow-variable-list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3382 (delq 'gdb-overlay-arrow-position overlay-arrow-variable-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3383 (setq fringe-indicator-alist '((overlay-arrow . right-triangle)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3384 (setq gdb-stack-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3385 (setq overlay-arrow-variable-list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3386 (delq 'gdb-stack-position overlay-arrow-variable-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3387 (if (boundp 'speedbar-frame) (speedbar-timer-fn))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3388 (setq gud-running nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3389 (setq gdb-active-process nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3390 (setq gdb-var-list nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3391 (remove-hook 'after-save-hook 'gdb-create-define-alist t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3392
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3393 (defun gdb-source-info ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3394 "Find the source file where the program starts and display it with related
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3395 buffers."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3396 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3397 (if (and (search-forward "Located in " nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3398 (looking-at "\\S-+"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3399 (setq gdb-main-file (match-string 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3400 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3401 (if (search-forward "Includes preprocessor macro info." nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3402 (setq gdb-macro-info t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3403 (if gdb-many-windows
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3404 (gdb-setup-windows)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3405 (gdb-get-buffer-create 'gdb-breakpoints-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3406 (if (and gdb-show-main gdb-main-file)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3407 (let ((pop-up-windows t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3408 (display-buffer (gud-find-file gdb-main-file)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3409 (setq gdb-ready t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3410
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3411 (defun gdb-get-location (bptno line flag)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3412 "Find the directory containing the relevant source file.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3413 Put in buffer and place breakpoint icon."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3414 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3415 (catch 'file-not-found
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3416 (if (search-forward "Located in " nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3417 (when (looking-at "\\S-+")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3418 (delete (cons bptno "File not found") gdb-location-alist)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3419 (push (cons bptno (match-string 0)) gdb-location-alist))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3420 (gdb-resync)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3421 (unless (assoc bptno gdb-location-alist)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3422 (push (cons bptno "File not found") gdb-location-alist)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3423 (message-box "Cannot find source file for breakpoint location.\n\
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3424 Add directory to search path for source files using the GDB command, dir."))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3425 (throw 'file-not-found nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3426 (with-current-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3427 (find-file-noselect (match-string 0))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3428 (gdb-init-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3429 ;; only want one breakpoint icon at each location
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3430 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3431 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3432 (forward-line (1- (string-to-number line)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3433 (gdb-put-breakpoint-icon (eq flag ?y) bptno)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3434
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3435 (add-hook 'find-file-hook 'gdb-find-file-hook)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3436
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3437 (defun gdb-find-file-hook ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3438 "Set up buffer for debugging if file is part of the source code
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3439 of the current session."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3440 (if (and (buffer-name gud-comint-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3441 ;; in case gud or gdb-ui is just loaded
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3442 gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3443 (memq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3444 '(gdba gdbmi)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3445 ;;Pre GDB 6.3 "info sources" doesn't give absolute file name.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3446 (if (member (if (string-equal gdb-version "pre-6.4")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3447 (file-name-nondirectory buffer-file-name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3448 buffer-file-name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3449 gdb-source-file-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3450 (with-current-buffer (find-buffer-visiting buffer-file-name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3451 (gdb-init-buffer)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3452
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3453 ;;from put-image
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3454 (defun gdb-put-string (putstring pos &optional dprop &rest sprops)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3455 "Put string PUTSTRING in front of POS in the current buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3456 PUTSTRING is displayed by putting an overlay into the current buffer with a
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3457 `before-string' string that has a `display' property whose value is
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3458 PUTSTRING."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3459 (let ((string (make-string 1 ?x))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3460 (buffer (current-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3461 (setq putstring (copy-sequence putstring))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3462 (let ((overlay (make-overlay pos pos buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3463 (prop (or dprop
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3464 (list (list 'margin 'left-margin) putstring))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3465 (put-text-property 0 1 'display prop string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3466 (if sprops
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3467 (add-text-properties 0 1 sprops string))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3468 (overlay-put overlay 'put-break t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3469 (overlay-put overlay 'before-string string))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3470
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3471 ;;from remove-images
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3472 (defun gdb-remove-strings (start end &optional buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3473 "Remove strings between START and END in BUFFER.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3474 Remove only strings that were put in BUFFER with calls to `gdb-put-string'.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3475 BUFFER nil or omitted means use the current buffer."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3476 (unless buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3477 (setq buffer (current-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3478 (dolist (overlay (overlays-in start end))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3479 (when (overlay-get overlay 'put-break)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3480 (delete-overlay overlay))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3481
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3482 (defun gdb-put-breakpoint-icon (enabled bptno)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3483 (if (string-match "[0-9+]+\\." bptno)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3484 (setq enabled gdb-parent-bptno-enabled))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3485 (let ((start (- (line-beginning-position) 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3486 (end (+ (line-end-position) 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3487 (putstring (if enabled "B" "b"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3488 (source-window (get-buffer-window (current-buffer) 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3489 (add-text-properties
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3490 0 1 '(help-echo "mouse-1: clear bkpt, mouse-3: enable/disable bkpt")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3491 putstring)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3492 (if enabled
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3493 (add-text-properties
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3494 0 1 `(gdb-bptno ,bptno gdb-enabled t) putstring)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3495 (add-text-properties
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3496 0 1 `(gdb-bptno ,bptno gdb-enabled nil) putstring))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3497 (gdb-remove-breakpoint-icons start end)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3498 (if (display-images-p)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3499 (if (>= (or left-fringe-width
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3500 (if source-window (car (window-fringes source-window)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3501 gdb-buffer-fringe-width) 8)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3502 (gdb-put-string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3503 nil (1+ start)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3504 `(left-fringe breakpoint
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3505 ,(if enabled
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3506 'breakpoint-enabled
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3507 'breakpoint-disabled))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3508 'gdb-bptno bptno
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3509 'gdb-enabled enabled)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3510 (when (< left-margin-width 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3511 (save-current-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3512 (setq left-margin-width 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3513 (if source-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3514 (set-window-margins
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3515 source-window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3516 left-margin-width right-margin-width))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3517 (put-image
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3518 (if enabled
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3519 (or breakpoint-enabled-icon
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3520 (setq breakpoint-enabled-icon
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3521 (find-image `((:type xpm :data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3522 ,breakpoint-xpm-data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3523 :ascent 100 :pointer hand)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3524 (:type pbm :data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3525 ,breakpoint-enabled-pbm-data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3526 :ascent 100 :pointer hand)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3527 (or breakpoint-disabled-icon
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3528 (setq breakpoint-disabled-icon
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3529 (find-image `((:type xpm :data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3530 ,breakpoint-xpm-data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3531 :conversion disabled
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3532 :ascent 100 :pointer hand)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3533 (:type pbm :data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3534 ,breakpoint-disabled-pbm-data
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3535 :ascent 100 :pointer hand))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3536 (+ start 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3537 putstring
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3538 'left-margin))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3539 (when (< left-margin-width 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3540 (save-current-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3541 (setq left-margin-width 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3542 (let ((window (get-buffer-window (current-buffer) 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3543 (if window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3544 (set-window-margins
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3545 window left-margin-width right-margin-width)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3546 (gdb-put-string
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3547 (propertize putstring
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3548 'face (if enabled 'breakpoint-enabled 'breakpoint-disabled))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3549 (1+ start)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3550
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3551 (defun gdb-remove-breakpoint-icons (start end &optional remove-margin)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3552 (gdb-remove-strings start end)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3553 (if (display-images-p)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3554 (remove-images start end))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3555 (when remove-margin
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3556 (setq left-margin-width 0)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3557 (let ((window (get-buffer-window (current-buffer) 0)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3558 (if window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3559 (set-window-margins
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3560 window left-margin-width right-margin-width)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3561
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3562
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3563 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3564 ;; Assembler buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3565 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3566 (gdb-set-buffer-rules 'gdb-assembler-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3567 'gdb-assembler-buffer-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3568 'gdb-assembler-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3569
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3570 ;; We can't use def-gdb-auto-update-handler because we don't want to use
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3571 ;; window-start but keep the overlay arrow/current line visible.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3572 (defun gdb-assembler-handler ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3573 (setq gdb-pending-triggers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3574 (delq 'gdb-invalidate-assembler
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3575 gdb-pending-triggers))
107196
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3576 (let ((buf (gdb-get-buffer 'gdb-partial-output-buffer)))
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3577 (with-current-buffer buf
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3578 (goto-char (point-min))
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3579 ;; The disassemble command in GDB 7.1 onwards displays an overlay arrow.
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3580 (while (re-search-forward "\\(^ 0x\\|=> 0x\\)" nil t)
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3581 (replace-match "0x" nil nil))))
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3582 (let ((buf (gdb-get-buffer 'gdb-assembler-buffer)))
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3583 (and buf
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3584 (with-current-buffer buf
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3585 (let* ((window (get-buffer-window buf 0))
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3586 (p (window-point window))
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3587 (buffer-read-only nil))
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3588 (erase-buffer)
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3589 (insert-buffer-substring (gdb-get-buffer-create
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3590 'gdb-partial-output-buffer))
107196
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3591 (set-window-point window p)))))
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3592 ;; put customisation here
19bad34b0d81 Accommodate change of disassemble output in GDB 7.1.
Nick Roberts <nickrob@snap.net.nz>
parents: 106840
diff changeset
3593 (gdb-assembler-custom))
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3594
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3595 (defun gdb-assembler-custom ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3596 (let ((buffer (gdb-get-buffer 'gdb-assembler-buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3597 (pos 1) (address) (flag) (bptno))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3598 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3599 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3600 (if (not (equal gdb-pc-address "main"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3601 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3602 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3603 (if (and gdb-pc-address
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3604 (search-forward gdb-pc-address nil t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3605 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3606 (setq pos (point))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3607 (beginning-of-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3608 (setq fringe-indicator-alist
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3609 (if (string-equal gdb-frame-number "0")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3610 nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3611 '((overlay-arrow . hollow-right-triangle))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3612 (or gdb-overlay-arrow-position
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3613 (setq gdb-overlay-arrow-position (make-marker)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3614 (set-marker gdb-overlay-arrow-position (point))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3615 ;; remove all breakpoint-icons in assembler buffer before updating.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3616 (gdb-remove-breakpoint-icons (point-min) (point-max))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3617 (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3618 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3619 (while (< (point) (- (point-max) 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3620 (forward-line 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3621 (when (looking-at
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3622 "\\([0-9]+\\.?[0-9]*\\).*?\\s-+\\(.\\)\\s-+0x0*\\(\\S-+\\)")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3623 (setq bptno (match-string 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3624 (setq flag (char-after (match-beginning 2)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3625 (setq address (match-string 3))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3626 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3627 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3628 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3629 (if (re-search-forward (concat "^0x0*" address) nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3630 (gdb-put-breakpoint-icon (eq flag ?y) bptno)))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3631 (if (not (equal gdb-pc-address "main"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3632 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3633 (set-window-point (get-buffer-window buffer 0) pos)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3634
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3635 (defvar gdb-assembler-mode-map
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3636 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3637 (suppress-keymap map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3638 (define-key map "q" 'kill-this-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3639 map))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3640
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3641 (defvar gdb-assembler-font-lock-keywords
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3642 '(;; <__function.name+n>
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3643 ("<\\(\\(\\sw\\|[_.]\\)+\\)\\(\\+[0-9]+\\)?>"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3644 (1 font-lock-function-name-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3645 ;; 0xNNNNNNNN <__function.name+n>: opcode
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3646 ("^0x[0-9a-f]+ \\(<\\(\\(\\sw\\|[_.]\\)+\\)\\+[0-9]+>\\)?:[ \t]+\\(\\sw+\\)"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3647 (4 font-lock-keyword-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3648 ;; %register(at least i386)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3649 ("%\\sw+" . font-lock-variable-name-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3650 ("^\\(Dump of assembler code for function\\) \\(.+\\):"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3651 (1 font-lock-comment-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3652 (2 font-lock-function-name-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3653 ("^\\(End of assembler dump\\.\\)" . font-lock-comment-face))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3654 "Font lock keywords used in `gdb-assembler-mode'.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3655
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3656 (defun gdb-assembler-mode ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3657 "Major mode for viewing code assembler.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3658
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3659 \\{gdb-assembler-mode-map}"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3660 (kill-all-local-variables)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3661 (setq major-mode 'gdb-assembler-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3662 (setq mode-name (concat "Machine:" gdb-selected-frame))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3663 (setq gdb-overlay-arrow-position nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3664 (add-to-list 'overlay-arrow-variable-list 'gdb-overlay-arrow-position)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3665 (setq fringes-outside-margins t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3666 (setq buffer-read-only t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3667 (buffer-disable-undo)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3668 (gdb-thread-identification)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3669 (use-local-map gdb-assembler-mode-map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3670 (gdb-invalidate-assembler)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3671 (set (make-local-variable 'font-lock-defaults)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3672 '(gdb-assembler-font-lock-keywords))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3673 (run-mode-hooks 'gdb-assembler-mode-hook)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3674 'gdb-invalidate-assembler)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3675
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3676 (defun gdb-assembler-buffer-name ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3677 (with-current-buffer gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3678 (concat "*disassembly of " (gdb-get-target-string) "*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3679
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3680 (defun gdb-display-assembler-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3681 "Display disassembly view."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3682 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3683 (setq gdb-previous-frame nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3684 (gdb-display-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3685 (gdb-get-buffer-create 'gdb-assembler-buffer) t))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3686
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3687 (defun gdb-frame-assembler-buffer ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3688 "Display disassembly view in a new frame."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3689 (interactive)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3690 (setq gdb-previous-frame nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3691 (let ((special-display-regexps (append special-display-regexps '(".*")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3692 (special-display-frame-alist gdb-frame-parameters))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3693 (display-buffer (gdb-get-buffer-create 'gdb-assembler-buffer))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3694
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3695 ;; modified because if gdb-pc-address has changed value a new command
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3696 ;; must be enqueued to update the buffer with the new output
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3697 (defun gdb-invalidate-assembler (&optional ignored)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3698 (if (gdb-get-buffer 'gdb-assembler-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3699 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3700 (unless (and gdb-selected-frame
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3701 (string-equal gdb-selected-frame gdb-previous-frame))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3702 (if (or (not (member 'gdb-invalidate-assembler
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3703 gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3704 (not (equal (string-to-number gdb-pc-address)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3705 (string-to-number
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3706 gdb-previous-frame-pc-address))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3707 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3708 ;; take previous disassemble command, if any, off the queue
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3709 (with-current-buffer gud-comint-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3710 (let ((queue gdb-input-queue))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3711 (dolist (item queue)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3712 (if (equal (cdr item) '(gdb-assembler-handler))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3713 (setq gdb-input-queue
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3714 (delete item gdb-input-queue))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3715 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3716 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3717 (concat gdb-server-prefix "disassemble " gdb-pc-address "\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3718 'gdb-assembler-handler))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3719 (push 'gdb-invalidate-assembler gdb-pending-triggers)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3720 (setq gdb-previous-frame-pc-address gdb-pc-address)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3721 (setq gdb-previous-frame gdb-selected-frame)))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3722
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3723 (defun gdb-get-selected-frame ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3724 (if (not (member 'gdb-get-selected-frame gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3725 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3726 (if (string-equal gdb-version "pre-6.4")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3727 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3728 (list (concat gdb-server-prefix "info frame\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3729 'gdb-frame-handler))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3730 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3731 (list "server interpreter mi -stack-info-frame\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3732 'gdb-frame-handler-1)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3733 (push 'gdb-get-selected-frame gdb-pending-triggers))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3734
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3735 (defun gdb-frame-handler ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3736 (setq gdb-pending-triggers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3737 (delq 'gdb-get-selected-frame gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3738 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3739 (when (re-search-forward
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3740 "Stack level \\([0-9]+\\), frame at \\(0x[[:xdigit:]]+\\)" nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3741 (setq gdb-frame-number (match-string 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3742 (setq gdb-frame-address (match-string 2)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3743 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3744 (when (re-search-forward ".*=\\s-+\\(\\S-*\\)\\s-+in\\s-+\\(.*?\\)\
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3745 \\(?: (\\(\\S-+?\\):[0-9]+?)\\)*; "
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3746 nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3747 (setq gdb-selected-frame (match-string 2))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3748 (if (gdb-get-buffer 'gdb-locals-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3749 (with-current-buffer (gdb-get-buffer 'gdb-locals-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3750 (setq mode-name (concat "Locals:" gdb-selected-frame))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3751 (if (gdb-get-buffer 'gdb-assembler-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3752 (with-current-buffer (gdb-get-buffer 'gdb-assembler-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3753 (setq mode-name (concat "Machine:" gdb-selected-frame))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3754 (setq gdb-pc-address (match-string 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3755 (if (and (match-string 3) gud-overlay-arrow-position)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3756 (let ((buffer (marker-buffer gud-overlay-arrow-position))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3757 (position (marker-position gud-overlay-arrow-position)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3758 (when (and buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3759 (string-equal (file-name-nondirectory
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3760 (buffer-file-name buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3761 (file-name-nondirectory (match-string 3))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3762 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3763 (setq fringe-indicator-alist
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3764 (if (string-equal gdb-frame-number "0")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3765 nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3766 '((overlay-arrow . hollow-right-triangle))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3767 (set-marker gud-overlay-arrow-position position))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3768 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3769 (if (re-search-forward " source language \\(\\S-+\\)\." nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3770 (setq gdb-current-language (match-string 1)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3771 (gdb-invalidate-assembler))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3772
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3773
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3774 ;; Code specific to GDB 6.4
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3775 (defconst gdb-source-file-regexp-1 "fullname=\"\\(.*?\\)\"")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3776
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3777 (defun gdb-set-gud-minor-mode-existing-buffers-1 ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3778 "Create list of source files for current GDB session.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3779 If buffers already exist for any of these files, `gud-minor-mode'
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3780 is set in them."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3781 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3782 (while (re-search-forward gdb-source-file-regexp-1 nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3783 (push (match-string 1) gdb-source-file-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3784 (dolist (buffer (buffer-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3785 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3786 (when (member buffer-file-name gdb-source-file-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3787 (gdb-init-buffer))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3788 (gdb-force-mode-line-update
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3789 (propertize "ready" 'face font-lock-variable-name-face)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3790
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3791 ;; Used for -stack-info-frame but could be used for -stack-list-frames too.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3792 (defconst gdb-stack-list-frames-regexp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3793 ".*?level=\"\\(.*?\\)\".*?,addr=\"\\(.*?\\)\".*?,func=\"\\(.*?\\)\",\
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3794 \\(?:.*?file=\".*?\".*?,fullname=\"\\(.*?\\)\".*?,line=\"\\(.*?\\)\".*?}\\|\
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3795 from=\"\\(.*?\\)\"\\)")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3796
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3797 (defun gdb-frame-handler-1 ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3798 (setq gdb-pending-triggers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3799 (delq 'gdb-get-selected-frame gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3800 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3801 (when (re-search-forward gdb-stack-list-frames-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3802 (setq gdb-frame-number (match-string 1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3803 (setq gdb-pc-address (match-string 2))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3804 (setq gdb-selected-frame (match-string 3))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3805 (if (gdb-get-buffer 'gdb-locals-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3806 (with-current-buffer (gdb-get-buffer 'gdb-locals-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3807 (setq mode-name (concat "Locals:" gdb-selected-frame))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3808 (if (gdb-get-buffer 'gdb-assembler-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3809 (with-current-buffer (gdb-get-buffer 'gdb-assembler-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3810 (setq mode-name (concat "Machine:" gdb-selected-frame)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3811 (if (and (match-string 4) (match-string 5) gud-overlay-arrow-position)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3812 (let ((buffer (marker-buffer gud-overlay-arrow-position))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3813 (position (marker-position gud-overlay-arrow-position)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3814 (when (and buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3815 (string-equal (file-name-nondirectory
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3816 (buffer-file-name buffer))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3817 (file-name-nondirectory (match-string 4))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3818 (with-current-buffer buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3819 (setq fringe-indicator-alist
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3820 (if (string-equal gdb-frame-number "0")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3821 nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3822 '((overlay-arrow . hollow-right-triangle))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3823 (set-marker gud-overlay-arrow-position position)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3824 (gdb-invalidate-assembler))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3825
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3826 ; Uses "-var-list-children --all-values". Needs GDB 6.4 onwards.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3827 (defun gdb-var-list-children-1 (varnum)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3828 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3829 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3830 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3831 (concat "server interpreter mi \"-var-list-children --all-values \\\""
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3832 varnum "\\\"\"\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3833 (concat "-var-list-children --all-values \"" varnum "\"\n"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3834 `(lambda () (gdb-var-list-children-handler-1 ,varnum)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3835
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3836 (defun gdb-var-list-children-handler-1 (varnum)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3837 (let* ((var-list nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3838 (output (bindat-get-field (gdb-json-partial-output "child")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3839 (children (bindat-get-field output 'children)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3840 (catch 'child-already-watched
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3841 (dolist (var gdb-var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3842 (if (string-equal varnum (car var))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3843 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3844 ;; With dynamic varobjs numchild may have increased.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3845 (setcar (nthcdr 2 var) (bindat-get-field output 'numchild))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3846 (push var var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3847 (dolist (child children)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3848 (let ((varchild (list (bindat-get-field child 'name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3849 (bindat-get-field child 'exp)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3850 (bindat-get-field child 'numchild)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3851 (bindat-get-field child 'type)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3852 (bindat-get-field child 'value)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3853 nil
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3854 (bindat-get-field child 'has_more))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3855 (if (assoc (car varchild) gdb-var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3856 (throw 'child-already-watched nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3857 (push varchild var-list))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3858 (push var var-list)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3859 (setq gdb-var-list (nreverse var-list))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3860 (gdb-speedbar-update))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3861
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3862 ; Uses "-var-update --all-values". Needs GDB 6.4 onwards.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3863 (defun gdb-var-update-1 ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3864 (if (not (member 'gdb-var-update gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3865 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3866 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3867 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3868 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3869 "server interpreter mi \"-var-update --all-values *\"\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3870 "-var-update --all-values *\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3871 'gdb-var-update-handler-1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3872 (push 'gdb-var-update gdb-pending-triggers))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3873
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3874 (defun gdb-var-update-handler-1 ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3875 (let ((changelist (bindat-get-field (gdb-json-partial-output) 'changelist)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3876 (dolist (var gdb-var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3877 (setcar (nthcdr 5 var) nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3878 (let ((temp-var-list gdb-var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3879 (dolist (change changelist)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3880 (let* ((varnum (bindat-get-field change 'name))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3881 (var (assoc varnum gdb-var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3882 (new-num (bindat-get-field change 'new_num_children)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3883 (when var
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3884 (let ((scope (bindat-get-field change 'in_scope))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3885 (has-more (bindat-get-field change 'has_more)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3886 (cond ((string-equal scope "false")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3887 (if gdb-delete-out-of-scope
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3888 (gdb-var-delete-1 var varnum)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3889 (setcar (nthcdr 5 var) 'out-of-scope)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3890 ((string-equal scope "true")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3891 (setcar (nthcdr 6 var) has-more)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3892 (when (and (or (not has-more)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3893 (string-equal has-more "0"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3894 (not new-num)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3895 (string-equal (nth 2 var) "0"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3896 (setcar (nthcdr 4 var)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3897 (bindat-get-field change 'value))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3898 (setcar (nthcdr 5 var) 'changed)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3899 ((string-equal scope "invalid")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3900 (gdb-var-delete-1 var varnum)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3901 (let ((var-list nil) var1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3902 (children (bindat-get-field change 'new_children)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3903 (if new-num
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3904 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3905 (setq var1 (pop temp-var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3906 (while var1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3907 (if (string-equal varnum (car var1))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3908 (let ((new (string-to-number new-num))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3909 (previous (string-to-number (nth 2 var1))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3910 (setcar (nthcdr 2 var1) new-num)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3911 (push var1 var-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3912 (cond ((> new previous)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3913 ;; Add new children to list.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3914 (dotimes (dummy previous)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3915 (push (pop temp-var-list) var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3916 (dolist (child children)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3917 (let ((varchild
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3918 (list (bindat-get-field child 'name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3919 (bindat-get-field child 'exp)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3920 (bindat-get-field child 'numchild)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3921 (bindat-get-field child 'type)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3922 (bindat-get-field child 'value)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3923 'changed
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3924 (bindat-get-field child 'has_more))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3925 (push varchild var-list))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3926 ;; Remove deleted children from list.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3927 ((< new previous)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3928 (dotimes (dummy new)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3929 (push (pop temp-var-list) var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3930 (dotimes (dummy (- previous new))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3931 (pop temp-var-list)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3932 (push var1 var-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3933 (setq var1 (pop temp-var-list)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3934 (setq gdb-var-list (nreverse var-list)))))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3935 (setq gdb-pending-triggers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3936 (delq 'gdb-var-update gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3937 (gdb-speedbar-update))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3938
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3939 ;; Registers buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3940 ;;
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3941 (gdb-set-buffer-rules 'gdb-registers-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3942 'gdb-registers-buffer-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3943 'gdb-registers-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3944
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3945 (def-gdb-auto-update-trigger gdb-invalidate-registers-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3946 (gdb-get-buffer 'gdb-registers-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3947 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3948 "server interpreter mi \"-data-list-register-values x\"\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3949 "-data-list-register-values x\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3950 gdb-data-list-register-values-handler)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3951
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3952 (defconst gdb-data-list-register-values-regexp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3953 "{.*?number=\"\\(.*?\\)\".*?,value=\"\\(.*?\\)\".*?}")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3954
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3955 (defun gdb-data-list-register-values-handler ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3956 (setq gdb-pending-triggers (delq 'gdb-invalidate-registers-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3957 gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3958 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3959 (if (re-search-forward gdb-error-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3960 (let ((err (match-string 1)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3961 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3962 (let ((buffer-read-only nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3963 (erase-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3964 (put-text-property 0 (length err) 'face font-lock-warning-face err)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3965 (insert err)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3966 (goto-char (point-min)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3967 (let ((register-list (reverse gdb-register-names))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3968 (register nil) (register-string nil) (register-values nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3969 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3970 (while (re-search-forward gdb-data-list-register-values-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3971 (setq register (pop register-list))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3972 (setq register-string (concat register "\t" (match-string 2) "\n"))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3973 (if (member (match-string 1) gdb-changed-registers)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3974 (put-text-property 0 (length register-string)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3975 'face 'font-lock-warning-face
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3976 register-string))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3977 (setq register-values
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3978 (concat register-values register-string)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3979 (let ((buf (gdb-get-buffer 'gdb-registers-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3980 (with-current-buffer buf
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3981 (let* ((window (get-buffer-window buf 0))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3982 (start (window-start window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3983 (p (if window (window-point window) (point)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3984 (buffer-read-only nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3985 (erase-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3986 (insert register-values)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3987 (if window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3988 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3989 (set-window-start window start)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3990 (set-window-point window p))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3991 (goto-char p)))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3992 (gdb-data-list-register-values-custom))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3993
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3994 (defun gdb-data-list-register-values-custom ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3995 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3996 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3997 (let ((buffer-read-only nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3998 start end)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3999 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4000 (while (< (point) (point-max))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4001 (setq start (line-beginning-position))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4002 (setq end (line-end-position))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4003 (when (looking-at "^[^\t]+")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4004 (unless (string-equal (match-string 0) "No registers.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4005 (put-text-property start (match-end 0)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4006 'face font-lock-variable-name-face)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4007 (add-text-properties start end
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4008 '(help-echo "mouse-2: edit value"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4009 mouse-face highlight))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4010 (forward-line 1))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4011
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4012 ;; Needs GDB 6.4 onwards (used to fail with no stack).
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4013 (defun gdb-get-changed-registers ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4014 (if (and (gdb-get-buffer 'gdb-registers-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4015 (not (member 'gdb-get-changed-registers gdb-pending-triggers)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4016 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4017 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4018 (list
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4019 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4020 "server interpreter mi -data-list-changed-registers\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4021 "-data-list-changed-registers\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4022 'gdb-get-changed-registers-handler))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4023 (push 'gdb-get-changed-registers gdb-pending-triggers))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4024
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4025 (defconst gdb-data-list-register-names-regexp "\"\\(.*?\\)\"")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4026
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4027 (defun gdb-get-changed-registers-handler ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4028 (setq gdb-pending-triggers
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4029 (delq 'gdb-get-changed-registers gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4030 (setq gdb-changed-registers nil)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4031 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4032 (while (re-search-forward gdb-data-list-register-names-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4033 (push (match-string 1) gdb-changed-registers)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4034
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4035
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4036 ;; Locals buffer.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4037 ;;
106697
ac408704629c lisp/*: Fix typos in docstrings and messages.
Juanma Barranquero <lekktu@gmail.com>
parents: 106680
diff changeset
4038 ;; uses "-stack-list-locals --simple-values". Needs GDB 6.1 onwards.
106678
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4039 (gdb-set-buffer-rules 'gdb-locals-buffer
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4040 'gdb-locals-buffer-name
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4041 'gdb-locals-mode)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4042
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4043 (def-gdb-auto-update-trigger gdb-invalidate-locals-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4044 (gdb-get-buffer 'gdb-locals-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4045 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4046 "server interpreter mi -\"stack-list-locals --simple-values\"\n"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4047 "-stack-list-locals --simple-values\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4048 gdb-stack-list-locals-handler)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4049
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4050 (defconst gdb-stack-list-locals-regexp
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4051 "{.*?name=\"\\(.*?\\)\".*?,type=\"\\(.*?\\)\"")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4052
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4053 (defvar gdb-locals-watch-map-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4054 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4055 (suppress-keymap map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4056 (define-key map "\r" 'gud-watch)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4057 (define-key map [mouse-2] 'gud-watch)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4058 map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4059 "Keymap to create watch expression of a complex data type local variable.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4060
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4061 (defvar gdb-edit-locals-map-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4062 (let ((map (make-sparse-keymap)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4063 (suppress-keymap map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4064 (define-key map "\r" 'gdb-edit-locals-value)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4065 (define-key map [mouse-2] 'gdb-edit-locals-value)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4066 map)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4067 "Keymap to edit value of a simple data type local variable.")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4068
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4069 (defun gdb-edit-locals-value (&optional event)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4070 "Assign a value to a variable displayed in the locals buffer."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4071 (interactive (list last-input-event))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4072 (save-excursion
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4073 (if event (posn-set-point (event-end event)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4074 (beginning-of-line)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4075 (let* ((var (current-word))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4076 (value (read-string (format "New value (%s): " var))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4077 (gdb-enqueue-input
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4078 (list (concat gdb-server-prefix "set variable " var " = " value "\n")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4079 'ignore)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4080
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4081 ;; Dont display values of arrays or structures.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4082 ;; These can be expanded using gud-watch.
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4083 (defun gdb-stack-list-locals-handler ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4084 (setq gdb-pending-triggers (delq 'gdb-invalidate-locals-1
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4085 gdb-pending-triggers))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4086 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4087 (if (re-search-forward gdb-error-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4088 (let ((err (match-string 1)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4089 (with-current-buffer (gdb-get-buffer 'gdb-locals-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4090 (let ((buffer-read-only nil))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4091 (erase-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4092 (insert err)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4093 (goto-char (point-min)))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4094 (let (local locals-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4095 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4096 (while (re-search-forward gdb-stack-list-locals-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4097 (let ((local (list (match-string 1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4098 (match-string 2)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4099 nil)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4100 (if (looking-at ",value=\\(\".*\"\\).*?}")
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4101 (setcar (nthcdr 2 local) (read (match-string 1))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4102 (push local locals-list)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4103 (let ((buf (gdb-get-buffer 'gdb-locals-buffer)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4104 (and buf (with-current-buffer buf
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4105 (let* ((window (get-buffer-window buf 0))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4106 (start (window-start window))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4107 (p (if window (window-point window) (point)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4108 (buffer-read-only nil) (name) (value))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4109 (erase-buffer)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4110 (dolist (local locals-list)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4111 (setq name (car local))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4112 (setq value (nth 2 local))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4113 (if (or (not value)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4114 (string-match "^\\0x" value))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4115 (add-text-properties 0 (length name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4116 `(mouse-face highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4117 help-echo "mouse-2: create watch expression"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4118 local-map ,gdb-locals-watch-map-1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4119 name)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4120 (add-text-properties 0 (length value)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4121 `(mouse-face highlight
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4122 help-echo "mouse-2: edit value"
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4123 local-map ,gdb-edit-locals-map-1)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4124 value))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4125 (insert
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4126 (concat name "\t" (nth 1 local)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4127 "\t" value "\n")))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4128 (if window
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4129 (progn
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4130 (set-window-start window start)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4131 (set-window-point window p))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4132 (goto-char p)))))))))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4133
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4134 (defun gdb-get-register-names ()
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4135 "Create a list of register names."
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4136 (goto-char (point-min))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4137 (while (re-search-forward gdb-data-list-register-names-regexp nil t)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4138 (push (match-string 1) gdb-register-names)))
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4139
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4140 (provide 'gdb-ui)
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4141
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4142 ;; arch-tag: e9fb00c5-74ef-469f-a088-37384caae352
3a8fd7717b30 This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
4143 ;;; gdb-ui.el ends here