Mercurial > emacs
comparison lisp/gdb-ui.el @ 48685:19bf840bede8
Replace uses of (gdb-get-instance-buffer 'gdba) and
gdb-proc with gud-comint-buffer instead.
(gdb-proc): Remove.
(def-gdb-var): Simplify.
(gdb-get-create-instance-buffer): Avoid make-variable-buffer-local.
Set gud-comint-buffer as well as gud-minor-mode and tool-bar-map.
(gdb-goto-bp-this-line): Select the window while doing the goto-line.
(gdb-info-locals-handler): Avoid replace-regexp.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Thu, 05 Dec 2002 21:45:11 +0000 |
parents | a74dd42cf01d |
children | 81dc78298a54 |
comparison
equal
deleted
inserted
replaced
48684:9f1f766e9675 | 48685:19bf840bede8 |
---|---|
34 (defvar gdb-main-or-pc nil "Initialisation for Assembler buffer.") | 34 (defvar gdb-main-or-pc nil "Initialisation for Assembler buffer.") |
35 (defvar gdb-current-address nil) | 35 (defvar gdb-current-address nil) |
36 (defvar gdb-display-in-progress nil) | 36 (defvar gdb-display-in-progress nil) |
37 (defvar gdb-dive nil) | 37 (defvar gdb-dive nil) |
38 (defvar gdb-first-time nil) | 38 (defvar gdb-first-time nil) |
39 (defvar gdb-proc nil "The process associated with gdb.") | |
40 | 39 |
41 ;;;###autoload | 40 ;;;###autoload |
42 (defun gdba (command-line) | 41 (defun gdba (command-line) |
43 "Run gdb on program FILE in buffer *gdb-FILE*. | 42 "Run gdb on program FILE in buffer *gdb-FILE*. |
44 The directory containing FILE becomes the initial working directory | 43 The directory containing FILE becomes the initial working directory |
118 (setq gdb-main-or-pc "main") | 117 (setq gdb-main-or-pc "main") |
119 (setq gdb-current-address nil) | 118 (setq gdb-current-address nil) |
120 (setq gdb-display-in-progress nil) | 119 (setq gdb-display-in-progress nil) |
121 (setq gdb-dive nil) | 120 (setq gdb-dive nil) |
122 | 121 |
123 (setq gdb-proc (get-buffer-process (current-buffer))) | |
124 (gdb-make-instance) | 122 (gdb-make-instance) |
125 (gdb-clear-inferior-io) | 123 (gdb-clear-inferior-io) |
126 | 124 |
127 ;; find source file and compilation directory here | 125 ;; find source file and compilation directory here |
128 (gdb-instance-enqueue-idle-input (list "server list\n" 'ignore)) | 126 (gdb-instance-enqueue-idle-input (list "server list\n" 'ignore)) |
179 (name (intern (concat "gdb-" root)))) | 177 (name (intern (concat "gdb-" root)))) |
180 `(progn | 178 `(progn |
181 (defvar ,name ,default ,doc) | 179 (defvar ,name ,default ,doc) |
182 (if (not (memq ',name gdb-instance-variables)) | 180 (if (not (memq ',name gdb-instance-variables)) |
183 (push ',name gdb-instance-variables)) | 181 (push ',name gdb-instance-variables)) |
184 ,(and accessor | 182 (defun ,accessor () |
185 `(defun ,accessor () | 183 (buffer-local-value ',name gud-comint-buffer)) |
186 (let ((buffer (gdb-get-instance-buffer 'gdba))) | 184 (defun ,setter (val) |
187 (and buffer (buffer-local-value ',name buffer))))) | 185 (with-current-buffer gud-comint-buffer |
188 ,(and setter | 186 (setq ,name val)))))) |
189 `(defun ,setter (val) | |
190 (let ((buffer (gdb-get-instance-buffer 'gdba))) | |
191 (and buffer (with-current-buffer buffer | |
192 (setq ,name val))))))))) | |
193 | 187 |
194 (def-gdb-var buffer-type nil | 188 (def-gdb-var buffer-type nil |
195 "One of the symbols bound in gdb-instance-buffer-rules") | 189 "One of the symbols bound in gdb-instance-buffer-rules") |
196 | 190 |
197 (def-gdb-var burst "" | 191 (def-gdb-var burst "" |
233 "A list of trigger functions that have run later than their output | 227 "A list of trigger functions that have run later than their output |
234 handlers.") | 228 handlers.") |
235 | 229 |
236 (defun in-gdb-instance-context (form) | 230 (defun in-gdb-instance-context (form) |
237 "Funcall FORM in the GUD buffer." | 231 "Funcall FORM in the GUD buffer." |
238 (save-excursion | 232 (with-current-buffer gud-comint-buffer |
239 (set-buffer (gdb-get-instance-buffer 'gdba)) | |
240 (funcall form))) | 233 (funcall form))) |
241 | 234 |
242 ;; end of instance vars | 235 ;; end of instance vars |
243 | 236 |
244 (defun gdb-make-instance () | 237 (defun gdb-make-instance () |
245 "Create a gdb instance object from a gdb process." | 238 "Create a gdb instance object from the current buffer." |
246 (with-current-buffer (process-buffer gdb-proc) | 239 (mapc 'make-local-variable gdb-instance-variables) |
247 (mapc 'make-local-variable gdb-instance-variables) | 240 (setq gdb-buffer-type 'gdba)) |
248 (setq gdb-buffer-type 'gdba))) | |
249 | 241 |
250 (defun gdb-instance-target-string () | 242 (defun gdb-instance-target-string () |
251 "The apparent name of the program being debugged by a gdb instance. | 243 "The apparent name of the program being debugged by a gdb instance. |
252 For sure this the root string used in smashing together the gdb | 244 For sure this the root string used in smashing together the gdb |
253 buffer's name, even if that doesn't happen to be the name of a | 245 buffer's name, even if that doesn't happen to be the name of a |
283 The key should be one of the cars in `gdb-instance-buffer-rules-assoc'." | 275 The key should be one of the cars in `gdb-instance-buffer-rules-assoc'." |
284 (or (gdb-get-instance-buffer key) | 276 (or (gdb-get-instance-buffer key) |
285 (let* ((rules (assoc key gdb-instance-buffer-rules-assoc)) | 277 (let* ((rules (assoc key gdb-instance-buffer-rules-assoc)) |
286 (name (funcall (gdb-rules-name-maker rules))) | 278 (name (funcall (gdb-rules-name-maker rules))) |
287 (new (get-buffer-create name))) | 279 (new (get-buffer-create name))) |
288 (save-excursion | 280 (with-current-buffer new |
289 (set-buffer new) | 281 ;; FIXME: This should be set after calling the function, since the |
290 (make-variable-buffer-local 'gdb-buffer-type) | 282 ;; function should run kill-all-local-variables. |
291 (setq gdb-buffer-type key) | 283 (set (make-local-variable 'gdb-buffer-type) key) |
292 (if (cdr (cdr rules)) | 284 (if (cdr (cdr rules)) |
293 (funcall (car (cdr (cdr rules))))) | 285 (funcall (car (cdr (cdr rules))))) |
286 (set (make-local-variable 'gud-comint-buffer) gud-comint-buffer) | |
287 (set (make-local-variable 'gud-minor-mode) 'gdba) | |
288 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) | |
294 new)))) | 289 new)))) |
295 | 290 |
296 (defun gdb-rules-name-maker (rules) (car (cdr rules))) | 291 (defun gdb-rules-name-maker (rules) (car (cdr rules))) |
297 | 292 |
298 (defun gdb-look-for-tagged-buffer (key bufs) | 293 (defun gdb-look-for-tagged-buffer (key bufs) |
319 | 314 |
320 (defun gdb-set-instance-buffer-rules (buffer-type &rest rules) | 315 (defun gdb-set-instance-buffer-rules (buffer-type &rest rules) |
321 (let ((binding (assoc buffer-type gdb-instance-buffer-rules-assoc))) | 316 (let ((binding (assoc buffer-type gdb-instance-buffer-rules-assoc))) |
322 (if binding | 317 (if binding |
323 (setcdr binding rules) | 318 (setcdr binding rules) |
324 (setq gdb-instance-buffer-rules-assoc | 319 (push (cons buffer-type rules) |
325 (cons (cons buffer-type rules) | 320 gdb-instance-buffer-rules-assoc)))) |
326 gdb-instance-buffer-rules-assoc))))) | |
327 | 321 |
328 ;; GUD buffers are an exception to the rules | 322 ;; GUD buffers are an exception to the rules |
329 (gdb-set-instance-buffer-rules 'gdba 'error) | 323 (gdb-set-instance-buffer-rules 'gdba 'error) |
330 | 324 |
331 ;; | 325 ;; |
368 ;; features. We don't need a process, but comint wants one, so create | 362 ;; features. We don't need a process, but comint wants one, so create |
369 ;; a dummy one. | 363 ;; a dummy one. |
370 (make-comint-in-buffer | 364 (make-comint-in-buffer |
371 (substring (buffer-name) 1 (- (length (buffer-name)) 1)) | 365 (substring (buffer-name) 1 (- (length (buffer-name)) 1)) |
372 (current-buffer) "/bin/cat") | 366 (current-buffer) "/bin/cat") |
373 (set (make-local-variable 'gud-minor-mode) 'gdba) | |
374 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) | |
375 (setq comint-input-sender 'gdb-inferior-io-sender)) | 367 (setq comint-input-sender 'gdb-inferior-io-sender)) |
376 | 368 |
377 (defun gdb-inferior-io-sender (proc string) | 369 (defun gdb-inferior-io-sender (proc string) |
378 (save-excursion | 370 ;; PROC is the pseudo-process created to satisfy comint. |
379 (set-buffer (process-buffer proc)) | 371 (with-current-buffer (process-buffer proc) |
380 (set-buffer (gdb-get-instance-buffer 'gdba)) | 372 (setq proc (get-buffer-process gud-comint-buffer)) |
381 (process-send-string gdb-proc string) | 373 (process-send-string proc string) |
382 (process-send-string gdb-proc "\n"))) | 374 (process-send-string proc "\n"))) |
383 | 375 |
384 (defun gdb-inferior-io-interrupt () | 376 (defun gdb-inferior-io-interrupt () |
385 "Interrupt the program being debugged." | 377 "Interrupt the program being debugged." |
386 (interactive) | 378 (interactive) |
387 (interrupt-process | 379 (interrupt-process |
388 (get-buffer-process (gdb-get-instance-buffer 'gdba)) comint-ptyp)) | 380 (get-buffer-process gud-comint-buffer) comint-ptyp)) |
389 | 381 |
390 (defun gdb-inferior-io-quit () | 382 (defun gdb-inferior-io-quit () |
391 "Send quit signal to the program being debugged." | 383 "Send quit signal to the program being debugged." |
392 (interactive) | 384 (interactive) |
393 (quit-process | 385 (quit-process |
394 (get-buffer-process (gdb-get-instance-buffer 'gdba)) comint-ptyp)) | 386 (get-buffer-process gud-comint-buffer) comint-ptyp)) |
395 | 387 |
396 (defun gdb-inferior-io-stop () | 388 (defun gdb-inferior-io-stop () |
397 "Stop the program being debugged." | 389 "Stop the program being debugged." |
398 (interactive) | 390 (interactive) |
399 (stop-process | 391 (stop-process |
400 (get-buffer-process (gdb-get-instance-buffer 'gdba)) comint-ptyp)) | 392 (get-buffer-process gud-comint-buffer) comint-ptyp)) |
401 | 393 |
402 (defun gdb-inferior-io-eof () | 394 (defun gdb-inferior-io-eof () |
403 "Send end-of-file to the program being debugged." | 395 "Send end-of-file to the program being debugged." |
404 (interactive) | 396 (interactive) |
405 (process-send-eof | 397 (process-send-eof |
406 (get-buffer-process (gdb-get-instance-buffer 'gdba)))) | 398 (get-buffer-process gud-comint-buffer))) |
407 | 399 |
408 | 400 |
409 ;; | 401 ;; |
410 ;; gdb communications | 402 ;; gdb communications |
411 ;; | 403 ;; |
592 (defun gdb-send-item (item) | 584 (defun gdb-send-item (item) |
593 (set-gdb-instance-current-item item) | 585 (set-gdb-instance-current-item item) |
594 (if (stringp item) | 586 (if (stringp item) |
595 (progn | 587 (progn |
596 (set-gdb-instance-output-sink 'user) | 588 (set-gdb-instance-output-sink 'user) |
597 (process-send-string gdb-proc item)) | 589 (process-send-string (get-buffer-process gud-comint-buffer) item)) |
598 (progn | 590 (progn |
599 (gdb-clear-partial-output) | 591 (gdb-clear-partial-output) |
600 (set-gdb-instance-output-sink 'pre-emacs) | 592 (set-gdb-instance-output-sink 'pre-emacs) |
601 (process-send-string gdb-proc (car item))))) | 593 (process-send-string (get-buffer-process gud-comint-buffer) |
594 (car item))))) | |
602 | 595 |
603 (defun gdb-pre-prompt (ignored) | 596 (defun gdb-pre-prompt (ignored) |
604 "An annotation handler for `pre-prompt'. This terminates the collection of | 597 "An annotation handler for `pre-prompt'. This terminates the collection of |
605 output from a previous command if that happens to be in effect." | 598 output from a previous command if that happens to be in effect." |
606 (let ((sink (gdb-instance-output-sink))) | 599 (let ((sink (gdb-instance-output-sink))) |
1347 (put-string "b" (point) "disabled" | 1340 (put-string "b" (point) "disabled" |
1348 'left-margin))))))))) | 1341 'left-margin))))))))) |
1349 (end-of-line)))))) | 1342 (end-of-line)))))) |
1350 | 1343 |
1351 (defun gdb-breakpoints-buffer-name () | 1344 (defun gdb-breakpoints-buffer-name () |
1352 (save-excursion | 1345 (with-current-buffer gud-comint-buffer |
1353 (set-buffer (process-buffer gdb-proc)) | |
1354 (concat "*breakpoints of " (gdb-instance-target-string) "*"))) | 1346 (concat "*breakpoints of " (gdb-instance-target-string) "*"))) |
1355 | 1347 |
1356 (defun gdb-display-breakpoints-buffer () | 1348 (defun gdb-display-breakpoints-buffer () |
1357 (interactive) | 1349 (interactive) |
1358 (gdb-display-buffer | 1350 (gdb-display-buffer |
1382 | 1374 |
1383 \\{gdb-breakpoints-mode-map}" | 1375 \\{gdb-breakpoints-mode-map}" |
1384 (setq major-mode 'gdb-breakpoints-mode) | 1376 (setq major-mode 'gdb-breakpoints-mode) |
1385 (setq mode-name "Breakpoints") | 1377 (setq mode-name "Breakpoints") |
1386 (use-local-map gdb-breakpoints-mode-map) | 1378 (use-local-map gdb-breakpoints-mode-map) |
1387 (set (make-local-variable 'gud-minor-mode) 'gdba) | |
1388 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) | |
1389 (setq buffer-read-only t) | 1379 (setq buffer-read-only t) |
1390 (gdb-invalidate-breakpoints)) | 1380 (gdb-invalidate-breakpoints)) |
1391 | 1381 |
1392 (defun gdb-toggle-bp-this-line () | 1382 (defun gdb-toggle-bp-this-line () |
1393 "Enable/disable the breakpoint on this line." | 1383 "Enable/disable the breakpoint on this line." |
1421 'ignore)))) | 1411 'ignore)))) |
1422 | 1412 |
1423 (defvar gdb-source-window nil) | 1413 (defvar gdb-source-window nil) |
1424 | 1414 |
1425 (defun gdb-goto-bp-this-line () | 1415 (defun gdb-goto-bp-this-line () |
1426 "Display the file at the specified breakpoint." | 1416 "Display the file at the specified breakpoint." |
1427 (interactive) | 1417 (interactive) |
1428 (save-excursion | 1418 (save-excursion |
1429 (beginning-of-line 1) | 1419 (beginning-of-line 1) |
1430 (re-search-forward "in\\s-+\\S-+\\s-+at\\s-+") | 1420 (re-search-forward "in\\s-+\\S-+\\s-+at\\s-+") |
1431 (looking-at "\\(\\S-*\\):\\([0-9]+\\)")) | 1421 (looking-at "\\(\\S-*\\):\\([0-9]+\\)")) |
1432 (let ((line (match-string 2)) | 1422 (let ((line (match-string 2)) |
1433 (file (match-string 1))) | 1423 (file (match-string 1))) |
1434 (set-window-buffer gdb-source-window | 1424 (save-selected-window |
1435 (find-file-noselect | 1425 (select-window gdb-source-window) |
1436 (if (file-exists-p file) | 1426 (switch-to-buffer (find-file-noselect |
1437 file | 1427 (if (file-exists-p file) |
1438 (expand-file-name file gdb-cdir)))) | 1428 file |
1439 (goto-line (string-to-number line)))) | 1429 (expand-file-name file gdb-cdir)))) |
1430 (goto-line (string-to-number line))))) | |
1440 | 1431 |
1441 ;; | 1432 ;; |
1442 ;; Frames buffers. These display a perpetually correct bactracktrace | 1433 ;; Frames buffers. These display a perpetually correct bactracktrace |
1443 ;; (from the command `where'). | 1434 ;; (from the command `where'). |
1444 ;; | 1435 ;; |
1467 (progn (end-of-line) (point)) | 1458 (progn (end-of-line) (point)) |
1468 'mouse-face 'highlight) | 1459 'mouse-face 'highlight) |
1469 (forward-line 1))))) | 1460 (forward-line 1))))) |
1470 | 1461 |
1471 (defun gdb-stack-buffer-name () | 1462 (defun gdb-stack-buffer-name () |
1472 (save-excursion | 1463 (with-current-buffer gud-comint-buffer |
1473 (set-buffer (process-buffer gdb-proc)) | |
1474 (concat "*stack frames of " | 1464 (concat "*stack frames of " |
1475 (gdb-instance-target-string) "*"))) | 1465 (gdb-instance-target-string) "*"))) |
1476 | 1466 |
1477 (defun gdb-display-stack-buffer () | 1467 (defun gdb-display-stack-buffer () |
1478 (interactive) | 1468 (interactive) |
1494 "Major mode for gdb frames. | 1484 "Major mode for gdb frames. |
1495 | 1485 |
1496 \\{gdb-frames-mode-map}" | 1486 \\{gdb-frames-mode-map}" |
1497 (setq major-mode 'gdb-frames-mode) | 1487 (setq major-mode 'gdb-frames-mode) |
1498 (setq mode-name "Frames") | 1488 (setq mode-name "Frames") |
1499 (set (make-local-variable 'gud-minor-mode) 'gdba) | |
1500 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) | |
1501 (setq buffer-read-only t) | 1489 (setq buffer-read-only t) |
1502 (use-local-map gdb-frames-mode-map) | 1490 (use-local-map gdb-frames-mode-map) |
1503 (gdb-invalidate-frames)) | 1491 (gdb-invalidate-frames)) |
1504 | 1492 |
1505 (defun gdb-get-frame-number () | 1493 (defun gdb-get-frame-number () |
1517 (save-excursion | 1505 (save-excursion |
1518 (goto-char (posn-point (event-end e))) | 1506 (goto-char (posn-point (event-end e))) |
1519 (setq selection (gdb-get-frame-number)))) | 1507 (setq selection (gdb-get-frame-number)))) |
1520 (select-window (posn-window (event-end e))) | 1508 (select-window (posn-window (event-end e))) |
1521 (save-excursion | 1509 (save-excursion |
1522 (set-buffer (gdb-get-instance-buffer 'gdba)) | 1510 (set-buffer gud-comint-buffer) |
1523 (gdb-instance-enqueue-idle-input | 1511 (gdb-instance-enqueue-idle-input |
1524 (list (gud-format-command "server frame %p\n" selection) | 1512 (list (gud-format-command "server frame %p\n" selection) |
1525 'ignore)) | 1513 'ignore)) |
1526 (gud-display-frame)))) | 1514 (gud-display-frame)))) |
1527 | 1515 |
1551 "Major mode for gdb registers. | 1539 "Major mode for gdb registers. |
1552 | 1540 |
1553 \\{gdb-registers-mode-map}" | 1541 \\{gdb-registers-mode-map}" |
1554 (setq major-mode 'gdb-registers-mode) | 1542 (setq major-mode 'gdb-registers-mode) |
1555 (setq mode-name "Registers") | 1543 (setq mode-name "Registers") |
1556 (set (make-local-variable 'gud-minor-mode) 'gdba) | |
1557 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) | |
1558 (setq buffer-read-only t) | 1544 (setq buffer-read-only t) |
1559 (use-local-map gdb-registers-mode-map) | 1545 (use-local-map gdb-registers-mode-map) |
1560 (gdb-invalidate-registers)) | 1546 (gdb-invalidate-registers)) |
1561 | 1547 |
1562 (defun gdb-registers-buffer-name () | 1548 (defun gdb-registers-buffer-name () |
1563 (save-excursion | 1549 (with-current-buffer gud-comint-buffer |
1564 (set-buffer (process-buffer gdb-proc)) | |
1565 (concat "*registers of " (gdb-instance-target-string) "*"))) | 1550 (concat "*registers of " (gdb-instance-target-string) "*"))) |
1566 | 1551 |
1567 (defun gdb-display-registers-buffer () | 1552 (defun gdb-display-registers-buffer () |
1568 (interactive) | 1553 (interactive) |
1569 (gdb-display-buffer | 1554 (gdb-display-buffer |
1591 (gdb-instance-pending-triggers))) | 1576 (gdb-instance-pending-triggers))) |
1592 (let ((buf (gdb-get-instance-buffer 'gdb-partial-output-buffer))) | 1577 (let ((buf (gdb-get-instance-buffer 'gdb-partial-output-buffer))) |
1593 (save-excursion | 1578 (save-excursion |
1594 (set-buffer buf) | 1579 (set-buffer buf) |
1595 (goto-char (point-min)) | 1580 (goto-char (point-min)) |
1596 (replace-regexp "^ .*\n" "") | 1581 (while (re-search-forward "^ .*\n" nil t) |
1582 (replace-match "" nil nil)) | |
1597 (goto-char (point-min)) | 1583 (goto-char (point-min)) |
1598 (replace-regexp "{[-0-9, {}\]*\n" "(array);\n"))) | 1584 (while (re-search-forward "{[-0-9, {}\]*\n" nil t) |
1585 (replace-match "(array);\n" nil nil)) | |
1599 (goto-char (point-min)) | 1586 (goto-char (point-min)) |
1600 (replace-regexp "{.*=.*\n" "(structure);\n") | 1587 (while (re-search-forward "{.*=.*\n" nil t) |
1588 (replace-match "(structure);\n" nil nil)))) | |
1601 (let ((buf (gdb-get-instance-buffer 'gdb-locals-buffer))) | 1589 (let ((buf (gdb-get-instance-buffer 'gdb-locals-buffer))) |
1602 (and buf (save-excursion | 1590 (and buf (save-excursion |
1603 (set-buffer buf) | 1591 (set-buffer buf) |
1604 (let ((p (point)) | 1592 (let ((p (point)) |
1605 (buffer-read-only nil)) | 1593 (buffer-read-only nil)) |
1625 "Major mode for gdb locals. | 1613 "Major mode for gdb locals. |
1626 | 1614 |
1627 \\{gdb-locals-mode-map}" | 1615 \\{gdb-locals-mode-map}" |
1628 (setq major-mode 'gdb-locals-mode) | 1616 (setq major-mode 'gdb-locals-mode) |
1629 (setq mode-name "Locals") | 1617 (setq mode-name "Locals") |
1630 (set (make-local-variable 'gud-minor-mode) 'gdba) | |
1631 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) | |
1632 (setq buffer-read-only t) | 1618 (setq buffer-read-only t) |
1633 (use-local-map gdb-locals-mode-map) | 1619 (use-local-map gdb-locals-mode-map) |
1634 (gdb-invalidate-locals)) | 1620 (gdb-invalidate-locals)) |
1635 | 1621 |
1636 (defun gdb-locals-buffer-name () | 1622 (defun gdb-locals-buffer-name () |
1637 (save-excursion | 1623 (with-current-buffer gud-comint-buffer |
1638 (set-buffer (process-buffer gdb-proc)) | |
1639 (concat "*locals of " (gdb-instance-target-string) "*"))) | 1624 (concat "*locals of " (gdb-instance-target-string) "*"))) |
1640 | 1625 |
1641 (defun gdb-display-locals-buffer () | 1626 (defun gdb-display-locals-buffer () |
1642 (interactive) | 1627 (interactive) |
1643 (gdb-display-buffer | 1628 (gdb-display-buffer |
1683 "Major mode for gdb display. | 1668 "Major mode for gdb display. |
1684 | 1669 |
1685 \\{gdb-display-mode-map}" | 1670 \\{gdb-display-mode-map}" |
1686 (setq major-mode 'gdb-display-mode) | 1671 (setq major-mode 'gdb-display-mode) |
1687 (setq mode-name "Display") | 1672 (setq mode-name "Display") |
1688 (set (make-local-variable 'gud-minor-mode) 'gdba) | |
1689 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) | |
1690 (setq buffer-read-only t) | 1673 (setq buffer-read-only t) |
1691 (use-local-map gdb-display-mode-map) | 1674 (use-local-map gdb-display-mode-map) |
1692 (gdb-invalidate-display)) | 1675 (gdb-invalidate-display)) |
1693 | 1676 |
1694 (defun gdb-display-buffer-name () | 1677 (defun gdb-display-buffer-name () |
1695 (save-excursion | 1678 (with-current-buffer gud-comint-buffer |
1696 (set-buffer (process-buffer gdb-proc)) | |
1697 (concat "*Displayed expressions of " (gdb-instance-target-string) "*"))) | 1679 (concat "*Displayed expressions of " (gdb-instance-target-string) "*"))) |
1698 | 1680 |
1699 (defun gdb-display-display-buffer () | 1681 (defun gdb-display-display-buffer () |
1700 (interactive) | 1682 (interactive) |
1701 (gdb-display-buffer | 1683 (gdb-display-buffer |
2198 "Major mode for viewing code assembler. | 2180 "Major mode for viewing code assembler. |
2199 | 2181 |
2200 \\{gdb-assembler-mode-map}" | 2182 \\{gdb-assembler-mode-map}" |
2201 (setq major-mode 'gdb-assembler-mode) | 2183 (setq major-mode 'gdb-assembler-mode) |
2202 (setq mode-name "Assembler") | 2184 (setq mode-name "Assembler") |
2203 (set (make-local-variable 'gud-minor-mode) 'gdba) | |
2204 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) | |
2205 (setq left-margin-width 2) | 2185 (setq left-margin-width 2) |
2206 (setq buffer-read-only t) | 2186 (setq buffer-read-only t) |
2207 (use-local-map gdb-assembler-mode-map) | 2187 (use-local-map gdb-assembler-mode-map) |
2208 (gdb-invalidate-assembler) | 2188 (gdb-invalidate-assembler) |
2209 (gdb-invalidate-breakpoints)) | 2189 (gdb-invalidate-breakpoints)) |
2210 | 2190 |
2211 (defun gdb-assembler-buffer-name () | 2191 (defun gdb-assembler-buffer-name () |
2212 (save-excursion | 2192 (with-current-buffer gud-comint-buffer |
2213 (set-buffer (process-buffer gdb-proc)) | |
2214 (concat "*Machine Code " (gdb-instance-target-string) "*"))) | 2193 (concat "*Machine Code " (gdb-instance-target-string) "*"))) |
2215 | 2194 |
2216 (defun gdb-display-assembler-buffer () | 2195 (defun gdb-display-assembler-buffer () |
2217 (interactive) | 2196 (interactive) |
2218 (gdb-display-buffer | 2197 (gdb-display-buffer |
2242 (not (string-equal gdb-main-or-pc gdb-prev-main-or-pc)))) | 2221 (not (string-equal gdb-main-or-pc gdb-prev-main-or-pc)))) |
2243 (progn | 2222 (progn |
2244 | 2223 |
2245 ;; take previous disassemble command off the queue | 2224 ;; take previous disassemble command off the queue |
2246 (save-excursion | 2225 (save-excursion |
2247 (set-buffer (gdb-get-instance-buffer 'gdba)) | 2226 (set-buffer gud-comint-buffer) |
2248 (let ((queue gdb-idle-input-queue) (item)) | 2227 (let ((queue gdb-idle-input-queue) (item)) |
2249 (while queue | 2228 (while queue |
2250 (setq item (car queue)) | 2229 (setq item (car queue)) |
2251 (if (equal (cdr item) '(gdb-assembler-handler)) | 2230 (if (equal (cdr item) '(gdb-assembler-handler)) |
2252 (delete item gdb-idle-input-queue)) | 2231 (delete item gdb-idle-input-queue)) |