annotate lisp/progmodes/gdb-mi.el @ 103787:fb68f473a020

(rgrep): Allow grep-find-ignored-directories to be a cons cell (test . ignored-directory) to selectively ignore some directories depending on the location of the search.
author Sam Steingold <sds@gnu.org>
date Wed, 08 Jul 2009 14:23:57 +0000
parents d8f620ade0dc
children d9b3b49cf6d3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1 ;;; gdb-mi.el --- User Interface for running GDB
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2
103563
1c5f849edf58 Minor header format fixes.
Glenn Morris <rgm@gnu.org>
parents: 103554
diff changeset
3 ;; Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
1c5f849edf58 Minor header format fixes.
Glenn Morris <rgm@gnu.org>
parents: 103554
diff changeset
4
1c5f849edf58 Minor header format fixes.
Glenn Morris <rgm@gnu.org>
parents: 103554
diff changeset
5 ;; Author: Nick Roberts <nickrob@gnu.org>
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
6 ;; Maintainer: FSF
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
7 ;; Keywords: unix, tools
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
8
103563
1c5f849edf58 Minor header format fixes.
Glenn Morris <rgm@gnu.org>
parents: 103554
diff changeset
9 ;; This file is part of GNU Emacs.
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
10
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
11 ;; Homepage: http://www.emacswiki.org/emacs/GDB-MI
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
12
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
15 ;; the Free Software Foundation, either version 3 of the License, or
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
16 ;; (at your option) any later version.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
17
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
21 ;; GNU General Public License for more details.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
22
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
25
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
26 ;;; Credits:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
27
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
28 ;; This file was written by by Nick Roberts following the general design
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
29 ;; used in gdb-ui.el for Emacs 22.1 - 23.1. It is currently being developed
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
30 ;; by Dmitry Dzhus <dima@sphinx.net.ru> as part of the Google Summer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
31 ;; of Code 2009 Project "Emacs GDB/MI migration".
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
32
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
33 ;;; Commentary:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
34
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
35 ;; This mode acts as a graphical user interface to GDB. You can interact with
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
36 ;; GDB through the GUD buffer in the usual way, but there are also further
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
37 ;; buffers which control the execution and describe the state of your program.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
38 ;; It separates the input/output of your program from that of GDB and displays
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
39 ;; expressions and their current values in their own buffers. It also uses
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
40 ;; features of Emacs 21 such as the fringe/display margin for breakpoints, and
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
41 ;; the toolbar (see the GDB Graphical Interface section in the Emacs info
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
42 ;; manual).
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
43
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
44 ;; M-x gdb will start the debugger.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
45
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
46 ;; This file uses GDB/MI as the primary interface to GDB. It is still under
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
47 ;; development and is part of a process to migrate Emacs from annotations (as
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
48 ;; used in gdb-ui.el) to GDB/MI. It runs gdb with GDB/MI (-interp=mi) and
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
49 ;; access CLI using "-interpreter-exec console cli-command". This code works
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
50 ;; without gdb-ui.el and uses MI tokens instead of queues. Eventually MI
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
51 ;; should be asynchronous.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
52
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
53 ;; This mode will PARTLY WORK WITH RECENT GDB RELEASES (status in modeline
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
54 ;; doesn't update properly when execution commands are issued from GUD buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
55 ;; and WORKS BEST when GDB runs asynchronously: maint set linux-async on.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
56 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
57 ;; You need development version of GDB 7.0 for the thread buffer to work.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
58
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
59 ;; This file replaces gdb-ui.el and is for development with GDB. Use the
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
60 ;; release branch of Emacs 22 for the latest version of gdb-ui.el.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
61
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
62 ;; Windows Platforms:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
63
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
64 ;; If you are using Emacs and GDB on Windows you will need to flush the buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
65 ;; explicitly in your program if you want timely display of I/O in Emacs.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
66 ;; Alternatively you can make the output stream unbuffered, for example, by
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
67 ;; using a macro:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
68
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
69 ;; #ifdef UNBUFFERED
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
70 ;; setvbuf (stdout, (char *) NULL, _IONBF, 0);
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
71 ;; #endif
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
72
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
73 ;; and compiling with -DUNBUFFERED while debugging.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
74
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
75 ;; If you are using Cygwin GDB and find that the source is not being displayed
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
76 ;; in Emacs when you step through it, possible solutions are to:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
77
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
78 ;; 1) Use Cygwin X Windows and Cygwin Emacs.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
79 ;; (Since 22.1 Emacs builds under Cygwin.)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
80 ;; 2) Use MinGW GDB instead.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
81 ;; 3) Use cygwin-mount.el
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
82
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
83 ;;; Mac OSX:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
84
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
85 ;; GDB in Emacs on Mac OSX works best with FSF GDB as Apple have made
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
86 ;; some changes to the version that they include as part of Mac OSX.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
87 ;; This requires GDB version 7.0 or later (estimated release date Aug 2009)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
88 ;; as earlier versions don not compile on Mac OSX.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
89
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
90 ;;; Known Bugs:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
91
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
92 ;; 1) Stack buffer doesn't parse MI output if you stop in a routine without
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
93 ;; line information, e.g., a routine in libc (just a TODO item).
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
94
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
95 ;; TODO:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
96 ;; 2) Watch windows to work with threads.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
97 ;; 3) Use treebuffer.el instead of the speedbar for watch-expressions?
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
98 ;; 4) Mark breakpoint locations on scroll-bar of source buffer?
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
99
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
100 ;;; Code:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
101
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
102 (require 'gud)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
103 (require 'json)
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
104 (require 'bindat)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
105
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
106 (defvar tool-bar-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
107 (defvar speedbar-initial-expansion-list-name)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
108
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
109 (defvar gdb-pc-address nil "Initialization for Assembler buffer.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
110 Set to \"main\" at start if `gdb-show-main' is t.")
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
111 (defvar gdb-memory-address "main")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
112 (defvar gdb-memory-last-address nil
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
113 "Last successfully accessed memory address.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
114 (defvar gdb-memory-next-page nil
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
115 "Address of next memory page for program memory buffer.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
116 (defvar gdb-memory-prev-page nil
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
117 "Address of previous memory page for program memory buffer.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
118
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
119 (defvar gdb-selected-frame nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
120 (defvar gdb-selected-file nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
121 (defvar gdb-selected-line nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
122 (defvar gdb-frame-number nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
123 (defvar gdb-current-language nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
124 (defvar gdb-var-list nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
125 "List of variables in watch window.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
126 Each element has the form (VARNUM EXPRESSION NUMCHILD TYPE VALUE STATUS) where
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
127 STATUS is nil (unchanged), `changed' or `out-of-scope'.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
128 (defvar gdb-main-file nil "Source file from which program execution begins.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
129 (defvar gdb-overlay-arrow-position nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
130 (defvar gdb-stack-position nil)
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
131 (defvar gdb-breakpoints-list nil
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
132 "List of breakpoints.
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
133
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
134 `gdb-get-field' is used to access breakpoints data stored in this
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
135 variable. Each element contains the same fields as \"body\"
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
136 member of \"-break-info\".")
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
137 (defvar gdb-location-alist nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
138 "Alist of breakpoint numbers and full filenames. Only used for files that
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
139 Emacs can't find.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
140 (defvar gdb-active-process nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
141 "GUD tooltips display variable values when t, and macro definitions otherwise.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
142 (defvar gdb-error "Non-nil when GDB is reporting an error.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
143 (defvar gdb-macro-info nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
144 "Non-nil if GDB knows that the inferior includes preprocessor macro info.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
145 (defvar gdb-register-names nil "List of register names.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
146 (defvar gdb-changed-registers nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
147 "List of changed register numbers (strings).")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
148 (defvar gdb-buffer-fringe-width nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
149 (defvar gdb-last-command nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
150 (defvar gdb-prompt-name nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
151 (defvar gdb-token-number 0)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
152 (defvar gdb-handler-alist '())
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
153 (defvar gdb-handler-number nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
154 (defvar gdb-source-file-list nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
155 "List of source files for the current executable.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
156 (defvar gdb-first-done-or-error t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
157 (defvar gdb-source-window nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
158 (defvar gdb-inferior-status nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
159 (defvar gdb-continuation nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
160 (defvar gdb-filter-output nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
161 "Message to be shown in GUD console.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
162
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
163 This variable is updated in `gdb-done-or-error' and returned by
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
164 `gud-gdbmi-marker-filter'.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
165
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
166 (defvar gdb-buffer-type nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
167 "One of the symbols bound in `gdb-buffer-rules'.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
168 (make-variable-buffer-local 'gdb-buffer-type)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
169
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
170 (defvar gdb-output-sink 'nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
171 "The disposition of the output of the current gdb command.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
172 Possible values are these symbols:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
173
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
174 `user' -- gdb output should be copied to the GUD buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
175 for the user to see.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
176
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
177 `emacs' -- output should be collected in the partial-output-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
178 for subsequent processing by a command. This is the
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
179 disposition of output generated by commands that
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
180 gdb mode sends to gdb on its own behalf.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
181
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
182 (defvar gdb-pending-triggers '()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
183 "A list of trigger functions that have run later than their output handlers.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
184
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
185 (defcustom gdb-debug-log-max 128
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
186 "Maximum size of `gdb-debug-log'. If nil, size is unlimited."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
187 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
188 :type '(choice (integer :tag "Number of elements")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
189 (const :tag "Unlimited" nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
190 :version "22.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
191
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
192 (defvar gdb-debug-log nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
193 "List of commands sent to and replies received from GDB.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
194 Most recent commands are listed first. This list stores only the last
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
195 `gdb-debug-log-max' values. This variable is used to debug GDB-MI.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
196
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
197 ;;;###autoload
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
198 (defcustom gdb-enable-debug nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
199 "Non-nil means record the process input and output in `gdb-debug-log'."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
200 :type 'boolean
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
201 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
202 :version "22.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
203
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
204 (defcustom gdb-cpp-define-alist-program "gcc -E -dM -"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
205 "Shell command for generating a list of defined macros in a source file.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
206 This list is used to display the #define directive associated
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
207 with an identifier as a tooltip. It works in a debug session with
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
208 GDB, when `gud-tooltip-mode' is t.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
209
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
210 Set `gdb-cpp-define-alist-flags' for any include paths or
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
211 predefined macros."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
212 :type 'string
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
213 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
214 :version "22.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
215
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
216 (defcustom gdb-cpp-define-alist-flags ""
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
217 "Preprocessor flags for `gdb-cpp-define-alist-program'."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
218 :type 'string
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
219 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
220 :version "22.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
221
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
222 (defcustom gdb-create-source-file-list t
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
223 "Non-nil means create a list of files from which the executable was built.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
224 Set this to nil if the GUD buffer displays \"initializing...\" in the mode
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
225 line for a long time when starting, possibly because your executable was
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
226 built from a large number of files. This allows quicker initialization
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
227 but means that these files are not automatically enabled for debugging,
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
228 e.g., you won't be able to click in the fringe to set a breakpoint until
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
229 execution has already stopped there."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
230 :type 'boolean
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
231 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
232 :version "23.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
233
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
234 (defcustom gdb-show-main nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
235 "Non-nil means display source file containing the main routine at startup.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
236 Also display the main routine in the disassembly buffer if present."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
237 :type 'boolean
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
238 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
239 :version "22.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
240
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
241 ; Note: This mode requires a separate buffer for inferior IO.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
242 (defconst gdb-use-separate-io-buffer t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
243
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
244 (defun gdb-force-mode-line-update (status)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
245 (let ((buffer gud-comint-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
246 (if (and buffer (buffer-name buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
247 (with-current-buffer buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
248 (setq mode-line-process
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
249 (format ":%s [%s]"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
250 (process-status (get-buffer-process buffer)) status))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
251 ;; Force mode line redisplay soon.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
252 (force-mode-line-update)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
253
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
254 (defun gdb-enable-debug (arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
255 "Toggle logging of transaction between Emacs and Gdb.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
256 The log is stored in `gdb-debug-log' as an alist with elements
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
257 whose cons is send, send-item or recv and whose cdr is the string
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
258 being transferred. This list may grow up to a size of
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
259 `gdb-debug-log-max' after which the oldest element (at the end of
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
260 the list) is deleted every time a new one is added (at the front)."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
261 (interactive "P")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
262 (setq gdb-enable-debug
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
263 (if (null arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
264 (not gdb-enable-debug)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
265 (> (prefix-numeric-value arg) 0)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
266 (message (format "Logging of transaction %sabled"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
267 (if gdb-enable-debug "en" "dis"))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
268
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
269 (defun gdb-find-watch-expression ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
270 (let* ((var (nth (- (line-number-at-pos (point)) 2) gdb-var-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
271 (varnum (car var)) expr array)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
272 (string-match "\\(var[0-9]+\\)\\.\\(.*\\)" varnum)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
273 (let ((var1 (assoc (match-string 1 varnum) gdb-var-list)) var2 varnumlet
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
274 (component-list (split-string (match-string 2 varnum) "\\." t)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
275 (setq expr (nth 1 var1))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
276 (setq varnumlet (car var1))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
277 (dolist (component component-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
278 (setq var2 (assoc varnumlet gdb-var-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
279 (setq expr (concat expr
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
280 (if (string-match ".*\\[[0-9]+\\]$" (nth 3 var2))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
281 (concat "[" component "]")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
282 (concat "." component))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
283 (setq varnumlet (concat varnumlet "." component)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
284 expr)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
285
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
286 (defvar gdb-locals-font-lock-keywords
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
287 '(
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
288 ;; var = type value
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
289 ( "\\(^\\(\\sw\\|[_.]\\)+\\)\t+\\(\\(\\sw\\|[_.]\\)+\\)"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
290 (1 font-lock-variable-name-face)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
291 (3 font-lock-type-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
292 )
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
293 "Font lock keywords used in `gdb-local-mode'.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
294
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
295 ;;;###autoload
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
296 (defun gdb (command-line)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
297 "Run gdb on program FILE in buffer *gud-FILE*.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
298 The directory containing FILE becomes the initial working directory
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
299 and source-file directory for your debugger.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
300
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
301 If `gdb-many-windows' is nil (the default value) then gdb just
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
302 pops up the GUD buffer unless `gdb-show-main' is t. In this case
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
303 it starts with two windows: one displaying the GUD buffer and the
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
304 other with the source file with the main routine of the inferior.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
305
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
306 If `gdb-many-windows' is t, regardless of the value of
103779
d8f620ade0dc (gdb): Remove description of
Nick Roberts <nickrob@snap.net.nz>
parents: 103759
diff changeset
307 `gdb-show-main', the layout below will appear. Keybindings are
d8f620ade0dc (gdb): Remove description of
Nick Roberts <nickrob@snap.net.nz>
parents: 103759
diff changeset
308 shown in some of the buffers.
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
309
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
310 Watch expressions appear in the speedbar/slowbar.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
311
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
312 The following commands help control operation :
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
313
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
314 `gdb-many-windows' - Toggle the number of windows gdb uses.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
315 `gdb-restore-windows' - To restore the window layout.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
316
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
317 See Info node `(emacs)GDB Graphical Interface' for a more
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
318 detailed description of this mode.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
319
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
320
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
321 +----------------------------------------------------------------------+
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
322 | GDB Toolbar |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
323 +-----------------------------------+----------------------------------+
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
324 | GUD buffer (I/O of GDB) | Locals buffer |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
325 | | |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
326 | | |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
327 | | |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
328 +-----------------------------------+----------------------------------+
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
329 | Source buffer | I/O buffer (of debugged program) |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
330 | | (comint-mode) |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
331 | | |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
332 | | |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
333 | | |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
334 | | |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
335 | | |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
336 | | |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
337 +-----------------------------------+----------------------------------+
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
338 | Stack buffer | Breakpoints buffer |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
339 | RET gdb-frames-select | SPC gdb-toggle-breakpoint |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
340 | | RET gdb-goto-breakpoint |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
341 | | D gdb-delete-breakpoint |
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
342 +-----------------------------------+----------------------------------+"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
343 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
344 (interactive (list (gud-query-cmdline 'gdb)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
345
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
346 (when (and gud-comint-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
347 (buffer-name gud-comint-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
348 (get-buffer-process gud-comint-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
349 (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
350 (gdb-restore-windows)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
351 (error
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
352 "Multiple debugging requires restarting in text command mode"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
353 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
354 (gud-common-init command-line nil 'gud-gdbmi-marker-filter)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
355 (set (make-local-variable 'gud-minor-mode) 'gdbmi)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
356 (setq comint-input-sender 'gdb-send)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
357
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
358 (gud-def gud-tbreak "tbreak %f:%l" "\C-t"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
359 "Set temporary breakpoint at current line.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
360 (gud-def gud-jump
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
361 (progn (gud-call "tbreak %f:%l") (gud-call "jump %f:%l"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
362 "\C-j" "Set execution address to current line.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
363
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
364 (gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
365 (gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
366 (gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
367 (gud-def gud-pstar "print* %e" nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
368 "Evaluate C dereferenced pointer expression at point.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
369
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
370 (gud-def gud-step "-exec-step %p" "\C-s"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
371 "Step one source line with display.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
372 (gud-def gud-stepi "-exec-step-instruction %p" "\C-i"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
373 "Step one instruction with display.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
374 (gud-def gud-next "-exec-next %p" "\C-n"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
375 "Step one line (skip functions).")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
376 (gud-def gud-nexti "nexti %p" nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
377 "Step one instruction (skip functions).")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
378 (gud-def gud-cont "-exec-continue" "\C-r"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
379 "Continue with display.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
380 (gud-def gud-finish "-exec-finish" "\C-f"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
381 "Finish executing current function.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
382 (gud-def gud-run "-exec-run" nil "Runn the program.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
383
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
384 (local-set-key "\C-i" 'gud-gdb-complete-command)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
385 (setq gdb-first-prompt t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
386 (setq gud-running nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
387 (gdb-update)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
388 (run-hooks 'gdb-mode-hook))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
389
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
390 (defun gdb-init-1 ()
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
391 (gud-def gud-break (if (not (string-match "Disassembly" mode-name))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
392 (gud-call "break %f:%l" arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
393 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
394 (beginning-of-line)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
395 (forward-char 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
396 (gud-call "break *%a" arg)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
397 "\C-b" "Set breakpoint at current line or address.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
398 ;;
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
399 (gud-def gud-remove (if (not (string-match "Disassembly" mode-name))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
400 (gud-call "clear %f:%l" arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
401 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
402 (beginning-of-line)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
403 (forward-char 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
404 (gud-call "clear *%a" arg)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
405 "\C-d" "Remove breakpoint at current line or address.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
406 ;;
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
407 (gud-def gud-until (if (not (string-match "Disassembly" mode-name))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
408 (gud-call "-exec-until %f:%l" arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
409 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
410 (beginning-of-line)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
411 (forward-char 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
412 (gud-call "-exec-until *%a" arg)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
413 "\C-u" "Continue to current line or address.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
414 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
415 (gud-def
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
416 gud-go (gud-call (if gdb-active-process "-exec-continue" "-exec-run") arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
417 nil "Start or continue execution.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
418
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
419 ;; For debugging Emacs only.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
420 (gud-def gud-pp
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
421 (gud-call
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
422 (concat
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
423 "pp1 " (if (eq (buffer-local-value
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
424 'major-mode (window-buffer)) 'speedbar-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
425 (gdb-find-watch-expression) "%e")) arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
426 nil "Print the Emacs s-expression.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
427
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
428 (define-key gud-minor-mode-map [left-margin mouse-1]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
429 'gdb-mouse-set-clear-breakpoint)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
430 (define-key gud-minor-mode-map [left-fringe mouse-1]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
431 'gdb-mouse-set-clear-breakpoint)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
432 (define-key gud-minor-mode-map [left-margin C-mouse-1]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
433 'gdb-mouse-toggle-breakpoint-margin)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
434 (define-key gud-minor-mode-map [left-fringe C-mouse-1]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
435 'gdb-mouse-toggle-breakpoint-fringe)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
436
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
437 (define-key gud-minor-mode-map [left-margin drag-mouse-1]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
438 'gdb-mouse-until)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
439 (define-key gud-minor-mode-map [left-fringe drag-mouse-1]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
440 'gdb-mouse-until)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
441 (define-key gud-minor-mode-map [left-margin mouse-3]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
442 'gdb-mouse-until)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
443 (define-key gud-minor-mode-map [left-fringe mouse-3]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
444 'gdb-mouse-until)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
445
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
446 (define-key gud-minor-mode-map [left-margin C-drag-mouse-1]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
447 'gdb-mouse-jump)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
448 (define-key gud-minor-mode-map [left-fringe C-drag-mouse-1]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
449 'gdb-mouse-jump)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
450 (define-key gud-minor-mode-map [left-fringe C-mouse-3]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
451 'gdb-mouse-jump)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
452 (define-key gud-minor-mode-map [left-margin C-mouse-3]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
453 'gdb-mouse-jump)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
454 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
455 ;; (re-)initialise
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
456 (setq gdb-pc-address (if gdb-show-main "main" nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
457 (setq gdb-selected-frame nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
458 gdb-frame-number nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
459 gdb-var-list nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
460 gdb-pending-triggers nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
461 gdb-output-sink 'user
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
462 gdb-location-alist nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
463 gdb-source-file-list nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
464 gdb-last-command nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
465 gdb-token-number 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
466 gdb-handler-alist '()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
467 gdb-handler-number nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
468 gdb-prompt-name nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
469 gdb-first-done-or-error t
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
470 gdb-buffer-fringe-width (car (window-fringes))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
471 gdb-debug-log nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
472 gdb-source-window nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
473 gdb-inferior-status nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
474 gdb-continuation nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
475 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
476 (setq gdb-buffer-type 'gdbmi)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
477 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
478 (gdb-force-mode-line-update
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
479 (propertize "initializing..." 'face font-lock-variable-name-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
480
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
481 (when gdb-use-separate-io-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
482 (gdb-get-buffer-create 'gdb-inferior-io)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
483 (gdb-clear-inferior-io)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
484 (set-process-filter (get-process "gdb-inferior") 'gdb-inferior-filter)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
485 (gdb-input
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
486 ;; Needs GDB 6.4 onwards
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
487 (list (concat "-inferior-tty-set "
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
488 (process-tty-name (get-process "gdb-inferior")))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
489 'ignore)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
490 (if (eq window-system 'w32)
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
491 (gdb-input (list "-gdb-set new-console off" 'ignore)))
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
492 (gdb-input (list "-gdb-set height 0" 'ignore))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
493 ;; find source file and compilation directory here
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
494 (gdb-input
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
495 ; Needs GDB 6.2 onwards.
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
496 (list "-file-list-exec-source-files" 'gdb-get-source-file-list))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
497 (if gdb-create-source-file-list
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
498 (gdb-input
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
499 ; Needs GDB 6.0 onwards.
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
500 (list "-file-list-exec-source-file" 'gdb-get-source-file)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
501 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
502 (list "-gdb-show prompt" 'gdb-get-prompt)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
503
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
504 (defvar gdb-define-alist nil "Alist of #define directives for GUD tooltips.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
505
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
506 (defun gdb-create-define-alist ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
507 "Create an alist of #define directives for GUD tooltips."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
508 (let* ((file (buffer-file-name))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
509 (output
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
510 (with-output-to-string
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
511 (with-current-buffer standard-output
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
512 (and file
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
513 (file-exists-p file)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
514 ;; call-process doesn't work with remote file names.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
515 (not (file-remote-p default-directory))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
516 (call-process shell-file-name file
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
517 (list t nil) nil "-c"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
518 (concat gdb-cpp-define-alist-program " "
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
519 gdb-cpp-define-alist-flags))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
520 (define-list (split-string output "\n" t))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
521 (name))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
522 (setq gdb-define-alist nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
523 (dolist (define define-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
524 (setq name (nth 1 (split-string define "[( ]")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
525 (push (cons name define) gdb-define-alist))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
526
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
527 (declare-function tooltip-show "tooltip" (text &optional use-echo-area))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
528 (defvar tooltip-use-echo-area)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
529
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
530 (defun gdb-tooltip-print (expr)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
531 (tooltip-show
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
532 (with-current-buffer (gdb-get-buffer 'gdb-partial-output-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
533 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
534 (let ((string
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
535 (if (search-forward "=" nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
536 (concat expr (buffer-substring (- (point) 2) (point-max)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
537 (buffer-string))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
538 ;; remove newline for gud-tooltip-echo-area
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
539 (substring string 0 (- (length string) 1))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
540 (or gud-tooltip-echo-area tooltip-use-echo-area
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
541 (not (display-graphic-p)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
542
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
543 ;; If expr is a macro for a function don't print because of possible dangerous
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
544 ;; side-effects. Also printing a function within a tooltip generates an
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
545 ;; unexpected starting annotation (phase error).
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
546 (defun gdb-tooltip-print-1 (expr)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
547 (with-current-buffer (gdb-get-buffer 'gdb-partial-output-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
548 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
549 (if (search-forward "expands to: " nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
550 (unless (looking-at "\\S-+.*(.*).*")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
551 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
552 (list (concat "print " expr)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
553 `(lambda () (gdb-tooltip-print ,expr))))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
554
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
555 (defun gdb-init-buffer ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
556 (set (make-local-variable 'gud-minor-mode) 'gdbmi)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
557 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
558 (when gud-tooltip-mode
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
559 (make-local-variable 'gdb-define-alist)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
560 (gdb-create-define-alist)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
561 (add-hook 'after-save-hook 'gdb-create-define-alist nil t)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
562
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
563 (defmacro gdb-if-arrow (arrow-position &rest body)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
564 `(if ,arrow-position
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
565 (let ((buffer (marker-buffer ,arrow-position)) (line))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
566 (if (equal buffer (window-buffer (posn-window end)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
567 (with-current-buffer buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
568 (when (or (equal start end)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
569 (equal (posn-point start)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
570 (marker-position ,arrow-position)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
571 ,@body))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
572
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
573 (defun gdb-mouse-until (event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
574 "Continue running until a source line past the current line.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
575 The destination source line can be selected either by clicking
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
576 with mouse-3 on the fringe/margin or dragging the arrow
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
577 with mouse-1 (default bindings)."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
578 (interactive "e")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
579 (let ((start (event-start event))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
580 (end (event-end event)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
581 (gdb-if-arrow gud-overlay-arrow-position
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
582 (setq line (line-number-at-pos (posn-point end)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
583 (gud-call (concat "until " (number-to-string line))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
584 (gdb-if-arrow gdb-overlay-arrow-position
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
585 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
586 (goto-line (line-number-at-pos (posn-point end)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
587 (forward-char 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
588 (gud-call (concat "until *%a"))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
589
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
590 (defun gdb-mouse-jump (event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
591 "Set execution address/line.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
592 The destination source line can be selected either by clicking with C-mouse-3
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
593 on the fringe/margin or dragging the arrow with C-mouse-1 (default bindings).
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
594 Unlike `gdb-mouse-until' the destination address can be before the current
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
595 line, and no execution takes place."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
596 (interactive "e")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
597 (let ((start (event-start event))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
598 (end (event-end event)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
599 (gdb-if-arrow gud-overlay-arrow-position
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
600 (setq line (line-number-at-pos (posn-point end)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
601 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
602 (gud-call (concat "tbreak " (number-to-string line)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
603 (gud-call (concat "jump " (number-to-string line)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
604 (gdb-if-arrow gdb-overlay-arrow-position
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
605 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
606 (goto-line (line-number-at-pos (posn-point end)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
607 (forward-char 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
608 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
609 (gud-call (concat "tbreak *%a"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
610 (gud-call (concat "jump *%a")))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
611
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
612 (defcustom gdb-show-changed-values t
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
613 "If non-nil change the face of out of scope variables and changed values.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
614 Out of scope variables are suppressed with `shadow' face.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
615 Changed values are highlighted with the face `font-lock-warning-face'."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
616 :type 'boolean
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
617 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
618 :version "22.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
619
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
620 (defcustom gdb-max-children 40
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
621 "Maximum number of children before expansion requires confirmation."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
622 :type 'integer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
623 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
624 :version "22.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
625
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
626 (defcustom gdb-delete-out-of-scope t
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
627 "If non-nil delete watch expressions automatically when they go out of scope."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
628 :type 'boolean
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
629 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
630 :version "22.2")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
631
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
632 (defcustom gdb-speedbar-auto-raise nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
633 "If non-nil raise speedbar every time display of watch expressions is\
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
634 updated."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
635 :type 'boolean
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
636 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
637 :version "22.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
638
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
639 (defcustom gdb-use-colon-colon-notation nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
640 "If non-nil use FUN::VAR format to display variables in the speedbar."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
641 :type 'boolean
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
642 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
643 :version "22.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
644
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
645 (defun gdb-speedbar-auto-raise (arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
646 "Toggle automatic raising of the speedbar for watch expressions.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
647 With prefix argument ARG, automatically raise speedbar if ARG is
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
648 positive, otherwise don't automatically raise it."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
649 (interactive "P")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
650 (setq gdb-speedbar-auto-raise
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
651 (if (null arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
652 (not gdb-speedbar-auto-raise)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
653 (> (prefix-numeric-value arg) 0)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
654 (message (format "Auto raising %sabled"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
655 (if gdb-speedbar-auto-raise "en" "dis"))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
656
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
657 (define-key gud-minor-mode-map "\C-c\C-w" 'gud-watch)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
658 (define-key global-map (concat gud-key-prefix "\C-w") 'gud-watch)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
659
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
660 (declare-function tooltip-identifier-from-point "tooltip" (point))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
661
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
662 (defun gud-watch (&optional arg event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
663 "Watch expression at point.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
664 With arg, enter name of variable to be watched in the minibuffer."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
665 (interactive (list current-prefix-arg last-input-event))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
666 (let ((minor-mode (buffer-local-value 'gud-minor-mode gud-comint-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
667 (if (eq minor-mode 'gdbmi)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
668 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
669 (if event (posn-set-point (event-end event)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
670 (require 'tooltip)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
671 (save-selected-window
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
672 (let ((expr
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
673 (if arg
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
674 (completing-read "Name of variable: "
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
675 'gud-gdb-complete-command)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
676 (if (and transient-mark-mode mark-active)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
677 (buffer-substring (region-beginning) (region-end))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
678 (concat (if (eq major-mode 'gdb-registers-mode) "$")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
679 (tooltip-identifier-from-point (point)))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
680 (set-text-properties 0 (length expr) nil expr)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
681 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
682 (list (concat"-var-create - * " expr "")
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
683 `(lambda () (gdb-var-create-handler ,expr)))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
684 (message "gud-watch is a no-op in this mode."))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
685
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
686 (defconst gdb-var-create-regexp
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
687 "name=\"\\(.*?\\)\",.*numchild=\"\\(.*?\\)\",\\(?:.*value=\\(\".*\"\\),\\)?.*type=\"\\(.*?\\)\"")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
688
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
689 (defun gdb-var-create-handler (expr)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
690 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
691 (if (re-search-forward gdb-var-create-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
692 (let ((var (list
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
693 (match-string 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
694 (if (and (string-equal gdb-current-language "c")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
695 gdb-use-colon-colon-notation gdb-selected-frame)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
696 (setq expr (concat gdb-selected-frame "::" expr))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
697 expr)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
698 (match-string 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
699 (match-string 4)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
700 (if (match-string 3) (read (match-string 3)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
701 nil)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
702 (push var gdb-var-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
703 (speedbar 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
704 (unless (string-equal
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
705 speedbar-initial-expansion-list-name "GUD")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
706 (speedbar-change-initial-expansion-list "GUD"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
707 (gdb-input
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
708 (list
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
709 (concat "-var-evaluate-expression " (car var))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
710 `(lambda () (gdb-var-evaluate-expression-handler
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
711 ,(car var) nil)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
712 (message-box "No symbol \"%s\" in current context." expr)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
713
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
714 (defun gdb-speedbar-update ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
715 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
716 (not (member 'gdb-speedbar-timer gdb-pending-triggers)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
717 ;; Dummy command to update speedbar even when idle.
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
718 (gdb-input (list "-environment-pwd" 'gdb-speedbar-timer-fn))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
719 ;; Keep gdb-pending-triggers non-nil till end.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
720 (push 'gdb-speedbar-timer gdb-pending-triggers)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
721
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
722 (defun gdb-speedbar-timer-fn ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
723 (if gdb-speedbar-auto-raise
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
724 (raise-frame speedbar-frame))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
725 (setq gdb-pending-triggers
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
726 (delq 'gdb-speedbar-timer gdb-pending-triggers))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
727 (speedbar-timer-fn))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
728
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
729 (defun gdb-var-evaluate-expression-handler (varnum changed)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
730 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
731 (re-search-forward ".*value=\\(\".*\"\\)" nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
732 (let ((var (assoc varnum gdb-var-list)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
733 (when var
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
734 (if changed (setcar (nthcdr 5 var) 'changed))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
735 (setcar (nthcdr 4 var) (read (match-string 1)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
736 (gdb-speedbar-update))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
737
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
738 ; Uses "-var-list-children --all-values". Needs GDB 6.1 onwards.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
739 (defun gdb-var-list-children (varnum)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
740 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
741 (list (concat "-var-update " varnum) 'ignore))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
742 (gdb-input
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
743 (list (concat "-var-list-children --all-values "
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
744 varnum)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
745 `(lambda () (gdb-var-list-children-handler ,varnum)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
746
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
747 (defconst gdb-var-list-children-regexp
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
748 "child={.*?name=\"\\(.+?\\)\".*?,exp=\"\\(.+?\\)\".*?,\
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
749 numchild=\"\\(.+?\\)\".*?,value=\\(\".*?\"\\).*?,type=\"\\(.+?\\)\".*?}")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
750
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
751 (defun gdb-var-list-children-handler (varnum)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
752 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
753 (let ((var-list nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
754 (catch 'child-already-watched
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
755 (dolist (var gdb-var-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
756 (if (string-equal varnum (car var))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
757 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
758 (push var var-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
759 (while (re-search-forward gdb-var-list-children-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
760 (let ((varchild (list (match-string 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
761 (match-string 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
762 (match-string 3)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
763 (match-string 5)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
764 (read (match-string 4))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
765 nil)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
766 (if (assoc (car varchild) gdb-var-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
767 (throw 'child-already-watched nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
768 (push varchild var-list))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
769 (push var var-list)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
770 (setq gdb-var-list (nreverse var-list))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
771 (gdb-speedbar-update))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
772
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
773 (defun gdb-var-set-format (format)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
774 "Set the output format for a variable displayed in the speedbar."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
775 (let* ((var (nth (- (count-lines (point-min) (point)) 2) gdb-var-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
776 (varnum (car var)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
777 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
778 (list (concat "-var-set-format " varnum " " format) 'ignore))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
779 (gdb-var-update)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
780
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
781 (defun gdb-var-delete-1 (varnum)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
782 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
783 (list (concat "-var-delete " varnum) 'ignore))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
784 (setq gdb-var-list (delq var gdb-var-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
785 (dolist (varchild gdb-var-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
786 (if (string-match (concat (car var) "\\.") (car varchild))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
787 (setq gdb-var-list (delq varchild gdb-var-list)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
788
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
789 (defun gdb-var-delete ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
790 "Delete watch expression at point from the speedbar."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
791 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
792 (let ((text (speedbar-line-text)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
793 (string-match "\\(\\S-+\\)" text)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
794 (let* ((var (nth (- (count-lines (point-min) (point)) 2) gdb-var-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
795 (varnum (car var)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
796 (if (string-match "\\." (car var))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
797 (message-box "Can only delete a root expression")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
798 (gdb-var-delete-1 varnum)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
799
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
800 (defun gdb-var-delete-children (varnum)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
801 "Delete children of variable object at point from the speedbar."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
802 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
803 (list (concat "-var-delete -c " varnum) 'ignore)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
804
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
805 (defun gdb-edit-value (text token indent)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
806 "Assign a value to a variable displayed in the speedbar."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
807 (let* ((var (nth (- (count-lines (point-min) (point)) 2) gdb-var-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
808 (varnum (car var)) (value))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
809 (setq value (read-string "New value: "))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
810 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
811 (list (concat "-var-assign " varnum " " value)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
812 `(lambda () (gdb-edit-value-handler ,value))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
813
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
814 (defconst gdb-error-regexp "\\^error,msg=\\(\".+\"\\)")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
815
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
816 (defun gdb-edit-value-handler (value)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
817 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
818 (if (re-search-forward gdb-error-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
819 (message-box "Invalid number or expression (%s)" value)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
820
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
821 ; Uses "-var-update --all-values". Needs GDB 6.4 onwards.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
822 (defun gdb-var-update ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
823 (if (not (member 'gdb-var-update gdb-pending-triggers))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
824 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
825 (list "-var-update --all-values *" 'gdb-var-update-handler)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
826 (push 'gdb-var-update gdb-pending-triggers))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
827
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
828 (defconst gdb-var-update-regexp
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
829 "{.*?name=\"\\(.*?\\)\".*?,\\(?:value=\\(\".*?\"\\),\\)?.*?\
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
830 in_scope=\"\\(.*?\\)\".*?}")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
831
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
832 (defun gdb-var-update-handler ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
833 (dolist (var gdb-var-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
834 (setcar (nthcdr 5 var) nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
835 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
836 (while (re-search-forward gdb-var-update-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
837 (let* ((varnum (match-string 1))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
838 (var (assoc varnum gdb-var-list)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
839 (when var
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
840 (let ((match (match-string 3)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
841 (cond ((string-equal match "false")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
842 (if gdb-delete-out-of-scope
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
843 (gdb-var-delete-1 varnum)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
844 (setcar (nthcdr 5 var) 'out-of-scope)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
845 ((string-equal match "true")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
846 (setcar (nthcdr 5 var) 'changed)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
847 (setcar (nthcdr 4 var)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
848 (read (match-string 2))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
849 ((string-equal match "invalid")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
850 (gdb-var-delete-1 varnum)))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
851 (setq gdb-pending-triggers
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
852 (delq 'gdb-var-update gdb-pending-triggers))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
853 (gdb-speedbar-update))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
854
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
855 (defun gdb-speedbar-expand-node (text token indent)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
856 "Expand the node the user clicked on.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
857 TEXT is the text of the button we clicked on, a + or - item.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
858 TOKEN is data related to this node.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
859 INDENT is the current indentation depth."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
860 (cond ((string-match "+" text) ;expand this node
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
861 (let* ((var (assoc token gdb-var-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
862 (expr (nth 1 var)) (children (nth 2 var)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
863 (if (or (<= (string-to-number children) gdb-max-children)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
864 (y-or-n-p
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
865 (format "%s has %s children. Continue? " expr children)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
866 (gdb-var-list-children token))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
867 ((string-match "-" text) ;contract this node
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
868 (dolist (var gdb-var-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
869 (if (string-match (concat token "\\.") (car var))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
870 (setq gdb-var-list (delq var gdb-var-list))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
871 (gdb-var-delete-children token)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
872 (speedbar-change-expand-button-char ?+)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
873 (speedbar-delete-subblock indent))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
874 (t (error "Ooops... not sure what to do")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
875 (speedbar-center-buffer-smartly))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
876
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
877 (defun gdb-get-target-string ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
878 (with-current-buffer gud-comint-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
879 gud-target-name))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
880
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
881
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
882 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
883 ;; gdb buffers.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
884 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
885 ;; Each buffer has a TYPE -- a symbol that identifies the function
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
886 ;; of that particular buffer.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
887 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
888 ;; The usual gdb interaction buffer is given the type `gdbmi' and
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
889 ;; is constructed specially.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
890 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
891 ;; Others are constructed by gdb-get-buffer-create and
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
892 ;; named according to the rules set forth in the gdb-buffer-rules-assoc
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
893
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
894 (defvar gdb-buffer-rules-assoc '())
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
895
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
896 (defun gdb-get-buffer (key)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
897 "Return the gdb buffer tagged with type KEY.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
898 The key should be one of the cars in `gdb-buffer-rules-assoc'."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
899 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
900 (gdb-look-for-tagged-buffer key (buffer-list))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
901
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
902 (defun gdb-get-buffer-create (key)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
903 "Create a new gdb buffer of the type specified by KEY.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
904 The key should be one of the cars in `gdb-buffer-rules-assoc'."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
905 (or (gdb-get-buffer key)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
906 (let* ((rules (assoc key gdb-buffer-rules-assoc))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
907 (name (funcall (gdb-rules-name-maker rules)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
908 (new (get-buffer-create name)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
909 (with-current-buffer new
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
910 (let ((trigger))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
911 (if (cdr (cdr rules))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
912 (setq trigger (funcall (car (cdr (cdr rules))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
913 (setq gdb-buffer-type key)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
914 (set (make-local-variable 'gud-minor-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
915 (buffer-local-value 'gud-minor-mode gud-comint-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
916 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
917 (if trigger (funcall trigger)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
918 new))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
919
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
920 (defun gdb-rules-name-maker (rules) (car (cdr rules)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
921
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
922 (defun gdb-look-for-tagged-buffer (key bufs)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
923 (let ((retval nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
924 (while (and (not retval) bufs)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
925 (set-buffer (car bufs))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
926 (if (eq gdb-buffer-type key)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
927 (setq retval (car bufs)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
928 (setq bufs (cdr bufs)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
929 retval))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
930
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
931 ;; Used to define all gdb-frame-*-buffer functions except
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
932 ;; `gdb-frame-separate-io-buffer'
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
933 (defmacro def-gdb-frame-for-buffer (name buffer &optional doc)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
934 "Define a function NAME which shows gdb BUFFER in a separate frame.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
935
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
936 DOC is an optional documentation string."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
937 `(defun ,name ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
938 ,(when doc doc)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
939 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
940 (let ((special-display-regexps (append special-display-regexps '(".*")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
941 (special-display-frame-alist gdb-frame-parameters))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
942 (display-buffer (gdb-get-buffer-create ,buffer)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
943
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
944 (defmacro def-gdb-display-buffer (name buffer &optional doc)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
945 "Define a function NAME which shows gdb BUFFER.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
946
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
947 DOC is an optional documentation string."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
948 `(defun ,name ()
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
949 ,(when doc doc)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
950 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
951 (gdb-display-buffer
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
952 (gdb-get-buffer-create ,buffer) t)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
953
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
954 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
955 ;; This assoc maps buffer type symbols to rules. Each rule is a list of
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
956 ;; at least one and possible more functions. The functions have these
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
957 ;; roles in defining a buffer type:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
958 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
959 ;; NAME - Return a name for this buffer type.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
960 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
961 ;; The remaining function(s) are optional:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
962 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
963 ;; MODE - called in a new buffer with no arguments, should establish
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
964 ;; the proper mode for the buffer.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
965 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
966
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
967 (defun gdb-set-buffer-rules (buffer-type &rest rules)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
968 (let ((binding (assoc buffer-type gdb-buffer-rules-assoc)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
969 (if binding
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
970 (setcdr binding rules)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
971 (push (cons buffer-type rules)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
972 gdb-buffer-rules-assoc))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
973
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
974 ;; GUD buffers are an exception to the rules
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
975 (gdb-set-buffer-rules 'gdbmi 'error)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
976
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
977 ;; Partial-output buffer : This accumulates output from a command executed on
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
978 ;; behalf of emacs (rather than the user).
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
979 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
980 (gdb-set-buffer-rules 'gdb-partial-output-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
981 'gdb-partial-output-name)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
982
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
983 (defun gdb-partial-output-name ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
984 (concat " *partial-output-"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
985 (gdb-get-target-string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
986 "*"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
987
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
988
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
989 (gdb-set-buffer-rules 'gdb-inferior-io
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
990 'gdb-inferior-io-name
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
991 'gdb-inferior-io-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
992
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
993 (defun gdb-inferior-io-name ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
994 (concat "*input/output of "
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
995 (gdb-get-target-string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
996 "*"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
997
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
998 (defun gdb-display-separate-io-buffer ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
999 "Display IO of debugged program in a separate window."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1000 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1001 (if gdb-use-separate-io-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1002 (gdb-display-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1003 (gdb-get-buffer-create 'gdb-inferior-io) t)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1004
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1005 (defconst gdb-frame-parameters
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1006 '((height . 14) (width . 80)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1007 (unsplittable . t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1008 (tool-bar-lines . nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1009 (menu-bar-lines . nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1010 (minibuffer . nil)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1011
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1012 (defun gdb-frame-separate-io-buffer ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1013 "Display IO of debugged program in a new frame."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1014 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1015 (if gdb-use-separate-io-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1016 (let ((special-display-regexps (append special-display-regexps '(".*")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1017 (special-display-frame-alist gdb-frame-parameters))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1018 (display-buffer (gdb-get-buffer-create 'gdb-inferior-io)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1019
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1020 (defvar gdb-inferior-io-mode-map
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1021 (let ((map (make-sparse-keymap)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1022 (define-key map "\C-c\C-c" 'gdb-separate-io-interrupt)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1023 (define-key map "\C-c\C-z" 'gdb-separate-io-stop)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1024 (define-key map "\C-c\C-\\" 'gdb-separate-io-quit)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1025 (define-key map "\C-c\C-d" 'gdb-separate-io-eof)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1026 (define-key map "\C-d" 'gdb-separate-io-eof)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1027 map))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1028
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1029 (define-derived-mode gdb-inferior-io-mode comint-mode "Inferior I/O"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1030 "Major mode for gdb inferior-io."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1031 :syntax-table nil :abbrev-table nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1032 ;; We want to use comint because it has various nifty and familiar
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1033 ;; features. We don't need a process, but comint wants one, so create
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1034 ;; a dummy one.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1035 (make-comint-in-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1036 "gdb-inferior" (current-buffer) "sleep" nil "1000000000"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1037
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1038 (defun gdb-inferior-filter (proc string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1039 (unless (string-equal string "")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1040 (gdb-display-buffer (gdb-get-buffer-create 'gdb-inferior-io) t))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1041 (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1042 (insert-before-markers string)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1043
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1044 (defun gdb-separate-io-interrupt ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1045 "Interrupt the program being debugged."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1046 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1047 (interrupt-process
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1048 (get-buffer-process gud-comint-buffer) comint-ptyp))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1049
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1050 (defun gdb-separate-io-quit ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1051 "Send quit signal to the program being debugged."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1052 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1053 (quit-process
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1054 (get-buffer-process gud-comint-buffer) comint-ptyp))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1055
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1056 (defun gdb-separate-io-stop ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1057 "Stop the program being debugged."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1058 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1059 (stop-process
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1060 (get-buffer-process gud-comint-buffer) comint-ptyp))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1061
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1062 (defun gdb-separate-io-eof ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1063 "Send end-of-file to the program being debugged."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1064 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1065 (process-send-eof
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1066 (get-buffer-process gud-comint-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1067
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1068 (defun gdb-clear-inferior-io ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1069 (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1070 (erase-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1071
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1072
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1073 (defconst breakpoint-xpm-data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1074 "/* XPM */
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1075 static char *magick[] = {
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1076 /* columns rows colors chars-per-pixel */
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1077 \"10 10 2 1\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1078 \" c red\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1079 \"+ c None\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1080 /* pixels */
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1081 \"+++ +++\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1082 \"++ ++\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1083 \"+ +\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1084 \" \",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1085 \" \",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1086 \" \",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1087 \" \",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1088 \"+ +\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1089 \"++ ++\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1090 \"+++ +++\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1091 };"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1092 "XPM data used for breakpoint icon.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1093
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1094 (defconst breakpoint-enabled-pbm-data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1095 "P1
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1096 10 10\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1097 0 0 0 0 1 1 1 1 0 0 0 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1098 0 0 0 1 1 1 1 1 1 0 0 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1099 0 0 1 1 1 1 1 1 1 1 0 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1100 0 1 1 1 1 1 1 1 1 1 1 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1101 0 1 1 1 1 1 1 1 1 1 1 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1102 0 1 1 1 1 1 1 1 1 1 1 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1103 0 1 1 1 1 1 1 1 1 1 1 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1104 0 0 1 1 1 1 1 1 1 1 0 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1105 0 0 0 1 1 1 1 1 1 0 0 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1106 0 0 0 0 1 1 1 1 0 0 0 0"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1107 "PBM data used for enabled breakpoint icon.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1108
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1109 (defconst breakpoint-disabled-pbm-data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1110 "P1
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1111 10 10\",
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1112 0 0 1 0 1 0 1 0 0 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1113 0 1 0 1 0 1 0 1 0 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1114 1 0 1 0 1 0 1 0 1 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1115 0 1 0 1 0 1 0 1 0 1
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1116 1 0 1 0 1 0 1 0 1 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1117 0 1 0 1 0 1 0 1 0 1
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1118 1 0 1 0 1 0 1 0 1 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1119 0 1 0 1 0 1 0 1 0 1
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1120 0 0 1 0 1 0 1 0 1 0
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1121 0 0 0 1 0 1 0 1 0 0"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1122 "PBM data used for disabled breakpoint icon.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1123
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1124 (defvar breakpoint-enabled-icon nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1125 "Icon for enabled breakpoint in display margin.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1126
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1127 (defvar breakpoint-disabled-icon nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1128 "Icon for disabled breakpoint in display margin.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1129
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1130 (declare-function define-fringe-bitmap "fringe.c"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1131 (bitmap bits &optional height width align))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1132
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1133 (and (display-images-p)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1134 ;; Bitmap for breakpoint in fringe
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1135 (define-fringe-bitmap 'breakpoint
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1136 "\x3c\x7e\xff\xff\xff\xff\x7e\x3c")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1137 ;; Bitmap for gud-overlay-arrow in fringe
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1138 (define-fringe-bitmap 'hollow-right-triangle
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1139 "\xe0\x90\x88\x84\x84\x88\x90\xe0"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1140
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1141 (defface breakpoint-enabled
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1142 '((t
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1143 :foreground "red1"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1144 :weight bold))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1145 "Face for enabled breakpoint icon in fringe."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1146 :group 'gdb)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1147
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1148 (defface breakpoint-disabled
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1149 '((((class color) (min-colors 88)) :foreground "grey70")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1150 ;; Ensure that on low-color displays that we end up something visible.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1151 (((class color) (min-colors 8) (background light))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1152 :foreground "black")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1153 (((class color) (min-colors 8) (background dark))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1154 :foreground "white")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1155 (((type tty) (class mono))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1156 :inverse-video t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1157 (t :background "gray"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1158 "Face for disabled breakpoint icon in fringe."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1159 :group 'gdb)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1160
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1161
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1162 (defun gdb-send (proc string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1163 "A comint send filter for gdb."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1164 (with-current-buffer gud-comint-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1165 (let ((inhibit-read-only t))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1166 (remove-text-properties (point-min) (point-max) '(face))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1167 ;; mimic <RET> key to repeat previous command in GDB
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1168 (if (not (string-match "^\\s+$" string))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1169 (setq gdb-last-command string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1170 (if gdb-last-command (setq string gdb-last-command)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1171 (if gdb-enable-debug
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1172 (push (cons 'mi-send (concat string "\n")) gdb-debug-log))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1173 (if (string-match "^-" string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1174 ;; MI command
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1175 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1176 (setq gdb-first-done-or-error t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1177 (process-send-string proc (concat string "\n")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1178 ;; CLI command
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1179 (if (string-match "\\\\$" string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1180 (setq gdb-continuation (concat gdb-continuation string "\n"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1181 (setq gdb-first-done-or-error t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1182 (process-send-string proc (concat "-interpreter-exec console \""
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1183 gdb-continuation string "\"\n"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1184 (setq gdb-continuation nil))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1185
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1186 (defun gdb-input (item)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1187 (if gdb-enable-debug (push (cons 'send-item item) gdb-debug-log))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1188 (setq gdb-token-number (1+ gdb-token-number))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1189 (setcar item (concat (number-to-string gdb-token-number) (car item)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1190 (push (cons gdb-token-number (car (cdr item))) gdb-handler-alist)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1191 (process-send-string (get-buffer-process gud-comint-buffer)
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
1192 (concat (car item) "\n")))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1193
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1194
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1195 (defcustom gud-gdb-command-name "gdb -i=mi"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1196 "Default command to execute an executable under the GDB debugger."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1197 :type 'string
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1198 :group 'gdb)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1199
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1200 (defun gdb-resync()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1201 (setq gud-running nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1202 (setq gdb-output-sink 'user)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1203 (setq gdb-pending-triggers nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1204
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1205 (defun gdb-update ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1206 "Update buffers showing status of debug session."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1207 (when gdb-first-prompt
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1208 (gdb-force-mode-line-update
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1209 (propertize "initializing..." 'face font-lock-variable-name-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1210 (gdb-init-1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1211 (setq gdb-first-prompt nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1212 (gdb-get-selected-frame)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1213 (gdb-invalidate-frames)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1214 ;; Regenerate breakpoints buffer in case it has been inadvertantly deleted.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1215 (gdb-get-buffer-create 'gdb-breakpoints-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1216 (gdb-invalidate-breakpoints)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1217 (gdb-invalidate-threads)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1218 (gdb-get-changed-registers)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1219 (gdb-invalidate-registers)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1220 (gdb-invalidate-locals)
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1221 (gdb-invalidate-memory)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1222 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1223 (dolist (var gdb-var-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1224 (setcar (nthcdr 5 var) nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1225 (gdb-var-update)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1226
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1227 ;; GUD displays the selected GDB frame. This might might not be the current
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1228 ;; GDB frame (after up, down etc). If no GDB frame is visible but the last
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1229 ;; visited breakpoint is, use that window.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1230 (defun gdb-display-source-buffer (buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1231 (let* ((last-window (if gud-last-last-frame
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1232 (get-buffer-window
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1233 (gud-find-file (car gud-last-last-frame)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1234 (source-window (or last-window
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1235 (if (and gdb-source-window
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1236 (window-live-p gdb-source-window))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1237 gdb-source-window))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1238 (when source-window
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1239 (setq gdb-source-window source-window)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1240 (set-window-buffer source-window buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1241 source-window))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1242
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1243 (defun gdb-car< (a b)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1244 (< (car a) (car b)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1245
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1246 (defvar gdbmi-record-list
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1247 '((gdb-gdb . "(gdb) \n")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1248 (gdb-done . "\\([0-9]*\\)\\^done,?\\(.*?\\)\n")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1249 (gdb-starting . "\\([0-9]*\\)\\^running\n")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1250 (gdb-error . "\\([0-9]*\\)\\^error,\\(.*?\\)\n")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1251 (gdb-console . "~\\(\".*?\"\\)\n")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1252 (gdb-internals . "&\\(\".*?\"\\)\n")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1253 (gdb-stopped . "\\*stopped,?\\(.*?\n\\)")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1254 (gdb-running . "\\*running,\\(.*?\n\\)")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1255 (gdb-thread-created . "=thread-created,\\(.*?\n\\)")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1256 (gdb-thread-exited . "=thread-exited,\\(.*?\n\\)")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1257
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1258 (defun gud-gdbmi-marker-filter (string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1259 "Filter GDB/MI output."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1260
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1261 ;; Record transactions if logging is enabled.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1262 (when gdb-enable-debug
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1263 (push (cons 'recv string) gdb-debug-log)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1264 (if (and gdb-debug-log-max
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1265 (> (length gdb-debug-log) gdb-debug-log-max))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1266 (setcdr (nthcdr (1- gdb-debug-log-max) gdb-debug-log) nil)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1267
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1268 ;; Recall the left over gud-marker-acc from last time
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1269 (setq gud-marker-acc (concat gud-marker-acc string))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1270
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1271 ;; Start accumulating output for the GUD buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1272 (setq gdb-filter-output "")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1273 (let ((output-record) (output-record-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1274
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1275 ;; Process all the complete markers in this chunk.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1276 (dolist (gdbmi-record gdbmi-record-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1277 (while (string-match (cdr gdbmi-record) gud-marker-acc)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1278 (push (list (match-beginning 0)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1279 (car gdbmi-record)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1280 (match-string 1 gud-marker-acc)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1281 (match-string 2 gud-marker-acc)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1282 (match-end 0))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1283 output-record-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1284 (setq gud-marker-acc
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1285 (concat (substring gud-marker-acc 0 (match-beginning 0))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1286 ;; Pad with spaces to preserve position.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1287 (make-string (length (match-string 0 gud-marker-acc)) 32)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1288 (substring gud-marker-acc (match-end 0))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1289
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1290 (setq output-record-list (sort output-record-list 'gdb-car<))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1291
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1292 (dolist (output-record output-record-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1293 (let ((record-type (cadr output-record))
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1294 (arg1 (nth 2 output-record))
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1295 (arg2 (nth 3 output-record)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1296 (if (eq record-type 'gdb-error)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1297 (gdb-done-or-error arg2 arg1 'error)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1298 (if (eq record-type 'gdb-done)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1299 (gdb-done-or-error arg2 arg1 'done)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1300 ;; Suppress "No registers." since GDB 6.8 and earlier duplicates MI
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1301 ;; error message on internal stream. Don't print to GUD buffer.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1302 (unless (and (eq record-type 'gdb-internals)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1303 (string-equal (read arg1) "No registers.\n"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1304 (funcall record-type arg1))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1305
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1306 (setq gdb-output-sink 'user)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1307 ;; Remove padding.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1308 (string-match "^ *" gud-marker-acc)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1309 (setq gud-marker-acc (substring gud-marker-acc (match-end 0)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1310
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1311 gdb-filter-output))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1312
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1313 (defun gdb-gdb (output-field))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1314 (defun gdb-thread-created (output-field))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1315 (defun gdb-thread-exited (output-field))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1316
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1317 (defun gdb-running (output-field)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1318 (setq gdb-inferior-status "running")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1319 (gdb-force-mode-line-update
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1320 (propertize gdb-inferior-status 'face font-lock-type-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1321 (setq gdb-active-process t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1322 (setq gud-running t))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1323
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1324 (defun gdb-starting (output-field)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1325 ;; CLI commands don't emit ^running at the moment so use gdb-running too.
103759
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1326 (gdb-input
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1327 (list "-data-list-register-names" 'gdb-get-register-names))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1328 (setq gdb-inferior-status "running")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1329 (gdb-force-mode-line-update
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1330 (propertize gdb-inferior-status 'face font-lock-type-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1331 (setq gdb-active-process t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1332 (setq gud-running t))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1333
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1334 ;; -break-insert -t didn't give a reason before gdb 6.9
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1335 (defconst gdb-stopped-regexp
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1336 "\\(reason=\"\\(.*?\\)\"\\)?\\(\\(,exit-code=.*?\\)*\n\\|.*?,file=\".*?\".*?,fullname=\"\\(.*?\\)\".*?,line=\"\\(.*?\\)\".*?\n\\)")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1337
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1338 (defun gdb-stopped (output-field)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1339 (setq gud-running nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1340 (string-match gdb-stopped-regexp output-field)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1341 (let ((reason (match-string 2 output-field))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1342 (file (match-string 5 output-field)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1343
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1344 ;;; Don't set gud-last-frame here as it's currently done in gdb-frame-handler
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1345 ;;; because synchronous GDB doesn't give these fields with CLI.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1346 ;;; (when file
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1347 ;;; (setq
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1348 ;;; ;; Extract the frame position from the marker.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1349 ;;; gud-last-frame (cons file
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1350 ;;; (string-to-number
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1351 ;;; (match-string 6 gud-marker-acc)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1352
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1353 (setq gdb-inferior-status (if reason reason "unknown"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1354 (gdb-force-mode-line-update
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1355 (propertize gdb-inferior-status 'face font-lock-warning-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1356 (if (string-equal reason "exited-normally")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1357 (setq gdb-active-process nil)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1358
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1359 (when gdb-first-done-or-error
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1360 (setq gdb-filter-output (concat gdb-filter-output gdb-prompt-name))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1361 (gdb-update)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1362 (setq gdb-first-done-or-error nil)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1363
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1364 ;; Remove the trimmings from log stream containing debugging messages
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1365 ;; being produced by GDB's internals, use warning face and send to GUD
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1366 ;; buffer.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1367 (defun gdb-internals (output-field)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1368 (setq gdb-filter-output
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1369 (gdb-concat-output
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1370 gdb-filter-output
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1371 (let ((error-message
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1372 (read output-field)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1373 (put-text-property
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1374 0 (length error-message)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1375 'face font-lock-warning-face
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1376 error-message)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1377 error-message))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1378
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1379 ;; Remove the trimmings from the console stream and send to GUD buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1380 ;; (frontend MI commands should not print to this stream)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1381 (defun gdb-console (output-field)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1382 (setq gdb-filter-output
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1383 (gdb-concat-output
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1384 gdb-filter-output
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1385 (read output-field))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1386
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1387 (defun gdb-done-or-error (output-field token-number type)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1388 (if (string-equal token-number "")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1389 ;; Output from command entered by user
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1390 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1391 (setq gdb-output-sink 'user)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1392 (setq token-number nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1393 ;; MI error - send to minibuffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1394 (when (eq type 'error)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1395 ;; Skip "msg=" from `output-field'
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1396 (message (read (substring output-field 4)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1397 ;; Don't send to the console twice. (If it is a console error
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1398 ;; it is also in the console stream.)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1399 (setq output-field nil)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1400 ;; Output from command from frontend.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1401 (setq gdb-output-sink 'emacs))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1402
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1403 (gdb-clear-partial-output)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1404 (when gdb-first-done-or-error
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1405 (unless (or token-number gud-running)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1406 (setq gdb-filter-output (concat gdb-filter-output gdb-prompt-name)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1407 (gdb-update)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1408 (setq gdb-first-done-or-error nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1409
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1410 (setq gdb-filter-output
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1411 (gdb-concat-output gdb-filter-output output-field))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1412
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1413 (if token-number
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1414 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1415 (with-current-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1416 (gdb-get-buffer-create 'gdb-partial-output-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1417 (funcall
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1418 (cdr (assoc (string-to-number token-number) gdb-handler-alist))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1419 (setq gdb-handler-alist
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1420 (assq-delete-all token-number gdb-handler-alist)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1421
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1422 (defun gdb-concat-output (so-far new)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1423 (let ((sink gdb-output-sink))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1424 (cond
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1425 ((eq sink 'user) (concat so-far new))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1426 ((eq sink 'emacs)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1427 (gdb-append-to-partial-output new)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1428 so-far))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1429
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1430 (defun gdb-append-to-partial-output (string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1431 (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1432 (goto-char (point-max))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1433 (insert string)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1434
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1435 (defun gdb-clear-partial-output ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1436 (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1437 (erase-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1438
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1439 (defun json-partial-output (&optional fix-key)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1440 "Parse gdb-partial-output-buffer with `json-read'.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1441
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1442 If FIX-KEY is non-nil, strip all \"FIX-KEY=\" occurences from
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1443 partial output. This is used to get rid of useless keys in lists
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1444 in MI messages, e.g.: [key=.., key=..]. -stack-list-frames and
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1445 -break-info are examples of MI commands which issue such
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1446 responses.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1447
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1448 Note that GDB/MI output syntax is different from JSON both
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1449 cosmetically and (in some cases) structurally, so correct results
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1450 are not guaranteed."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1451 (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1452 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1453 (while (re-search-forward (concat "[\\[,]\\(" fix-key "=\\)") nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1454 (replace-match "" nil nil nil 1))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1455 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1456 (insert "{")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1457 ;; Wrap field names in double quotes and replace equal sign with
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1458 ;; semicolon.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1459 ;; TODO: This breaks badly with foo= inside constants
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1460 (while (re-search-forward "\\([[:alpha:]-_]+\\)=" nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1461 (replace-match "\"\\1\":" nil nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1462 (goto-char (point-max))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1463 (insert "}")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1464 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1465 (let ((json-array-type 'list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1466 (json-read))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1467
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1468 (defun gdb-pad-string (string padding)
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1469 (format (concat "%" (number-to-string padding) "s") string))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1470
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1471 (defalias 'gdb-get-field 'bindat-get-field)
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1472
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1473 (defun gdb-get-many-fields (struct &rest fields)
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1474 "Return a list of FIELDS values from STRUCT."
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1475 (let ((values))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1476 (dolist (field fields values)
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1477 (setq values (append values (list (gdb-get-field struct field)))))))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1478
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1479 ;; NAME is the function name. DEMAND-PREDICATE tests if output is really needed.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1480 ;; GDB-COMMAND is a string of such. OUTPUT-HANDLER is the function bound to the
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1481 ;; current input.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1482
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1483 (defmacro def-gdb-auto-update-trigger (name demand-predicate gdb-command
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1484 output-handler)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1485 `(defun ,name (&optional ignored)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1486 (if (and ,demand-predicate
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1487 (not (member ',name
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1488 gdb-pending-triggers)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1489 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1490 (gdb-input
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1491 (list ,gdb-command ',output-handler))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1492 (push ',name gdb-pending-triggers)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1493
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1494 (defmacro def-gdb-auto-update-handler (name trigger buf-key custom-defun)
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1495 "Define a handler NAME for TRIGGER acting in BUF-KEY with CUSTOM-DEFUN.
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1496
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1497 Delete TRIGGER from `gdb-pending-triggers', switch to gdb BUF-KEY
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1498 buffer using `gdb-get-buffer', erase it and evalueat
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1499 CUSTOM-DEFUN."
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1500 `(defun ,name ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1501 (setq gdb-pending-triggers
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1502 (delq ',trigger
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1503 gdb-pending-triggers))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1504 (let ((buf (gdb-get-buffer ',buf-key)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1505 (and buf
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1506 (with-current-buffer buf
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1507 (let*((buffer-read-only nil))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1508 (erase-buffer)
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1509 (,custom-defun)))))))
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1510
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1511 (defmacro def-gdb-auto-updated-buffer (buf-key
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1512 trigger-name gdb-command
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1513 output-handler-name custom-defun)
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1514 "Define a trigger and its handler for buffers of type BUF-KEY.
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1515
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1516 TRIGGER-NAME trigger is defined to send GDB-COMMAND if BUF-KEY
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1517 exists.
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1518
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1519 OUTPUT-HANDLER-NAME handler uses customization of CUSTOM-DEFUN."
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1520 `(progn
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1521 (def-gdb-auto-update-trigger ,trigger-name
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1522 ;; The demand predicate:
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1523 (gdb-get-buffer ',buf-key)
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1524 ,gdb-command
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1525 ,output-handler-name)
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1526 (def-gdb-auto-update-handler ,output-handler-name
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1527 ,trigger-name ,buf-key ,custom-defun)))
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1528
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1529
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1530
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1531 ;; Breakpoint buffer : This displays the output of `-break-list'.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1532 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1533 (gdb-set-buffer-rules 'gdb-breakpoints-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1534 'gdb-breakpoints-buffer-name
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1535 'gdb-breakpoints-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1536
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1537 (def-gdb-auto-updated-buffer gdb-breakpoints-buffer
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
1538 gdb-invalidate-breakpoints "-break-list"
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1539 gdb-breakpoints-list-handler gdb-breakpoints-list-handler-custom)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1540
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1541 (defun gdb-breakpoints-list-handler-custom ()
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1542 (setq gdb-pending-triggers (delq 'gdb-invalidate-breakpoints
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1543 gdb-pending-triggers))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1544 (let ((breakpoints-list (gdb-get-field
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1545 (json-partial-output "bkpt")
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1546 'BreakpointTable 'body)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1547 (setq gdb-breakpoints-list breakpoints-list)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1548 (insert "Num\tType\t\tDisp\tEnb\tHits\tAddr What\n")
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1549 (dolist (breakpoint breakpoints-list)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1550 (insert
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1551 (concat
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1552 (gdb-get-field breakpoint 'number) "\t"
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1553 (gdb-get-field breakpoint 'type) "\t"
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1554 (gdb-get-field breakpoint 'disp) "\t"
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1555 (let ((flag (gdb-get-field breakpoint 'enabled)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1556 (if (string-equal flag "y")
103754
b186b013ff68 * progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom): y/n
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103753
diff changeset
1557 (propertize "y" 'face font-lock-warning-face)
b186b013ff68 * progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom): y/n
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103753
diff changeset
1558 (propertize "n" 'face font-lock-type-face))) "\t"
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1559 (gdb-get-field breakpoint 'times) "\t"
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1560 (gdb-get-field breakpoint 'addr)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1561 (let ((at (gdb-get-field breakpoint 'at)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1562 (cond ((not at)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1563 (progn
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1564 (insert
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1565 (concat " in "
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1566 (propertize (gdb-get-field breakpoint 'func)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1567 'face font-lock-function-name-face)))
103754
b186b013ff68 * progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom): y/n
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103753
diff changeset
1568 (gdb-insert-frame-location breakpoint)
b186b013ff68 * progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom): y/n
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103753
diff changeset
1569 (add-text-properties (line-beginning-position)
b186b013ff68 * progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom): y/n
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103753
diff changeset
1570 (line-end-position)
b186b013ff68 * progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom): y/n
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103753
diff changeset
1571 '(mouse-face highlight
b186b013ff68 * progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom): y/n
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103753
diff changeset
1572 help-echo "mouse-2, RET: visit breakpoint"))))
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1573 (at (insert (concat " " at)))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1574 (t (insert (gdb-get-field breakpoint 'original-location)))))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1575 (add-text-properties (line-beginning-position)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1576 (line-end-position)
103754
b186b013ff68 * progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom): y/n
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103753
diff changeset
1577 `(gdb-breakpoint ,breakpoint))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1578 (newline))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1579 (gdb-place-breakpoints)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1580
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1581 ;; Put breakpoint icons in relevant margins (even those set in the GUD buffer).
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1582 (defun gdb-place-breakpoints ()
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1583 (let ((flag) (bptno))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1584 ;; Remove all breakpoint-icons in source buffers but not assembler buffer.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1585 (dolist (buffer (buffer-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1586 (with-current-buffer buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1587 (if (and (eq gud-minor-mode 'gdbmi)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1588 (not (string-match "\\` ?\\*.+\\*\\'" (buffer-name))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1589 (gdb-remove-breakpoint-icons (point-min) (point-max)))))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1590 (dolist (breakpoint gdb-breakpoints-list)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1591 (let ((line (gdb-get-field breakpoint 'line)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1592 (when line
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1593 (let ((file (gdb-get-field breakpoint 'file))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1594 (flag (gdb-get-field breakpoint 'enabled))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1595 (bptno (gdb-get-field breakpoint 'number)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1596 (unless (file-exists-p file)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1597 (setq file (cdr (assoc bptno gdb-location-alist))))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1598 (if (and file
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1599 (not (string-equal file "File not found")))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1600 (with-current-buffer
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1601 (find-file-noselect file 'nowarn)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1602 (gdb-init-buffer)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1603 ;; Only want one breakpoint icon at each location.
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1604 (save-excursion
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1605 (goto-line (string-to-number line))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1606 (gdb-put-breakpoint-icon (string-equal flag "y") bptno)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1607 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
1608 (list (concat "list " file ":1")
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1609 'ignore))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1610 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
1611 (list "-file-list-exec-source-file"
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1612 `(lambda () (gdb-get-location
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1613 ,bptno ,line ,flag)))))))))))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1614
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1615 (defvar gdb-source-file-regexp "fullname=\"\\(.*?\\)\"")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1616
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1617 (defun gdb-get-location (bptno line flag)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1618 "Find the directory containing the relevant source file.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1619 Put in buffer and place breakpoint icon."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1620 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1621 (catch 'file-not-found
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1622 (if (re-search-forward gdb-source-file-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1623 (delete (cons bptno "File not found") gdb-location-alist)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1624 (push (cons bptno (match-string 1)) gdb-location-alist)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1625 (gdb-resync)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1626 (unless (assoc bptno gdb-location-alist)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1627 (push (cons bptno "File not found") gdb-location-alist)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1628 (message-box "Cannot find source file for breakpoint location.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1629 Add directory to search path for source files using the GDB command, dir."))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1630 (throw 'file-not-found nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1631 (with-current-buffer (find-file-noselect (match-string 1))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1632 (gdb-init-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1633 ;; only want one breakpoint icon at each location
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1634 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1635 (goto-line (string-to-number line))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1636 (gdb-put-breakpoint-icon (eq flag ?y) bptno)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1637
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1638 (add-hook 'find-file-hook 'gdb-find-file-hook)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1639
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1640 (defun gdb-find-file-hook ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1641 "Set up buffer for debugging if file is part of the source code
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1642 of the current session."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1643 (if (and (buffer-name gud-comint-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1644 ;; in case gud or gdb-ui is just loaded
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1645 gud-comint-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1646 (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1647 'gdbmi))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1648 (if (member buffer-file-name gdb-source-file-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1649 (with-current-buffer (find-buffer-visiting buffer-file-name)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1650 (gdb-init-buffer)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1651
103563
1c5f849edf58 Minor header format fixes.
Glenn Morris <rgm@gnu.org>
parents: 103554
diff changeset
1652 (declare-function gud-remove "gdb-mi" t t) ; gud-def
1c5f849edf58 Minor header format fixes.
Glenn Morris <rgm@gnu.org>
parents: 103554
diff changeset
1653 (declare-function gud-break "gdb-mi" t t) ; gud-def
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1654 (declare-function fringe-bitmaps-at-pos "fringe.c" (&optional pos window))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1655
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1656 (defun gdb-mouse-set-clear-breakpoint (event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1657 "Set/clear breakpoint in left fringe/margin at mouse click.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1658 If not in a source or disassembly buffer just set point."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1659 (interactive "e")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1660 (mouse-minibuffer-check event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1661 (let ((posn (event-end event)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1662 (with-selected-window (posn-window posn)
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
1663 (if (or (buffer-file-name) (eq major-mode 'gdb-disassembly-mode))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1664 (if (numberp (posn-point posn))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1665 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1666 (goto-char (posn-point posn))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1667 (if (or (posn-object posn)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1668 (eq (car (fringe-bitmaps-at-pos (posn-point posn)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1669 'breakpoint))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1670 (gud-remove nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1671 (gud-break nil)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1672 (posn-set-point posn))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1673
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1674 (defun gdb-mouse-toggle-breakpoint-margin (event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1675 "Enable/disable breakpoint in left margin with mouse click."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1676 (interactive "e")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1677 (mouse-minibuffer-check event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1678 (let ((posn (event-end event)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1679 (if (numberp (posn-point posn))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1680 (with-selected-window (posn-window posn)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1681 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1682 (goto-char (posn-point posn))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1683 (if (posn-object posn)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1684 (gud-basic-call
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1685 (let ((bptno (get-text-property
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1686 0 'gdb-bptno (car (posn-string posn)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1687 (concat
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1688 (if (get-text-property
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1689 0 'gdb-enabled (car (posn-string posn)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1690 "-break-disable "
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1691 "-break-enable ")
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
1692 bptno)))))))))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1693
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1694 (defun gdb-mouse-toggle-breakpoint-fringe (event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1695 "Enable/disable breakpoint in left fringe with mouse click."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1696 (interactive "e")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1697 (mouse-minibuffer-check event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1698 (let* ((posn (event-end event))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1699 (pos (posn-point posn))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1700 obj)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1701 (when (numberp pos)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1702 (with-selected-window (posn-window posn)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1703 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1704 (set-buffer (window-buffer (selected-window)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1705 (goto-char pos)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1706 (dolist (overlay (overlays-in pos pos))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1707 (when (overlay-get overlay 'put-break)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1708 (setq obj (overlay-get overlay 'before-string))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1709 (when (stringp obj)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1710 (gud-basic-call
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1711 (concat
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1712 (if (get-text-property 0 'gdb-enabled obj)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1713 "-break-disable "
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1714 "-break-enable ")
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
1715 (get-text-property 0 'gdb-bptno obj)))))))))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1716
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1717 (defun gdb-breakpoints-buffer-name ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1718 (with-current-buffer gud-comint-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1719 (concat "*breakpoints of " (gdb-get-target-string) "*")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1720
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1721 (def-gdb-display-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1722 gdb-display-breakpoints-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1723 'gdb-breakpoints-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1724 "Display status of user-settable breakpoints.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1725
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1726 (def-gdb-frame-for-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1727 gdb-frame-breakpoints-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1728 'gdb-breakpoints-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1729 "Display status of user-settable breakpoints in a new frame.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1730
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1731 (defvar gdb-breakpoints-mode-map
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1732 (let ((map (make-sparse-keymap))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1733 (menu (make-sparse-keymap "Breakpoints")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1734 (define-key menu [quit] '("Quit" . gdb-delete-frame-or-window))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1735 (define-key menu [goto] '("Goto" . gdb-goto-breakpoint))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1736 (define-key menu [delete] '("Delete" . gdb-delete-breakpoint))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1737 (define-key menu [toggle] '("Toggle" . gdb-toggle-breakpoint))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1738 (suppress-keymap map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1739 (define-key map [menu-bar breakpoints] (cons "Breakpoints" menu))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1740 (define-key map " " 'gdb-toggle-breakpoint)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1741 (define-key map "D" 'gdb-delete-breakpoint)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1742 ;; Don't bind "q" to kill-this-buffer as we need it for breakpoint icons.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1743 (define-key map "q" 'gdb-delete-frame-or-window)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1744 (define-key map "\r" 'gdb-goto-breakpoint)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1745 (define-key map [mouse-2] 'gdb-goto-breakpoint)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1746 (define-key map [follow-link] 'mouse-face)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1747 map))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1748
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1749 (defun gdb-delete-frame-or-window ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1750 "Delete frame if there is only one window. Otherwise delete the window."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1751 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1752 (if (one-window-p) (delete-frame)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1753 (delete-window)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1754
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1755 ;;from make-mode-line-mouse-map
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1756 (defun gdb-make-header-line-mouse-map (mouse function) "\
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1757 Return a keymap with single entry for mouse key MOUSE on the header line.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1758 MOUSE is defined to run function FUNCTION with no args in the buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1759 corresponding to the mode line clicked."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1760 (let ((map (make-sparse-keymap)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1761 (define-key map (vector 'header-line mouse) function)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1762 (define-key map (vector 'header-line 'down-mouse-1) 'ignore)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1763 map))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1764
103759
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1765 (defmacro gdb-propertize-header (name buffer help-echo mouse-face face)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1766 `(propertize ,name
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1767 'help-echo ,help-echo
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1768 'mouse-face ',mouse-face
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1769 'face ',face
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1770 'local-map
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1771 (gdb-make-header-line-mouse-map
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1772 'mouse-1
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1773 (lambda (event) (interactive "e")
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1774 (save-selected-window
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1775 (select-window (posn-window (event-start event)))
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1776 (set-window-dedicated-p (selected-window) nil)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1777 (switch-to-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1778 (gdb-get-buffer-create ',buffer))
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1779 (setq header-line-format(gdb-set-header ',buffer))
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1780 (set-window-dedicated-p (selected-window) t))))))
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1781
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1782 (defun gdb-set-header (buffer)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1783 (cond ((eq buffer 'gdb-locals-buffer)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1784 (list
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1785 (gdb-propertize-header "Locals" gdb-locals-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1786 nil nil mode-line)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1787 " "
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1788 (gdb-propertize-header "Registers" gdb-registers-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1789 "mouse-1: select" mode-line-highlight mode-line-inactive)))
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1790 ((eq buffer 'gdb-registers-buffer)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1791 (list
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1792 (gdb-propertize-header "Locals" gdb-locals-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1793 "mouse-1: select" mode-line-highlight mode-line-inactive)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1794 " "
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1795 (gdb-propertize-header "Registers" gdb-registers-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1796 nil nil mode-line)))
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1797 ((eq buffer 'gdb-breakpoints-buffer)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1798 (list
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1799 (gdb-propertize-header "Breakpoints" gdb-breakpoints-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1800 nil nil mode-line)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1801 " "
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1802 (gdb-propertize-header "Threads" gdb-threads-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1803 "mouse-1: select" mode-line-highlight mode-line-inactive)))
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1804 ((eq buffer 'gdb-threads-buffer)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1805 (list
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1806 (gdb-propertize-header "Breakpoints" gdb-breakpoints-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1807 "mouse-1: select" mode-line-highlight mode-line-inactive)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1808 " "
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1809 (gdb-propertize-header "Threads" gdb-threads-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1810 nil nil mode-line)))))
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
1811
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1812
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1813 ;; uses "-thread-info". Needs GDB 7.0 onwards.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1814 ;;; Threads view
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1815
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1816 (defun gdb-jump-to (file line)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1817 (find-file-other-window file)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1818 (goto-line line))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1819
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1820 (define-button-type 'gdb-file-button
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1821 'help-echo "Push to jump to source code"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1822 ; 'face 'bold
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1823 'action
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1824 (lambda (b)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1825 (gdb-jump-to (button-get b 'file)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1826 (button-get b 'line))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1827
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1828 (defun gdb-insert-file-location-button (file line)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1829 "Insert text button which allows jumping to FILE:LINE.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1830
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1831 FILE is a full path."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1832 (insert-text-button
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1833 (format "%s:%d" (file-name-nondirectory file) line)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1834 :type 'gdb-file-button
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1835 'file file
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1836 'line line))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1837
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1838 (defun gdb-threads-buffer-name ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1839 (concat "*threads of " (gdb-get-target-string) "*"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1840
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1841 (def-gdb-display-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1842 gdb-display-threads-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1843 'gdb-threads-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1844 "Display GDB threads.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1845
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1846 (def-gdb-frame-for-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1847 gdb-frame-threads-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1848 'gdb-threads-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1849 "Display GDB threads in a new frame.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1850
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1851 (gdb-set-buffer-rules 'gdb-threads-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1852 'gdb-threads-buffer-name
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1853 'gdb-threads-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1854
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1855 (def-gdb-auto-updated-buffer gdb-threads-buffer
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
1856 gdb-invalidate-threads "-thread-info"
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1857 gdb-thread-list-handler gdb-thread-list-handler-custom)
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1858
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1859
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1860 (defvar gdb-threads-font-lock-keywords
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1861 '(("in \\([^ ]+\\) (" (1 font-lock-function-name-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1862 (" \\(stopped\\) in " (1 font-lock-warning-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1863 ("\\(\\(\\sw\\|[_.]\\)+\\)=" (1 font-lock-variable-name-face)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1864 "Font lock keywords used in `gdb-threads-mode'.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1865
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1866 (defvar gdb-threads-mode-map
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1867 ;; TODO
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1868 (make-sparse-keymap))
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1869
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1870 (defun gdb-threads-mode ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1871 "Major mode for GDB threads.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1872
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1873 \\{gdb-threads-mode-map}"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1874 (kill-all-local-variables)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1875 (setq major-mode 'gdb-threads-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1876 (setq mode-name "Threads")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1877 (use-local-map gdb-threads-mode-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1878 (setq buffer-read-only t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1879 (buffer-disable-undo)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1880 (setq header-line-format gdb-breakpoints-header)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1881 (set (make-local-variable 'font-lock-defaults)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1882 '(gdb-threads-font-lock-keywords))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1883 (run-mode-hooks 'gdb-threads-mode-hook)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1884 'gdb-invalidate-threads)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1885
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1886 (defun gdb-thread-list-handler-custom ()
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1887 (let* ((res (json-partial-output))
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1888 (threads-list (gdb-get-field res 'threads)))
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1889 (dolist (thread threads-list)
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1890 (insert (apply 'format `("%s (%s) %s in %s "
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1891 ,@(gdb-get-many-fields thread 'id 'target-id 'state)
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1892 ,(gdb-get-field thread 'frame 'func))))
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1893 ;; Arguments
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1894 (insert "(")
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1895 (let ((args (gdb-get-field thread 'frame 'args)))
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1896 (dolist (arg args)
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1897 (insert (apply 'format `("%s=%s" ,@(gdb-get-many-fields arg 'name 'value)))))
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1898 (when args (kill-backward-chars 1)))
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
1899 (insert ")")
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1900 (gdb-insert-frame-location (gdb-get-field thread 'frame))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1901 (insert (format " at %s\n" (gdb-get-field thread 'frame 'addr))))))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1902
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1903
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
1904 ;;; Memory view
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1905
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1906 (defcustom gdb-memory-rows 8
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1907 "Number of data rows in memory window."
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1908 :type 'integer
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1909 :group 'gud
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1910 :version "23.2")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1911
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1912 (defcustom gdb-memory-columns 4
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1913 "Number of data columns in memory window."
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1914 :type 'integer
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1915 :group 'gud
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1916 :version "23.2")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1917
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1918 (defcustom gdb-memory-format "x"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1919 "Display format of data items in memory window."
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1920 :type '(choice (const :tag "Hexadecimal" "x")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1921 (const :tag "Signed decimal" "d")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1922 (const :tag "Unsigned decimal" "u")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1923 (const :tag "Octal" "o")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1924 (const :tag "Binary" "t"))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1925 :group 'gud
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1926 :version "22.1")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1927
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1928 (defcustom gdb-memory-unit 4
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1929 "Unit size of data items in memory window."
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1930 :type '(choice (const :tag "Byte" 1)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1931 (const :tag "Halfword" 2)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1932 (const :tag "Word" 4)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1933 (const :tag "Giant word" 8))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1934 :group 'gud
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1935 :version "23.2")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1936
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1937 (gdb-set-buffer-rules 'gdb-memory-buffer
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1938 'gdb-memory-buffer-name
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1939 'gdb-memory-mode)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1940
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1941 (def-gdb-auto-updated-buffer gdb-memory-buffer
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1942 gdb-invalidate-memory
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
1943 (format "-data-read-memory %s %s %d %d %d"
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1944 gdb-memory-address
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1945 gdb-memory-format
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1946 gdb-memory-unit
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1947 gdb-memory-rows
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1948 gdb-memory-columns)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1949 gdb-read-memory-handler
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1950 gdb-read-memory-custom)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1951
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1952 (defun gdb-memory-column-width (size format)
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1953 "Return length of string with memory unit of SIZE in FORMAT.
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1954
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1955 SIZE is in bytes, as in `gdb-memory-unit'. FORMAT is a string as
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1956 in `gdb-memory-format'."
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1957 (let ((format-base (cdr (assoc format
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1958 '(("x" . 16)
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1959 ("d" . 10) ("u" . 10)
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1960 ("o" . 8)
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1961 ("t" . 2))))))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1962 (if format-base
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1963 (let ((res (ceiling (log (expt 2.0 (* size 8)) format-base))))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1964 (cond ((string-equal format "x")
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1965 (+ 2 res)) ; hexadecimal numbers have 0x in front
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1966 ((or (string-equal format "d")
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1967 (string-equal format "o"))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1968 (1+ res))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1969 (t res)))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1970 (error "Unknown format"))))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1971
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1972 (defun gdb-read-memory-custom ()
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1973 (let* ((res (json-partial-output))
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1974 (err-msg (gdb-get-field res 'msg)))
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1975 (if (not err-msg)
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1976 (let ((memory (gdb-get-field res 'memory)))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1977 (setq gdb-memory-address (gdb-get-field res 'addr))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1978 (setq gdb-memory-next-page (gdb-get-field res 'next-page))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1979 (setq gdb-memory-prev-page (gdb-get-field res 'prev-page))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1980 (setq gdb-memory-last-address gdb-memory-address)
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1981 (dolist (row memory)
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1982 (insert (concat (gdb-get-field row 'addr) ":"))
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1983 (dolist (column (gdb-get-field row 'data))
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1984 (insert (gdb-pad-string column
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1985 (+ 2 (gdb-memory-column-width
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1986 gdb-memory-unit
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
1987 gdb-memory-format)))))
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1988 (newline)))
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
1989 ;; Show last page instead of empty buffer when out of bounds
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1990 (progn
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1991 (let ((gdb-memory-address gdb-memory-last-address))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1992 (gdb-invalidate-memory)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1993 (error err-msg))))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1994
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1995 (defvar gdb-memory-mode-map
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1996 (let ((map (make-sparse-keymap)))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1997 (suppress-keymap map t)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1998 (define-key map "q" 'kill-this-buffer)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
1999 (define-key map "n" 'gdb-memory-show-next-page)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2000 (define-key map "p" 'gdb-memory-show-previous-page)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2001 (define-key map "a" 'gdb-memory-set-address)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2002 (define-key map "t" 'gdb-memory-format-binary)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2003 (define-key map "o" 'gdb-memory-format-octal)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2004 (define-key map "u" 'gdb-memory-format-unsigned)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2005 (define-key map "d" 'gdb-memory-format-signed)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2006 (define-key map "x" 'gdb-memory-format-hexadecimal)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2007 (define-key map "b" 'gdb-memory-unit-byte)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2008 (define-key map "h" 'gdb-memory-unit-halfword)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2009 (define-key map "w" 'gdb-memory-unit-word)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2010 (define-key map "g" 'gdb-memory-unit-giant)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2011 (define-key map "R" 'gdb-memory-set-rows)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2012 (define-key map "C" 'gdb-memory-set-columns)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2013 map))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2014
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2015 (defun gdb-memory-set-address-event (event)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2016 "Handle a click on address field in memory buffer header."
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2017 (interactive "e")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2018 (save-selected-window
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2019 (select-window (posn-window (event-start event)))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2020 (gdb-memory-set-address)))
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2021
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2022 ;; Non-event version for use within keymap
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2023 (defun gdb-memory-set-address ()
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2024 "Set the start memory address."
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2025 (interactive)
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2026 (let ((arg (read-from-minibuffer "Memory address: ")))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2027 (setq gdb-memory-address arg))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2028 (gdb-invalidate-memory))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2029
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2030 (defmacro def-gdb-set-positive-number (name variable echo-string &optional doc)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2031 "Define a function NAME which reads new VAR value from minibuffer."
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2032 `(defun ,name (event)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2033 ,(when doc doc)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2034 (interactive "e")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2035 (save-selected-window
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2036 (select-window (posn-window (event-start event)))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2037 (let* ((arg (read-from-minibuffer ,echo-string))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2038 (count (string-to-number arg)))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2039 (if (<= count 0)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2040 (error "Positive number only")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2041 (customize-set-variable ',variable count)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2042 (gdb-invalidate-memory))))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2043
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2044 (def-gdb-set-positive-number
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2045 gdb-memory-set-rows
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2046 gdb-memory-rows
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2047 "Rows: "
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2048 "Set the number of data rows in memory window.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2049
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2050 (def-gdb-set-positive-number
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2051 gdb-memory-set-columns
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2052 gdb-memory-columns
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2053 "Columns: "
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2054 "Set the number of data columns in memory window.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2055
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2056 (defmacro def-gdb-memory-format (name format doc)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2057 "Define a function NAME to switch memory buffer to use FORMAT.
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2058
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2059 DOC is an optional documentation string."
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2060 `(defun ,name () ,(when doc doc)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2061 (interactive)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2062 (customize-set-variable 'gdb-memory-format ,format)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2063 (gdb-invalidate-memory)))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2064
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2065 (def-gdb-memory-format
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2066 gdb-memory-format-binary "t"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2067 "Set the display format to binary.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2068
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2069 (def-gdb-memory-format
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2070 gdb-memory-format-octal "o"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2071 "Set the display format to octal.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2072
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2073 (def-gdb-memory-format
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2074 gdb-memory-format-unsigned "u"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2075 "Set the display format to unsigned decimal.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2076
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2077 (def-gdb-memory-format
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2078 gdb-memory-format-signed "d"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2079 "Set the display format to decimal.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2080
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2081 (def-gdb-memory-format
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2082 gdb-memory-format-hexadecimal "x"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2083 "Set the display format to hexadecimal.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2084
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2085 (defvar gdb-memory-format-map
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2086 (let ((map (make-sparse-keymap)))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2087 (define-key map [header-line down-mouse-3] 'gdb-memory-format-menu-1)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2088 map)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2089 "Keymap to select format in the header line.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2090
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2091 (defvar gdb-memory-format-menu (make-sparse-keymap "Format")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2092 "Menu of display formats in the header line.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2093
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2094 (define-key gdb-memory-format-menu [binary]
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2095 '(menu-item "Binary" gdb-memory-format-binary
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2096 :button (:radio . (equal gdb-memory-format "t"))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2097 (define-key gdb-memory-format-menu [octal]
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2098 '(menu-item "Octal" gdb-memory-format-octal
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2099 :button (:radio . (equal gdb-memory-format "o"))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2100 (define-key gdb-memory-format-menu [unsigned]
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2101 '(menu-item "Unsigned Decimal" gdb-memory-format-unsigned
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2102 :button (:radio . (equal gdb-memory-format "u"))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2103 (define-key gdb-memory-format-menu [signed]
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2104 '(menu-item "Signed Decimal" gdb-memory-format-signed
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2105 :button (:radio . (equal gdb-memory-format "d"))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2106 (define-key gdb-memory-format-menu [hexadecimal]
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2107 '(menu-item "Hexadecimal" gdb-memory-format-hexadecimal
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2108 :button (:radio . (equal gdb-memory-format "x"))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2109
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2110 (defun gdb-memory-format-menu (event)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2111 (interactive "@e")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2112 (x-popup-menu event gdb-memory-format-menu))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2113
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2114 (defun gdb-memory-format-menu-1 (event)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2115 (interactive "e")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2116 (save-selected-window
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2117 (select-window (posn-window (event-start event)))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2118 (let* ((selection (gdb-memory-format-menu event))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2119 (binding (and selection (lookup-key gdb-memory-format-menu
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2120 (vector (car selection))))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2121 (if binding (call-interactively binding)))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2122
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2123 (defmacro def-gdb-memory-unit (name unit-size doc)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2124 "Define a function NAME to switch memory unit size to UNIT-SIZE.
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2125
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2126 DOC is an optional documentation string."
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2127 `(defun ,name () ,(when doc doc)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2128 (interactive)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2129 (customize-set-variable 'gdb-memory-unit ,unit-size)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2130 (gdb-invalidate-memory)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2131
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2132 (def-gdb-memory-unit gdb-memory-unit-giant 8
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2133 "Set the unit size to giant words (eight bytes).")
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2134
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2135 (def-gdb-memory-unit gdb-memory-unit-word 4
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2136 "Set the unit size to words (four bytes).")
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2137
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2138 (def-gdb-memory-unit gdb-memory-unit-halfword 2
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2139 "Set the unit size to halfwords (two bytes).")
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2140
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2141 (def-gdb-memory-unit gdb-memory-unit-byte 1
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2142 "Set the unit size to bytes.")
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2143
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2144 (defmacro def-gdb-memory-show-page (name address-var &optional doc)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2145 "Define a function NAME which show new address in memory buffer.
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2146
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2147 The defined function switches Memory buffer to show address
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2148 stored in ADDRESS-VAR variable.
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2149
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2150 DOC is an optional documentation string."
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2151 `(defun ,name
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2152 ,(when doc doc)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2153 (interactive)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2154 (let ((gdb-memory-address ,address-var))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2155 (gdb-invalidate-memory))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2156
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2157 (def-gdb-memory-show-page gdb-memory-show-previous-page
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2158 gdb-memory-prev-page)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2159
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2160 (def-gdb-memory-show-page gdb-memory-show-next-page
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2161 gdb-memory-next-page)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2162
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2163 (defvar gdb-memory-unit-map
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2164 (let ((map (make-sparse-keymap)))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2165 (define-key map [header-line down-mouse-3] 'gdb-memory-unit-menu-1)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2166 map)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2167 "Keymap to select units in the header line.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2168
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2169 (defvar gdb-memory-unit-menu (make-sparse-keymap "Unit")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2170 "Menu of units in the header line.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2171
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2172 (define-key gdb-memory-unit-menu [giantwords]
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2173 '(menu-item "Giant words" gdb-memory-unit-giant
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2174 :button (:radio . (equal gdb-memory-unit 8))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2175 (define-key gdb-memory-unit-menu [words]
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2176 '(menu-item "Words" gdb-memory-unit-word
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2177 :button (:radio . (equal gdb-memory-unit 4))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2178 (define-key gdb-memory-unit-menu [halfwords]
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2179 '(menu-item "Halfwords" gdb-memory-unit-halfword
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2180 :button (:radio . (equal gdb-memory-unit 2))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2181 (define-key gdb-memory-unit-menu [bytes]
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2182 '(menu-item "Bytes" gdb-memory-unit-byte
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2183 :button (:radio . (equal gdb-memory-unit 1))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2184
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2185 (defun gdb-memory-unit-menu (event)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2186 (interactive "@e")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2187 (x-popup-menu event gdb-memory-unit-menu))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2188
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2189 (defun gdb-memory-unit-menu-1 (event)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2190 (interactive "e")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2191 (save-selected-window
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2192 (select-window (posn-window (event-start event)))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2193 (let* ((selection (gdb-memory-unit-menu event))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2194 (binding (and selection (lookup-key gdb-memory-unit-menu
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2195 (vector (car selection))))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2196 (if binding (call-interactively binding)))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2197
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2198 ;;from make-mode-line-mouse-map
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2199 (defun gdb-make-header-line-mouse-map (mouse function) "\
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2200 Return a keymap with single entry for mouse key MOUSE on the header line.
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2201 MOUSE is defined to run function FUNCTION with no args in the buffer
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2202 corresponding to the mode line clicked."
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2203 (let ((map (make-sparse-keymap)))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2204 (define-key map (vector 'header-line mouse) function)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2205 (define-key map (vector 'header-line 'down-mouse-1) 'ignore)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2206 map))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2207
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2208 (defvar gdb-memory-font-lock-keywords
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2209 '(;; <__function.name+n>
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2210 ("<\\(\\(\\sw\\|[_.]\\)+\\)\\(\\+[0-9]+\\)?>" (1 font-lock-function-name-face))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2211 )
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2212 "Font lock keywords used in `gdb-memory-mode'.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2213
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2214 (defvar gdb-memory-header
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2215 '(:eval
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2216 (concat
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2217 "Start address["
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2218 (propertize "-"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2219 'face font-lock-warning-face
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2220 'help-echo "mouse-1: decrement address"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2221 'mouse-face 'mode-line-highlight
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2222 'local-map (gdb-make-header-line-mouse-map
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2223 'mouse-1
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2224 #'gdb-memory-show-previous-page))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2225 "|"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2226 (propertize "+"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2227 'face font-lock-warning-face
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2228 'help-echo "mouse-1: increment address"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2229 'mouse-face 'mode-line-highlight
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2230 'local-map (gdb-make-header-line-mouse-map
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2231 'mouse-1
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2232 #'gdb-memory-show-next-page))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2233 "]: "
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2234 (propertize gdb-memory-address
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2235 'face font-lock-warning-face
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2236 'help-echo "mouse-1: set start address"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2237 'mouse-face 'mode-line-highlight
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2238 'local-map (gdb-make-header-line-mouse-map
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2239 'mouse-1
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2240 #'gdb-memory-set-address-event))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2241 " Rows: "
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2242 (propertize (number-to-string gdb-memory-rows)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2243 'face font-lock-warning-face
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2244 'help-echo "mouse-1: set number of columns"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2245 'mouse-face 'mode-line-highlight
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2246 'local-map (gdb-make-header-line-mouse-map
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2247 'mouse-1
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2248 #'gdb-memory-set-rows))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2249 " Columns: "
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2250 (propertize (number-to-string gdb-memory-columns)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2251 'face font-lock-warning-face
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2252 'help-echo "mouse-1: set number of columns"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2253 'mouse-face 'mode-line-highlight
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2254 'local-map (gdb-make-header-line-mouse-map
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2255 'mouse-1
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2256 #'gdb-memory-set-columns))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2257 " Display Format: "
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2258 (propertize gdb-memory-format
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2259 'face font-lock-warning-face
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2260 'help-echo "mouse-3: select display format"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2261 'mouse-face 'mode-line-highlight
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2262 'local-map gdb-memory-format-map)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2263 " Unit Size: "
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2264 (propertize (number-to-string gdb-memory-unit)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2265 'face font-lock-warning-face
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2266 'help-echo "mouse-3: select unit size"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2267 'mouse-face 'mode-line-highlight
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2268 'local-map gdb-memory-unit-map)))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2269 "Header line used in `gdb-memory-mode'.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2270
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2271 (defun gdb-memory-mode ()
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2272 "Major mode for examining memory.
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2273
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2274 \\{gdb-memory-mode-map}"
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2275 (kill-all-local-variables)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2276 (setq major-mode 'gdb-memory-mode)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2277 (setq mode-name "Memory")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2278 (use-local-map gdb-memory-mode-map)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2279 (setq buffer-read-only t)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2280 (setq header-line-format gdb-memory-header)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2281 (set (make-local-variable 'font-lock-defaults)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2282 '(gdb-memory-font-lock-keywords))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2283 (run-mode-hooks 'gdb-memory-mode-hook)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2284 'gdb-invalidate-memory)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2285
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2286 (defun gdb-memory-buffer-name ()
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2287 (with-current-buffer gud-comint-buffer
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2288 (concat "*memory of " (gdb-get-target-string) "*")))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2289
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2290 (def-gdb-display-buffer
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2291 gdb-display-memory-buffer
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2292 'gdb-memory-buffer
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2293 "Display memory contents.")
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2294
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2295 (defun gdb-frame-memory-buffer ()
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2296 "Display memory contents in a new frame."
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2297 (interactive)
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2298 (let* ((special-display-regexps (append special-display-regexps '(".*")))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2299 (special-display-frame-alist
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2300 `((left-fringe . 0)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2301 (right-fringe . 0)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2302 (width . 83)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2303 ,@gdb-frame-parameters)))
103748
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2304 (display-buffer (gdb-get-buffer-create 'gdb-memory-buffer))))
5a1769adb8af Port memory buffer from gdb-ui.el
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103563
diff changeset
2305
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2306
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2307 ;;; Disassembly view
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2308
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2309 (defun gdb-disassembly-buffer-name ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2310 (concat "*disassembly of " (gdb-get-target-string) "*"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2311
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2312 (def-gdb-display-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2313 gdb-display-disassembly-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2314 'gdb-disassembly-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2315 "Display disassembly for current stack frame.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2316
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2317 (def-gdb-frame-for-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2318 gdb-frame-disassembly-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2319 'gdb-disassembly-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2320 "Display disassembly in a new frame.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2321
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2322 (gdb-set-buffer-rules 'gdb-disassembly-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2323 'gdb-disassembly-buffer-name
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2324 'gdb-disassembly-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2325
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2326 (def-gdb-auto-update-trigger gdb-invalidate-disassembly
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2327 (gdb-get-buffer 'gdb-disassembly-buffer)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2328 (let ((file (or gdb-selected-file gdb-main-file))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2329 (line (or gdb-selected-line 1)))
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2330 (if (not file) (error "Disassembly invalidated with no file selected.")
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
2331 (format "-data-disassemble -f %s -l %d -n -1 -- 0" file line)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2332 gdb-disassembly-handler)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2333
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2334 (def-gdb-auto-update-handler
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2335 gdb-disassembly-handler
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2336 gdb-invalidate-disassembly
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2337 gdb-disassembly-buffer
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2338 gdb-disassembly-handler-custom)
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2339
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2340 (defvar gdb-disassembly-font-lock-keywords
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2341 '(;; <__function.name+n>
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2342 ("<\\(\\(\\sw\\|[_.]\\)+\\)\\(\\+[0-9]+\\)?>"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2343 (1 font-lock-function-name-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2344 ;; 0xNNNNNNNN <__function.name+n>: opcode
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2345 ("^0x[0-9a-f]+ \\(<\\(\\(\\sw\\|[_.]\\)+\\)\\+[0-9]+>\\)?:[ \t]+\\(\\sw+\\)"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2346 (4 font-lock-keyword-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2347 ;; %register(at least i386)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2348 ("%\\sw+" . font-lock-variable-name-face)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2349 ("^\\(Dump of assembler code for function\\) \\(.+\\):"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2350 (1 font-lock-comment-face)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2351 (2 font-lock-function-name-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2352 ("^\\(End of assembler dump\\.\\)" . font-lock-comment-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2353 "Font lock keywords used in `gdb-disassembly-mode'.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2354
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2355 (defvar gdb-disassembly-mode-map
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2356 ;; TODO
103759
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2357 (let ((map (make-sparse-keymap)))
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2358 (suppress-keymap map)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2359 (define-key map "q" 'kill-this-buffer)
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2360 map))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2361
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2362 (defun gdb-disassembly-mode ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2363 "Major mode for GDB disassembly information.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2364
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2365 \\{gdb-disassembly-mode-map}"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2366 (kill-all-local-variables)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2367 (setq major-mode 'gdb-disassembly-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2368 (setq mode-name "Disassembly")
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2369 (add-to-list 'overlay-arrow-variable-list 'gdb-overlay-arrow-position)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2370 (setq fringes-outside-margins t)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2371 (setq gdb-overlay-arrow-position (make-marker))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2372 (use-local-map gdb-disassembly-mode-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2373 (setq buffer-read-only t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2374 (buffer-disable-undo)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2375 (set (make-local-variable 'font-lock-defaults)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2376 '(gdb-disassembly-font-lock-keywords))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2377 (run-mode-hooks 'gdb-disassembly-mode-hook)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2378 'gdb-invalidate-disassembly)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2379
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2380 (defun gdb-disassembly-handler-custom ()
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2381 (let* ((res (json-partial-output))
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2382 (instructions (gdb-get-field res 'asm_insns))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2383 (pos 1))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2384 (let* ((last-instr (car (last instructions)))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2385 (column-padding (+ 2 (string-width
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2386 (apply 'format
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2387 `("<%s+%s>:"
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2388 ,@(gdb-get-many-fields last-instr 'func-name 'offset)))))))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2389 (dolist (instr instructions)
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2390 ;; Put overlay arrow
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2391 (when (string-equal (gdb-get-field instr 'address)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2392 gdb-pc-address)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2393 (progn
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2394 (setq pos (point))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2395 (setq fringe-indicator-alist
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2396 (if (string-equal gdb-frame-number "0")
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2397 nil
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2398 '((overlay-arrow . hollow-right-triangle))))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2399 (set-marker gdb-overlay-arrow-position (point))))
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2400 (insert
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2401 (concat
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2402 (gdb-get-field instr 'address)
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2403 " "
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2404 (gdb-pad-string (apply 'format `("<%s+%s>:" ,@(gdb-get-many-fields instr 'func-name 'offset)))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2405 (- column-padding))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2406 (gdb-get-field instr 'inst)
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2407 "\n")))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2408 (gdb-disassembly-place-breakpoints)
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2409 (let ((window (get-buffer-window (current-buffer) 0)))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2410 (set-window-point window pos)))))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2411
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2412 (defun gdb-disassembly-place-breakpoints ()
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2413 (gdb-remove-breakpoint-icons (point-min) (point-max))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2414 (dolist (breakpoint gdb-breakpoints-list)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2415 (let ((bptno (gdb-get-field breakpoint 'number))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2416 (flag (gdb-get-field breakpoint 'enabled))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2417 (address (gdb-get-field breakpoint 'addr)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2418 (save-excursion
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2419 (goto-char (point-min))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2420 (if (re-search-forward (concat "^" address) nil t)
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2421 (gdb-put-breakpoint-icon (string-equal flag "y") bptno))))))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2422
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2423
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2424 ;;; Breakpoints view
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2425 (defvar gdb-breakpoints-header
103759
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2426 (list
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2427 (gdb-propertize-header "Breakpoints" gdb-breakpoints-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2428 nil nil mode-line)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2429 " "
103759
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2430 (gdb-propertize-header "Threads" gdb-threads-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2431 "mouse-1: select" mode-line-highlight mode-line-inactive)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2432
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2433 (defun gdb-breakpoints-mode ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2434 "Major mode for gdb breakpoints.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2435
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2436 \\{gdb-breakpoints-mode-map}"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2437 (kill-all-local-variables)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2438 (setq major-mode 'gdb-breakpoints-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2439 (setq mode-name "Breakpoints")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2440 (use-local-map gdb-breakpoints-mode-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2441 (setq buffer-read-only t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2442 (buffer-disable-undo)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2443 (setq header-line-format gdb-breakpoints-header)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2444 (run-mode-hooks 'gdb-breakpoints-mode-hook)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2445 'gdb-invalidate-breakpoints)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2446
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2447 (defun gdb-toggle-breakpoint ()
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2448 "Enable/disable breakpoint at current line of breakpoints buffer."
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2449 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2450 (save-excursion
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2451 (beginning-of-line)
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2452 (let ((breakpoint (get-text-property (point) 'gdb-breakpoint)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2453 (if breakpoint
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2454 (gud-basic-call
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2455 (concat (if (string-equal "y" (gdb-get-field breakpoint 'enabled))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2456 "-break-disable "
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2457 "-break-enable ")
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2458 (gdb-get-field breakpoint 'number)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2459 (error "Not recognized as break/watchpoint line")))))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2460
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2461 (defun gdb-delete-breakpoint ()
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2462 "Delete the breakpoint at current line of breakpoints buffer."
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2463 (interactive)
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2464 (save-excursion
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2465 (beginning-of-line)
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2466 (let ((breakpoint (get-text-property (point) 'gdb-breakpoint)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2467 (if breakpoint
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2468 (gud-basic-call (concat "-break-delete " (gdb-get-field breakpoint 'number)))
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2469 (error "Not recognized as break/watchpoint line")))))
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2470
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2471 (defun gdb-goto-breakpoint (&optional event)
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2472 "Go to the location of breakpoint at current line of
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2473 breakpoints buffer."
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2474 (interactive (list last-input-event))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2475 (if event (posn-set-point (event-end event)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2476 ;; Hack to stop gdb-goto-breakpoint displaying in GUD buffer.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2477 (let ((window (get-buffer-window gud-comint-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2478 (if window (save-selected-window (select-window window))))
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2479 (save-excursion
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2480 (beginning-of-line)
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2481 (let ((breakpoint (get-text-property (point) 'gdb-breakpoint)))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2482 (if breakpoint
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2483 (let ((bptno (gdb-get-field breakpoint 'number))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2484 (file (gdb-get-field breakpoint 'file))
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2485 (line (gdb-get-field breakpoint 'line)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2486 (save-selected-window
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2487 (let* ((buffer (find-file-noselect
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2488 (if (file-exists-p file) file
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2489 (cdr (assoc bptno gdb-location-alist)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2490 (window (or (gdb-display-source-buffer buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2491 (display-buffer buffer))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2492 (setq gdb-source-window window)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2493 (with-current-buffer buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2494 (goto-line (string-to-number line))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2495 (set-window-point window (point))))))
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2496 (error "Not recognized as break/watchpoint line")))))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2497
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2498
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2499 ;; Frames buffer. This displays a perpetually correct bactrack trace.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2500 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2501 (gdb-set-buffer-rules 'gdb-stack-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2502 'gdb-stack-buffer-name
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2503 'gdb-frames-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2504
103753
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2505 (def-gdb-auto-updated-buffer gdb-stack-buffer
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2506 gdb-invalidate-frames
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
2507 "-stack-list-frames"
103753
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2508 gdb-stack-list-frames-handler
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2509 gdb-stack-list-frames-custom)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2510
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2511 (defun gdb-insert-frame-location (frame)
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2512 "Insert \"of file:line\" button or library name for structure FRAME.
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2513
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2514 FRAME must have either \"file\" and \"line\" members or \"from\"
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2515 member."
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
2516 (let ((file (gdb-get-field frame 'fullname))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
2517 (line (gdb-get-field frame 'line))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
2518 (from (gdb-get-field frame 'from)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2519 (cond (file
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2520 ;; Filename with line number
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2521 (insert " of ")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2522 (gdb-insert-file-location-button
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2523 file (string-to-number line)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2524 ;; Library
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2525 (from (insert (format " of %s" from))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2526
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2527 (defun gdb-stack-list-frames-custom ()
103753
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2528 (let* ((res (json-partial-output "frame"))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2529 (stack (gdb-get-field res 'stack)))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2530 (dolist (frame (nreverse stack))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2531 (insert (apply 'format `("%s in %s" ,@(gdb-get-many-fields frame 'level 'func))))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2532 (gdb-insert-frame-location frame)
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2533 (newline))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2534 (save-excursion
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2535 (goto-char (point-min))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2536 (forward-line 1)
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2537 (while (< (point) (point-max))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2538 (add-text-properties (point-at-bol) (1+ (point-at-bol))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2539 '(mouse-face highlight
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2540 help-echo "mouse-2, RET: Select frame"))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2541 (beginning-of-line)
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2542 (when (and (looking-at "^[0-9]+\\s-+\\S-+\\s-+\\(\\S-+\\)")
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2543 (equal (match-string 1) gdb-selected-frame))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2544 (if (> (car (window-fringes)) 0)
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2545 (progn
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2546 (or gdb-stack-position
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2547 (setq gdb-stack-position (make-marker)))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2548 (set-marker gdb-stack-position (point)))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2549 (let ((bl (point-at-bol)))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2550 (put-text-property bl (+ bl 4)
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2551 'face '(:inverse-video t)))))
bd7c204d425b * progmodes/gdb-mi.el (gdb-stack-list-frames-handler): Rewritten
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103752
diff changeset
2552 (forward-line 1)))))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2553
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2554 (defun gdb-stack-buffer-name ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2555 (with-current-buffer gud-comint-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2556 (concat "*stack frames of " (gdb-get-target-string) "*")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2557
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2558 (def-gdb-display-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2559 gdb-display-stack-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2560 'gdb-stack-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2561 "Display backtrace of current stack.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2562
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2563 (def-gdb-frame-for-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2564 gdb-frame-stack-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2565 'gdb-stack-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2566 "Display backtrace of current stack in a new frame.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2567
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2568 (defvar gdb-frames-mode-map
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2569 (let ((map (make-sparse-keymap)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2570 (suppress-keymap map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2571 (define-key map "q" 'kill-this-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2572 (define-key map "\r" 'gdb-frames-select)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2573 (define-key map [mouse-2] 'gdb-frames-select)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2574 (define-key map [follow-link] 'mouse-face)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2575 map))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2576
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2577 (defvar gdb-frames-font-lock-keywords
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2578 '(("in \\([^ ]+\\) of " (1 font-lock-function-name-face)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2579 "Font lock keywords used in `gdb-frames-mode'.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2580
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2581 (defun gdb-frames-mode ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2582 "Major mode for gdb call stack.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2583
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2584 \\{gdb-frames-mode-map}"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2585 (kill-all-local-variables)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2586 (setq major-mode 'gdb-frames-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2587 (setq mode-name "Frames")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2588 (setq gdb-stack-position nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2589 (add-to-list 'overlay-arrow-variable-list 'gdb-stack-position)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2590 (setq truncate-lines t) ;; Make it easier to see overlay arrow.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2591 (setq buffer-read-only t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2592 (buffer-disable-undo)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2593 (use-local-map gdb-frames-mode-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2594 (set (make-local-variable 'font-lock-defaults)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2595 '(gdb-frames-font-lock-keywords))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2596 (run-mode-hooks 'gdb-frames-mode-hook)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2597 'gdb-invalidate-frames)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2598
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2599 (defun gdb-get-frame-number ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2600 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2601 (end-of-line)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2602 (let* ((pos (re-search-backward "^\\([0-9]+\\)" nil t))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2603 (n (or (and pos (match-string-no-properties 1)) "0")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2604 n)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2605
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2606 (defun gdb-frames-select (&optional event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2607 "Select the frame and display the relevant source."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2608 (interactive (list last-input-event))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2609 (if event (posn-set-point (event-end event)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2610 (gud-basic-call (concat "-stack-select-frame " (gdb-get-frame-number))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2611
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2612
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2613 ;; Locals buffer.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2614 ;; uses "-stack-list-locals --simple-values". Needs GDB 6.1 onwards.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2615 (gdb-set-buffer-rules 'gdb-locals-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2616 'gdb-locals-buffer-name
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2617 'gdb-locals-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2618
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2619 (def-gdb-auto-update-trigger gdb-invalidate-locals
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2620 (gdb-get-buffer 'gdb-locals-buffer)
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
2621 "-stack-list-locals --simple-values"
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2622 gdb-stack-list-locals-handler)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2623
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2624 (defconst gdb-stack-list-locals-regexp
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2625 (concat "name=\"\\(.*?\\)\",type=\"\\(.*?\\)\""))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2626
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2627 (defvar gdb-locals-watch-map
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2628 (let ((map (make-sparse-keymap)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2629 (suppress-keymap map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2630 (define-key map "\r" 'gud-watch)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2631 (define-key map [mouse-2] 'gud-watch)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2632 map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2633 "Keymap to create watch expression of a complex data type local variable.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2634
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2635 (defvar gdb-edit-locals-map-1
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2636 (let ((map (make-sparse-keymap)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2637 (suppress-keymap map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2638 (define-key map "\r" 'gdb-edit-locals-value)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2639 (define-key map [mouse-2] 'gdb-edit-locals-value)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2640 map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2641 "Keymap to edit value of a simple data type local variable.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2642
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2643 (defun gdb-edit-locals-value (&optional event)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2644 "Assign a value to a variable displayed in the locals buffer."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2645 (interactive (list last-input-event))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2646 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2647 (if event (posn-set-point (event-end event)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2648 (beginning-of-line)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2649 (let* ((var (current-word))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2650 (value (read-string (format "New value (%s): " var))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2651 (gud-basic-call
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2652 (concat "-gdb-set variable " var " = " value)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2653
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2654 ;; Dont display values of arrays or structures.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2655 ;; These can be expanded using gud-watch.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2656 (defun gdb-stack-list-locals-handler nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2657 (setq gdb-pending-triggers (delq 'gdb-invalidate-locals
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2658 gdb-pending-triggers))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2659 (let (local locals-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2660 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2661 (while (re-search-forward gdb-stack-list-locals-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2662 (let ((local (list (match-string 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2663 (match-string 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2664 nil)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2665 (if (looking-at ",value=\\(\".*\"\\)}")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2666 (setcar (nthcdr 2 local) (read (match-string 1))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2667 (push local locals-list)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2668 (let ((buf (gdb-get-buffer 'gdb-locals-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2669 (and buf (with-current-buffer buf
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2670 (let* ((window (get-buffer-window buf 0))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2671 (start (window-start window))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2672 (p (window-point window))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2673 (buffer-read-only nil) (name) (value))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2674 (erase-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2675 (dolist (local locals-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2676 (setq name (car local))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2677 (setq value (nth 2 local))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2678 (if (or (not value)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2679 (string-match "\\0x" value))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2680 (add-text-properties 0 (length name)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2681 `(mouse-face highlight
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2682 help-echo "mouse-2: create watch expression"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2683 local-map ,gdb-locals-watch-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2684 name)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2685 (add-text-properties 0 (length value)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2686 `(mouse-face highlight
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2687 help-echo "mouse-2: edit value"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2688 local-map ,gdb-edit-locals-map-1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2689 value))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2690 (insert
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2691 (concat name "\t" (nth 1 local)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2692 "\t" (nth 2 local) "\n")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2693 (set-window-start window start)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2694 (set-window-point window p)))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2695
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2696 (defvar gdb-locals-header
103759
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2697 (list
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2698 (gdb-propertize-header "Locals" gdb-locals-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2699 nil nil mode-line)
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2700 " "
103759
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2701 (gdb-propertize-header "Registers" gdb-registers-buffer
b4080ae429fb (gdb-init-1): Move sending
Nick Roberts <nickrob@snap.net.nz>
parents: 103755
diff changeset
2702 "mouse-1: select" mode-line-highlight mode-line-inactive)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2703
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2704 (defvar gdb-locals-mode-map
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2705 (let ((map (make-sparse-keymap)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2706 (suppress-keymap map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2707 (define-key map "q" 'kill-this-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2708 map))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2709
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2710 (defun gdb-locals-mode ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2711 "Major mode for gdb locals.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2712
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2713 \\{gdb-locals-mode-map}"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2714 (kill-all-local-variables)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2715 (setq major-mode 'gdb-locals-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2716 (setq mode-name (concat "Locals:" gdb-selected-frame))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2717 (setq buffer-read-only t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2718 (buffer-disable-undo)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2719 (setq header-line-format gdb-locals-header)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2720 (use-local-map gdb-locals-mode-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2721 (set (make-local-variable 'font-lock-defaults)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2722 '(gdb-locals-font-lock-keywords))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2723 (run-mode-hooks 'gdb-locals-mode-hook)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2724 'gdb-invalidate-locals)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2725
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2726 (defun gdb-locals-buffer-name ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2727 (with-current-buffer gud-comint-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2728 (concat "*locals of " (gdb-get-target-string) "*")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2729
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2730 (def-gdb-display-buffer
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2731 gdb-display-locals-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2732 'gdb-locals-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2733 "Display local variables of current stack and their values.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2734
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2735 (def-gdb-frame-for-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2736 gdb-frame-locals-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2737 'gdb-locals-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2738 "Display local variables of current stack and their values in a new frame.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2739
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2740
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2741 ;; Registers buffer.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2742 ;;
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2743 (gdb-set-buffer-rules 'gdb-registers-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2744 'gdb-registers-buffer-name
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2745 'gdb-registers-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2746
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2747 (def-gdb-auto-update-trigger gdb-invalidate-registers
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2748 (gdb-get-buffer 'gdb-registers-buffer)
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
2749 "-data-list-register-values x"
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2750 gdb-data-list-register-values-handler)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2751
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2752 (defconst gdb-data-list-register-values-regexp
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2753 "number=\"\\(.*?\\)\",value=\"\\(.*?\\)\"")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2754
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2755 (defun gdb-data-list-register-values-handler ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2756 (setq gdb-pending-triggers (delq 'gdb-invalidate-registers
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2757 gdb-pending-triggers))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2758 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2759 (if (re-search-forward gdb-error-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2760 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2761 (let ((match nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2762 (setq match (match-string 1))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2763 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2764 (let ((buffer-read-only nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2765 (erase-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2766 (insert match)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2767 (goto-char (point-min))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2768 (let ((register-list (reverse gdb-register-names))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2769 (register nil) (register-string nil) (register-values nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2770 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2771 (while (re-search-forward gdb-data-list-register-values-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2772 (setq register (pop register-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2773 (setq register-string (concat register "\t" (match-string 2) "\n"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2774 (if (member (match-string 1) gdb-changed-registers)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2775 (put-text-property 0 (length register-string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2776 'face 'font-lock-warning-face
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2777 register-string))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2778 (setq register-values
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2779 (concat register-values register-string)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2780 (let ((buf (gdb-get-buffer 'gdb-registers-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2781 (with-current-buffer buf
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2782 (let ((p (window-point (get-buffer-window buf 0)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2783 (buffer-read-only nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2784 (erase-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2785 (insert register-values)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2786 (set-window-point (get-buffer-window buf 0) p))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2787 (gdb-data-list-register-values-custom))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2788
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2789 (defun gdb-data-list-register-values-custom ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2790 (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2791 (save-excursion
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2792 (let ((buffer-read-only nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2793 bl)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2794 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2795 (while (< (point) (point-max))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2796 (setq bl (line-beginning-position))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2797 (when (looking-at "^[^\t]+")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2798 (put-text-property bl (match-end 0)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2799 'face font-lock-variable-name-face))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2800 (forward-line 1))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2801
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2802 (defvar gdb-registers-mode-map
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2803 (let ((map (make-sparse-keymap)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2804 (suppress-keymap map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2805 (define-key map "q" 'kill-this-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2806 map))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2807
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2808 (defun gdb-registers-mode ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2809 "Major mode for gdb registers.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2810
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2811 \\{gdb-registers-mode-map}"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2812 (kill-all-local-variables)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2813 (setq major-mode 'gdb-registers-mode)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2814 (setq mode-name "Registers")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2815 (setq header-line-format gdb-locals-header)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2816 (setq buffer-read-only t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2817 (buffer-disable-undo)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2818 (use-local-map gdb-registers-mode-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2819 (run-mode-hooks 'gdb-registers-mode-hook)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2820 'gdb-invalidate-registers)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2821
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2822 (defun gdb-registers-buffer-name ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2823 (with-current-buffer gud-comint-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2824 (concat "*registers of " (gdb-get-target-string) "*")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2825
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2826 (def-gdb-display-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2827 gdb-display-registers-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2828 'gdb-registers-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2829 "Display integer register contents.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2830
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2831 (def-gdb-frame-for-buffer
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2832 gdb-frame-registers-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2833 'gdb-registers-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2834 "Display integer register contents in a new frame.")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2835
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2836 ;; Needs GDB 6.4 onwards (used to fail with no stack).
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2837 (defun gdb-get-changed-registers ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2838 (if (and (gdb-get-buffer 'gdb-registers-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2839 (not (member 'gdb-get-changed-registers gdb-pending-triggers)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2840 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2841 (gdb-input
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2842 (list
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
2843 "-data-list-changed-registers"
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2844 'gdb-get-changed-registers-handler))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2845 (push 'gdb-get-changed-registers gdb-pending-triggers))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2846
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2847 (defconst gdb-data-list-register-names-regexp "\"\\(.*?\\)\"")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2848
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2849 (defun gdb-get-changed-registers-handler ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2850 (setq gdb-pending-triggers
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2851 (delq 'gdb-get-changed-registers gdb-pending-triggers))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2852 (setq gdb-changed-registers nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2853 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2854 (while (re-search-forward gdb-data-list-register-names-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2855 (push (match-string 1) gdb-changed-registers)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2856
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2857 (defun gdb-get-register-names ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2858 "Create a list of register names."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2859 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2860 (setq gdb-register-names nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2861 (while (re-search-forward gdb-data-list-register-names-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2862 (push (match-string 1) gdb-register-names)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2863
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2864
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2865 (defun gdb-get-source-file-list ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2866 "Create list of source files for current GDB session.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2867 If buffers already exist for any of these files, gud-minor-mode
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2868 is set in them."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2869 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2870 (while (re-search-forward gdb-source-file-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2871 (push (match-string 1) gdb-source-file-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2872 (dolist (buffer (buffer-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2873 (with-current-buffer buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2874 (when (member buffer-file-name gdb-source-file-list)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2875 (gdb-init-buffer))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2876 (gdb-force-mode-line-update
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2877 (propertize "ready" 'face font-lock-variable-name-face)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2878
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2879 (defun gdb-get-selected-frame ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2880 (if (not (member 'gdb-get-selected-frame gdb-pending-triggers))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2881 (progn
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2882 (gdb-input
103755
a1a6e341fa6e * progmodes/gdb-mi.el (gdb-input): Add trailing newline to command.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103754
diff changeset
2883 (list "-stack-info-frame" 'gdb-frame-handler))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2884 (push 'gdb-get-selected-frame
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2885 gdb-pending-triggers))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2886
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2887 (defun gdb-frame-handler ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2888 (setq gdb-pending-triggers
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2889 (delq 'gdb-get-selected-frame gdb-pending-triggers))
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
2890 (let ((frame (gdb-get-field (json-partial-output) 'frame)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2891 (when frame
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
2892 (setq gdb-frame-number (gdb-get-field frame 'level))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2893 (setq gdb-pc-address (gdb-get-field frame 'addr))
103749
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
2894 (setq gdb-selected-frame (gdb-get-field frame 'func))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
2895 (setq gdb-selected-file (gdb-get-field frame 'fullname))
f3eef698a354 gdb-mi.el: Now using bindat-get-field instead of fadr functions.
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103748
diff changeset
2896 (let ((line (gdb-get-field frame 'line)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2897 (setq gdb-selected-line (or (and line (string-to-number line))
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2898 nil)) ; don't fail if line is nil
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2899 (when line ; obey the current file only if we have line info
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2900 (setq gud-last-frame (cons gdb-selected-file gdb-selected-line))
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2901 (gud-display-frame)))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2902 (if (gdb-get-buffer 'gdb-locals-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2903 (with-current-buffer (gdb-get-buffer 'gdb-locals-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2904 (setq mode-name (concat "Locals:" gdb-selected-frame))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2905 (if (gdb-get-buffer 'gdb-disassembly-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2906 (with-current-buffer (gdb-get-buffer 'gdb-disassembly-buffer)
103752
dcd3d86fcf81 * progmodes/gdb-mi.el (gdb-init-1): Disassembly buffer mode name
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103751
diff changeset
2907 (setq mode-name (concat "Disassembly:" gdb-selected-frame))))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2908 (if gud-overlay-arrow-position
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2909 (let ((buffer (marker-buffer gud-overlay-arrow-position))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2910 (position (marker-position gud-overlay-arrow-position)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2911 (when buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2912 (with-current-buffer buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2913 (setq fringe-indicator-alist
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2914 (if (string-equal gdb-frame-number "0")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2915 nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2916 '((overlay-arrow . hollow-right-triangle))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2917 (setq gud-overlay-arrow-position (make-marker))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2918 (set-marker gud-overlay-arrow-position position)))))
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2919 (when gdb-selected-line
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2920 (gdb-invalidate-disassembly)))))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2921
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2922 (defvar gdb-prompt-name-regexp "value=\"\\(.*?\\)\"")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2923
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2924 (defun gdb-get-prompt ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2925 "Find prompt for GDB session."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2926 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2927 (setq gdb-prompt-name nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2928 (re-search-forward gdb-prompt-name-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2929 (setq gdb-prompt-name (match-string 1))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2930 ;; Insert first prompt.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2931 (setq gdb-filter-output (concat gdb-filter-output gdb-prompt-name)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2932
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2933 ;;;; Window management
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2934 (defun gdb-display-buffer (buf dedicated &optional frame)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2935 (let ((answer (get-buffer-window buf (or frame 0))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2936 (if answer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2937 (display-buffer buf nil (or frame 0)) ;Deiconify the frame if necessary.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2938 (let ((window (get-lru-window)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2939 (if (eq (buffer-local-value 'gud-minor-mode (window-buffer window))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2940 'gdbmi)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2941 (let* ((largest (get-largest-window))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2942 (cur-size (window-height largest)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2943 (setq answer (split-window largest))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2944 (set-window-buffer answer buf)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2945 (set-window-dedicated-p answer dedicated)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2946 answer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2947 (set-window-buffer window buf)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2948 window)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2949
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2950
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2951 ;;; Shared keymap initialization:
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2952
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2953 (let ((menu (make-sparse-keymap "GDB-Windows")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2954 (define-key gud-menu-map [displays]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2955 `(menu-item "GDB-Windows" ,menu
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2956 :visible (eq gud-minor-mode 'gdbmi)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2957 (define-key menu [gdb] '("Gdb" . gdb-display-gdb-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2958 (define-key menu [threads] '("Threads" . gdb-display-threads-buffer))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2959 (define-key menu [memory] '("Memory" . gdb-display-memory-buffer))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2960 (define-key menu [disassembly]
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2961 '("Disassembly" . gdb-display-disassembly-buffer))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2962 (define-key menu [registers] '("Registers" . gdb-display-registers-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2963 (define-key menu [inferior]
103779
d8f620ade0dc (gdb): Remove description of
Nick Roberts <nickrob@snap.net.nz>
parents: 103759
diff changeset
2964 '("Separate IO" . gdb-display-separate-io-buffer))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2965 (define-key menu [locals] '("Locals" . gdb-display-locals-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2966 (define-key menu [frames] '("Stack" . gdb-display-stack-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2967 (define-key menu [breakpoints]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2968 '("Breakpoints" . gdb-display-breakpoints-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2969
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2970 (let ((menu (make-sparse-keymap "GDB-Frames")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2971 (define-key gud-menu-map [frames]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2972 `(menu-item "GDB-Frames" ,menu
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2973 :visible (eq gud-minor-mode 'gdbmi)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2974 (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2975 (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer))
103751
47e338b0e07b * progmodes/gdb-mi.el (gdb-init-1): Set correct mode name for
Dmitry Dzhus <dima@sphinx.net.ru>
parents: 103749
diff changeset
2976 (define-key menu [memory] '("Memory" . gdb-frame-memory-buffer))
103522
b9003818f4a3 Pull further modified changes from Dmitry's repository (http://sphinx.net.ru/hg/gdb-mi/).
Nick Roberts <nickrob@snap.net.nz>
parents: 103504
diff changeset
2977 (define-key menu [disassembly] '("Disassembly" . gdb-frame-disassembly-buffer))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2978 (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2979 (define-key menu [inferior]
103779
d8f620ade0dc (gdb): Remove description of
Nick Roberts <nickrob@snap.net.nz>
parents: 103759
diff changeset
2980 '("Separate IO" . gdb-frame-separate-io-buffer))
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2981 (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2982 (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2983 (define-key menu [breakpoints]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2984 '("Breakpoints" . gdb-frame-breakpoints-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2985
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2986 (let ((menu (make-sparse-keymap "GDB-MI")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2987 (define-key gud-menu-map [mi]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2988 `(menu-item "GDB-MI" ,menu :visible (eq gud-minor-mode 'gdbmi)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2989 (define-key menu [gdb-customize]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2990 '(menu-item "Customize" (lambda () (interactive) (customize-group 'gdb))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2991 :help "Customize Gdb Graphical Mode options."))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2992 (define-key menu [gdb-many-windows]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2993 '(menu-item "Display Other Windows" gdb-many-windows
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2994 :help "Toggle display of locals, stack and breakpoint information"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2995 :button (:toggle . gdb-many-windows)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2996 (define-key menu [gdb-restore-windows]
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2997 '(menu-item "Restore Window Layout" gdb-restore-windows
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2998 :help "Restore standard layout for debug session.")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
2999
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3000 (defun gdb-frame-gdb-buffer ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3001 "Display GUD buffer in a new frame."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3002 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3003 (let ((special-display-regexps (append special-display-regexps '(".*")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3004 (special-display-frame-alist
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3005 (remove '(menu-bar-lines) (remove '(tool-bar-lines)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3006 gdb-frame-parameters)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3007 (same-window-regexps nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3008 (display-buffer gud-comint-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3009
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3010 (defun gdb-display-gdb-buffer ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3011 "Display GUD buffer."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3012 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3013 (let ((same-window-regexps nil))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3014 (select-window (display-buffer gud-comint-buffer nil 0))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3015
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3016 (defun gdb-set-window-buffer (name)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3017 (set-window-buffer (selected-window) (get-buffer name))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3018 (set-window-dedicated-p (selected-window) t))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3019
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3020 (defun gdb-setup-windows ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3021 "Layout the window pattern for `gdb-many-windows'."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3022 (gdb-display-locals-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3023 (gdb-display-stack-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3024 (delete-other-windows)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3025 (gdb-display-breakpoints-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3026 (delete-other-windows)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3027 ; Don't dedicate.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3028 (pop-to-buffer gud-comint-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3029 (split-window nil ( / ( * (window-height) 3) 4))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3030 (split-window nil ( / (window-height) 3))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3031 (split-window-horizontally)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3032 (other-window 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3033 (gdb-set-window-buffer (gdb-locals-buffer-name))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3034 (other-window 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3035 (switch-to-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3036 (if gud-last-last-frame
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3037 (gud-find-file (car gud-last-last-frame))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3038 (if gdb-main-file
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3039 (gud-find-file gdb-main-file)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3040 ;; Put buffer list in window if we
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3041 ;; can't find a source file.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3042 (list-buffers-noselect))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3043 (setq gdb-source-window (selected-window))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3044 (when gdb-use-separate-io-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3045 (split-window-horizontally)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3046 (other-window 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3047 (gdb-set-window-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3048 (gdb-get-buffer-create 'gdb-inferior-io)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3049 (other-window 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3050 (gdb-set-window-buffer (gdb-stack-buffer-name))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3051 (split-window-horizontally)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3052 (other-window 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3053 (gdb-set-window-buffer (gdb-breakpoints-buffer-name))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3054 (other-window 1))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3055
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3056 (defcustom gdb-many-windows nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3057 "If nil just pop up the GUD buffer unless `gdb-show-main' is t.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3058 In this case it starts with two windows: one displaying the GUD
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3059 buffer and the other with the source file with the main routine
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3060 of the debugged program. Non-nil means display the layout shown for
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3061 `gdb'."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3062 :type 'boolean
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3063 :group 'gdb
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3064 :version "22.1")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3065
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3066 (defun gdb-many-windows (arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3067 "Toggle the number of windows in the basic arrangement.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3068 With arg, display additional buffers iff arg is positive."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3069 (interactive "P")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3070 (setq gdb-many-windows
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3071 (if (null arg)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3072 (not gdb-many-windows)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3073 (> (prefix-numeric-value arg) 0)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3074 (message (format "Display of other windows %sabled"
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3075 (if gdb-many-windows "en" "dis")))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3076 (if (and gud-comint-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3077 (buffer-name gud-comint-buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3078 (condition-case nil
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3079 (gdb-restore-windows)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3080 (error nil))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3081
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3082 (defun gdb-restore-windows ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3083 "Restore the basic arrangement of windows used by gdb.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3084 This arrangement depends on the value of `gdb-many-windows'."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3085 (interactive)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3086 (pop-to-buffer gud-comint-buffer) ;Select the right window and frame.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3087 (delete-other-windows)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3088 (if gdb-many-windows
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3089 (gdb-setup-windows)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3090 (when (or gud-last-last-frame gdb-show-main)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3091 (split-window)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3092 (other-window 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3093 (switch-to-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3094 (if gud-last-last-frame
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3095 (gud-find-file (car gud-last-last-frame))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3096 (gud-find-file gdb-main-file)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3097 (setq gdb-source-window (selected-window))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3098 (other-window 1))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3099
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3100 (defun gdb-reset ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3101 "Exit a debugging session cleanly.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3102 Kills the gdb buffers, and resets variables and the source buffers."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3103 (dolist (buffer (buffer-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3104 (unless (eq buffer gud-comint-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3105 (with-current-buffer buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3106 (if (eq gud-minor-mode 'gdbmi)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3107 (if (string-match "\\` ?\\*.+\\*\\'" (buffer-name))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3108 (kill-buffer nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3109 (gdb-remove-breakpoint-icons (point-min) (point-max) t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3110 (setq gud-minor-mode nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3111 (kill-local-variable 'tool-bar-map)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3112 (kill-local-variable 'gdb-define-alist))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3113 (setq gdb-overlay-arrow-position nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3114 (setq overlay-arrow-variable-list
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3115 (delq 'gdb-overlay-arrow-position overlay-arrow-variable-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3116 (setq fringe-indicator-alist '((overlay-arrow . right-triangle)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3117 (setq gdb-stack-position nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3118 (setq overlay-arrow-variable-list
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3119 (delq 'gdb-stack-position overlay-arrow-variable-list))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3120 (if (boundp 'speedbar-frame) (speedbar-timer-fn))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3121 (setq gud-running nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3122 (setq gdb-active-process nil)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3123 (remove-hook 'after-save-hook 'gdb-create-define-alist t))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3124
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3125 (defun gdb-get-source-file ()
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3126 "Find the source file where the program starts and display it with related
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3127 buffers, if required."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3128 (goto-char (point-min))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3129 (if (re-search-forward gdb-source-file-regexp nil t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3130 (setq gdb-main-file (match-string 1)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3131 (if gdb-many-windows
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3132 (gdb-setup-windows)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3133 (gdb-get-buffer-create 'gdb-breakpoints-buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3134 (if gdb-show-main
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3135 (let ((pop-up-windows t))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3136 (display-buffer (gud-find-file gdb-main-file))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3137
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3138 ;;from put-image
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3139 (defun gdb-put-string (putstring pos &optional dprop &rest sprops)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3140 "Put string PUTSTRING in front of POS in the current buffer.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3141 PUTSTRING is displayed by putting an overlay into the current buffer with a
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3142 `before-string' string that has a `display' property whose value is
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3143 PUTSTRING."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3144 (let ((string (make-string 1 ?x))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3145 (buffer (current-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3146 (setq putstring (copy-sequence putstring))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3147 (let ((overlay (make-overlay pos pos buffer))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3148 (prop (or dprop
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3149 (list (list 'margin 'left-margin) putstring))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3150 (put-text-property 0 1 'display prop string)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3151 (if sprops
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3152 (add-text-properties 0 1 sprops string))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3153 (overlay-put overlay 'put-break t)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3154 (overlay-put overlay 'before-string string))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3155
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3156 ;;from remove-images
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3157 (defun gdb-remove-strings (start end &optional buffer)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3158 "Remove strings between START and END in BUFFER.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3159 Remove only strings that were put in BUFFER with calls to `gdb-put-string'.
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3160 BUFFER nil or omitted means use the current buffer."
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3161 (unless buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3162 (setq buffer (current-buffer)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3163 (dolist (overlay (overlays-in start end))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3164 (when (overlay-get overlay 'put-break)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3165 (delete-overlay overlay))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3166
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3167 (defun gdb-put-breakpoint-icon (enabled bptno)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3168 (let ((start (- (line-beginning-position) 1))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3169 (end (+ (line-end-position) 1))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3170 (putstring (if enabled "B" "b"))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3171 (source-window (get-buffer-window (current-buffer) 0)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3172 (add-text-properties
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3173 0 1 '(help-echo "mouse-1: clear bkpt, mouse-3: enable/disable bkpt")
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3174 putstring)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3175 (if enabled
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3176 (add-text-properties
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3177 0 1 `(gdb-bptno ,bptno gdb-enabled t) putstring)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3178 (add-text-properties
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3179 0 1 `(gdb-bptno ,bptno gdb-enabled nil) putstring))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3180 (gdb-remove-breakpoint-icons start end)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3181 (if (display-images-p)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3182 (if (>= (or left-fringe-width
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3183 (if source-window (car (window-fringes source-window)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3184 gdb-buffer-fringe-width) 8)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3185 (gdb-put-string
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3186 nil (1+ start)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3187 `(left-fringe breakpoint
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3188 ,(if enabled
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3189 'breakpoint-enabled
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3190 'breakpoint-disabled))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3191 'gdb-bptno bptno
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3192 'gdb-enabled enabled)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3193 (when (< left-margin-width 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3194 (save-current-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3195 (setq left-margin-width 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3196 (if source-window
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3197 (set-window-margins
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3198 source-window
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3199 left-margin-width right-margin-width))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3200 (put-image
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3201 (if enabled
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3202 (or breakpoint-enabled-icon
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3203 (setq breakpoint-enabled-icon
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3204 (find-image `((:type xpm :data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3205 ,breakpoint-xpm-data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3206 :ascent 100 :pointer hand)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3207 (:type pbm :data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3208 ,breakpoint-enabled-pbm-data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3209 :ascent 100 :pointer hand)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3210 (or breakpoint-disabled-icon
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3211 (setq breakpoint-disabled-icon
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3212 (find-image `((:type xpm :data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3213 ,breakpoint-xpm-data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3214 :conversion disabled
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3215 :ascent 100 :pointer hand)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3216 (:type pbm :data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3217 ,breakpoint-disabled-pbm-data
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3218 :ascent 100 :pointer hand))))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3219 (+ start 1)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3220 putstring
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3221 'left-margin))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3222 (when (< left-margin-width 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3223 (save-current-buffer
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3224 (setq left-margin-width 2)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3225 (let ((window (get-buffer-window (current-buffer) 0)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3226 (if window
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3227 (set-window-margins
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3228 window left-margin-width right-margin-width)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3229 (gdb-put-string
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3230 (propertize putstring
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3231 'face (if enabled 'breakpoint-enabled 'breakpoint-disabled))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3232 (1+ start)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3233
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3234 (defun gdb-remove-breakpoint-icons (start end &optional remove-margin)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3235 (gdb-remove-strings start end)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3236 (if (display-images-p)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3237 (remove-images start end))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3238 (when remove-margin
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3239 (setq left-margin-width 0)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3240 (let ((window (get-buffer-window (current-buffer) 0)))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3241 (if window
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3242 (set-window-margins
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3243 window left-margin-width right-margin-width)))))
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3244
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3245 (provide 'gdb-mi)
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3246
103554
84379ac80754 Add arch tagline
Miles Bader <miles@gnu.org>
parents: 103522
diff changeset
3247 ;; arch-tag: 1b41ea2b-f364-4cec-8f35-e02e4fe01912
103504
b2b747edcf7e * progmodes/gdb-ui.el: Replace with ...
Nick Roberts <nickrob@snap.net.nz>
parents:
diff changeset
3248 ;;; gdb-mi.el ends here