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))