aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/progmodes/gdb-ui.el111
1 files changed, 69 insertions, 42 deletions
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index db79d43d321..a110b2b6d42 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -124,6 +124,7 @@ and #define directives otherwise.")
124 "Non-nil if GDB knows that the inferior includes preprocessor macro info.") 124 "Non-nil if GDB knows that the inferior includes preprocessor macro info.")
125(defvar gdb-buffer-fringe-width nil) 125(defvar gdb-buffer-fringe-width nil)
126(defvar gdb-signalled nil) 126(defvar gdb-signalled nil)
127(defvar gdb-source-window nil)
127 128
128(defvar gdb-buffer-type nil 129(defvar gdb-buffer-type nil
129 "One of the symbols bound in `gdb-buffer-rules'.") 130 "One of the symbols bound in `gdb-buffer-rules'.")
@@ -489,7 +490,8 @@ With arg, use separate IO iff arg is positive."
489 gdb-macro-info nil 490 gdb-macro-info nil
490 gdb-buffer-fringe-width (car (window-fringes)) 491 gdb-buffer-fringe-width (car (window-fringes))
491 gdb-debug-ring nil 492 gdb-debug-ring nil
492 gdb-signalled nil) 493 gdb-signalled nil
494 gdb-source-window nil)
493 495
494 (setq gdb-buffer-type 'gdba) 496 (setq gdb-buffer-type 'gdba)
495 497
@@ -835,7 +837,7 @@ INDENT is the current indentation depth."
835;; The usual gdb interaction buffer is given the type `gdba' and 837;; The usual gdb interaction buffer is given the type `gdba' and
836;; is constructed specially. 838;; is constructed specially.
837;; 839;;
838;; Others are constructed by gdb-get-create-buffer and 840;; Others are constructed by gdb-get-buffer-create and
839;; named according to the rules set forth in the gdb-buffer-rules-assoc 841;; named according to the rules set forth in the gdb-buffer-rules-assoc
840 842
841(defvar gdb-buffer-rules-assoc '()) 843(defvar gdb-buffer-rules-assoc '())
@@ -846,7 +848,7 @@ The key should be one of the cars in `gdb-buffer-rules-assoc'."
846 (save-excursion 848 (save-excursion
847 (gdb-look-for-tagged-buffer key (buffer-list)))) 849 (gdb-look-for-tagged-buffer key (buffer-list))))
848 850
849(defun gdb-get-create-buffer (key) 851(defun gdb-get-buffer-create (key)
850 "Create a new gdb buffer of the type specified by KEY. 852 "Create a new gdb buffer of the type specified by KEY.
851The key should be one of the cars in `gdb-buffer-rules-assoc'." 853The key should be one of the cars in `gdb-buffer-rules-assoc'."
852 (or (gdb-get-buffer key) 854 (or (gdb-get-buffer key)
@@ -924,7 +926,7 @@ The key should be one of the cars in `gdb-buffer-rules-assoc'."
924 (interactive) 926 (interactive)
925 (if gdb-use-separate-io-buffer 927 (if gdb-use-separate-io-buffer
926 (gdb-display-buffer 928 (gdb-display-buffer
927 (gdb-get-create-buffer 'gdb-inferior-io)))) 929 (gdb-get-buffer-create 'gdb-inferior-io))))
928 930
929(defconst gdb-frame-parameters 931(defconst gdb-frame-parameters
930 '((height . 14) (width . 80) 932 '((height . 14) (width . 80)
@@ -939,7 +941,7 @@ The key should be one of the cars in `gdb-buffer-rules-assoc'."
939 (if gdb-use-separate-io-buffer 941 (if gdb-use-separate-io-buffer
940 (let ((special-display-regexps (append special-display-regexps '(".*"))) 942 (let ((special-display-regexps (append special-display-regexps '(".*")))
941 (special-display-frame-alist gdb-frame-parameters)) 943 (special-display-frame-alist gdb-frame-parameters))
942 (display-buffer (gdb-get-create-buffer 'gdb-inferior-io))))) 944 (display-buffer (gdb-get-buffer-create 'gdb-inferior-io)))))
943 945
944(defvar gdb-inferior-io-mode-map 946(defvar gdb-inferior-io-mode-map
945 (let ((map (make-sparse-keymap))) 947 (let ((map (make-sparse-keymap)))
@@ -1156,7 +1158,7 @@ This sends the next command (if any) to gdb."
1156 (setq gdb-output-sink 'user) 1158 (setq gdb-output-sink 'user)
1157 (let ((handler 1159 (let ((handler
1158 (car (cdr gdb-current-item)))) 1160 (car (cdr gdb-current-item))))
1159 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) 1161 (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer)
1160 (funcall handler)))) 1162 (funcall handler))))
1161 (t 1163 (t
1162 (gdb-resync) 1164 (gdb-resync)
@@ -1253,7 +1255,7 @@ happens to be appropriate."
1253 (gdb-get-selected-frame) 1255 (gdb-get-selected-frame)
1254 (gdb-invalidate-frames) 1256 (gdb-invalidate-frames)
1255 ;; Regenerate breakpoints buffer in case it has been inadvertantly deleted. 1257 ;; Regenerate breakpoints buffer in case it has been inadvertantly deleted.
1256 (gdb-get-create-buffer 'gdb-breakpoints-buffer) 1258 (gdb-get-buffer-create 'gdb-breakpoints-buffer)
1257 (gdb-invalidate-breakpoints) 1259 (gdb-invalidate-breakpoints)
1258 ;; Do this through gdb-get-selected-frame -> gdb-frame-handler 1260 ;; Do this through gdb-get-selected-frame -> gdb-frame-handler
1259 ;; so gdb-frame-address is updated. 1261 ;; so gdb-frame-address is updated.
@@ -1288,6 +1290,22 @@ happens to be appropriate."
1288 (gdb-resync) 1290 (gdb-resync)
1289 (error "Phase error in gdb-post-prompt (got %s)" sink))))) 1291 (error "Phase error in gdb-post-prompt (got %s)" sink)))))
1290 1292
1293;; GUD displays the selected GDB frame. This might might not be the current
1294;; GDB frame (after up, down etc). If no GDB frame is visible but the last
1295;; visited breakpoint is, use that window.
1296(defun gdb-display-source-buffer (buffer)
1297 (let* ((last-window (if gud-last-last-frame
1298 (get-buffer-window
1299 (gud-find-file (car gud-last-last-frame)))))
1300 (source-window (or last-window
1301 (if (and gdb-source-window
1302 (window-live-p gdb-source-window))
1303 gdb-source-window))))
1304 (when source-window
1305 (setq gdb-source-window source-window)
1306 (set-window-buffer source-window buffer))
1307 source-window))
1308
1291(defun gud-gdba-marker-filter (string) 1309(defun gud-gdba-marker-filter (string)
1292 "A gud marker filter for gdb. Handle a burst of output from GDB." 1310 "A gud marker filter for gdb. Handle a burst of output from GDB."
1293 (if gdb-flush-pending-output 1311 (if gdb-flush-pending-output
@@ -1370,23 +1388,23 @@ happens to be appropriate."
1370 (error "Bogon output sink %S" sink))))) 1388 (error "Bogon output sink %S" sink)))))
1371 1389
1372(defun gdb-append-to-partial-output (string) 1390(defun gdb-append-to-partial-output (string)
1373 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) 1391 (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer)
1374 (goto-char (point-max)) 1392 (goto-char (point-max))
1375 (insert string))) 1393 (insert string)))
1376 1394
1377(defun gdb-clear-partial-output () 1395(defun gdb-clear-partial-output ()
1378 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) 1396 (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer)
1379 (erase-buffer))) 1397 (erase-buffer)))
1380 1398
1381(defun gdb-append-to-inferior-io (string) 1399(defun gdb-append-to-inferior-io (string)
1382 (with-current-buffer (gdb-get-create-buffer 'gdb-inferior-io) 1400 (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io)
1383 (goto-char (point-max)) 1401 (goto-char (point-max))
1384 (insert-before-markers string)) 1402 (insert-before-markers string))
1385 (if (not (string-equal string "")) 1403 (if (not (string-equal string ""))
1386 (gdb-display-buffer (gdb-get-create-buffer 'gdb-inferior-io)))) 1404 (gdb-display-buffer (gdb-get-buffer-create 'gdb-inferior-io))))
1387 1405
1388(defun gdb-clear-inferior-io () 1406(defun gdb-clear-inferior-io ()
1389 (with-current-buffer (gdb-get-create-buffer 'gdb-inferior-io) 1407 (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io)
1390 (erase-buffer))) 1408 (erase-buffer)))
1391 1409
1392 1410
@@ -1434,11 +1452,13 @@ happens to be appropriate."
1434 (and buf 1452 (and buf
1435 (with-current-buffer buf 1453 (with-current-buffer buf
1436 (let* ((window (get-buffer-window buf 0)) 1454 (let* ((window (get-buffer-window buf 0))
1455 (start (window-start window))
1437 (p (window-point window)) 1456 (p (window-point window))
1438 (buffer-read-only nil)) 1457 (buffer-read-only nil))
1439 (erase-buffer) 1458 (erase-buffer)
1440 (insert-buffer-substring (gdb-get-create-buffer 1459 (insert-buffer-substring (gdb-get-buffer-create
1441 'gdb-partial-output-buffer)) 1460 'gdb-partial-output-buffer))
1461 (set-window-start window start)
1442 (set-window-point window p))))) 1462 (set-window-point window p)))))
1443 ;; put customisation here 1463 ;; put customisation here
1444 (,custom-defun))) 1464 (,custom-defun)))
@@ -1688,14 +1708,14 @@ static char *magick[] = {
1688 "Display status of user-settable breakpoints." 1708 "Display status of user-settable breakpoints."
1689 (interactive) 1709 (interactive)
1690 (gdb-display-buffer 1710 (gdb-display-buffer
1691 (gdb-get-create-buffer 'gdb-breakpoints-buffer))) 1711 (gdb-get-buffer-create 'gdb-breakpoints-buffer)))
1692 1712
1693(defun gdb-frame-breakpoints-buffer () 1713(defun gdb-frame-breakpoints-buffer ()
1694 "Display status of user-settable breakpoints in a new frame." 1714 "Display status of user-settable breakpoints in a new frame."
1695 (interactive) 1715 (interactive)
1696 (let ((special-display-regexps (append special-display-regexps '(".*"))) 1716 (let ((special-display-regexps (append special-display-regexps '(".*")))
1697 (special-display-frame-alist gdb-frame-parameters)) 1717 (special-display-frame-alist gdb-frame-parameters))
1698 (display-buffer (gdb-get-create-buffer 'gdb-breakpoints-buffer)))) 1718 (display-buffer (gdb-get-buffer-create 'gdb-breakpoints-buffer))))
1699 1719
1700(defvar gdb-breakpoints-mode-map 1720(defvar gdb-breakpoints-mode-map
1701 (let ((map (make-sparse-keymap)) 1721 (let ((map (make-sparse-keymap))
@@ -1767,9 +1787,6 @@ static char *magick[] = {
1767 "Display the breakpoint location specified at current line." 1787 "Display the breakpoint location specified at current line."
1768 (interactive (list last-input-event)) 1788 (interactive (list last-input-event))
1769 (if event (posn-set-point (event-end event))) 1789 (if event (posn-set-point (event-end event)))
1770 ;; Hack to stop gdb-goto-breakpoint displaying in GUD buffer.
1771 (let ((window (get-buffer-window gud-comint-buffer)))
1772 (if window (save-selected-window (select-window window))))
1773 (save-excursion 1790 (save-excursion
1774 (beginning-of-line 1) 1791 (beginning-of-line 1)
1775 (if (looking-at "\\([0-9]+\\) .+ in .+ at\\s-+\\(\\S-+\\):\\([0-9]+\\)") 1792 (if (looking-at "\\([0-9]+\\) .+ in .+ at\\s-+\\(\\S-+\\):\\([0-9]+\\)")
@@ -1777,11 +1794,13 @@ static char *magick[] = {
1777 (file (match-string 2)) 1794 (file (match-string 2))
1778 (line (match-string 3))) 1795 (line (match-string 3)))
1779 (save-selected-window 1796 (save-selected-window
1780 (let* ((buf (find-file-noselect 1797 (let* ((buffer (find-file-noselect
1781 (if (file-exists-p file) file 1798 (if (file-exists-p file) file
1782 (cdr (assoc bptno gdb-location-alist))))) 1799 (cdr (assoc bptno gdb-location-alist)))))
1783 (window (display-buffer buf))) 1800 (window (unless (gdb-display-source-buffer buffer)
1784 (with-current-buffer buf 1801 (display-buffer buffer))))
1802 (setq gdb-source-window window)
1803 (with-current-buffer buffer
1785 (goto-line (string-to-number line)) 1804 (goto-line (string-to-number line))
1786 (set-window-point window (point)))))) 1805 (set-window-point window (point))))))
1787 (error "No location specified.")))) 1806 (error "No location specified."))))
@@ -1844,14 +1863,14 @@ static char *magick[] = {
1844 "Display backtrace of current stack." 1863 "Display backtrace of current stack."
1845 (interactive) 1864 (interactive)
1846 (gdb-display-buffer 1865 (gdb-display-buffer
1847 (gdb-get-create-buffer 'gdb-stack-buffer))) 1866 (gdb-get-buffer-create 'gdb-stack-buffer)))
1848 1867
1849(defun gdb-frame-stack-buffer () 1868(defun gdb-frame-stack-buffer ()
1850 "Display backtrace of current stack in a new frame." 1869 "Display backtrace of current stack in a new frame."
1851 (interactive) 1870 (interactive)
1852 (let ((special-display-regexps (append special-display-regexps '(".*"))) 1871 (let ((special-display-regexps (append special-display-regexps '(".*")))
1853 (special-display-frame-alist gdb-frame-parameters)) 1872 (special-display-frame-alist gdb-frame-parameters))
1854 (display-buffer (gdb-get-create-buffer 'gdb-stack-buffer)))) 1873 (display-buffer (gdb-get-buffer-create 'gdb-stack-buffer))))
1855 1874
1856(defvar gdb-frames-mode-map 1875(defvar gdb-frames-mode-map
1857 (let ((map (make-sparse-keymap))) 1876 (let ((map (make-sparse-keymap)))
@@ -1925,14 +1944,14 @@ static char *magick[] = {
1925 "Display IDs of currently known threads." 1944 "Display IDs of currently known threads."
1926 (interactive) 1945 (interactive)
1927 (gdb-display-buffer 1946 (gdb-display-buffer
1928 (gdb-get-create-buffer 'gdb-threads-buffer))) 1947 (gdb-get-buffer-create 'gdb-threads-buffer)))
1929 1948
1930(defun gdb-frame-threads-buffer () 1949(defun gdb-frame-threads-buffer ()
1931 "Display IDs of currently known threads in a new frame." 1950 "Display IDs of currently known threads in a new frame."
1932 (interactive) 1951 (interactive)
1933 (let ((special-display-regexps (append special-display-regexps '(".*"))) 1952 (let ((special-display-regexps (append special-display-regexps '(".*")))
1934 (special-display-frame-alist gdb-frame-parameters)) 1953 (special-display-frame-alist gdb-frame-parameters))
1935 (display-buffer (gdb-get-create-buffer 'gdb-threads-buffer)))) 1954 (display-buffer (gdb-get-buffer-create 'gdb-threads-buffer))))
1936 1955
1937(defvar gdb-threads-mode-map 1956(defvar gdb-threads-mode-map
1938 (let ((map (make-sparse-keymap))) 1957 (let ((map (make-sparse-keymap)))
@@ -2061,14 +2080,14 @@ static char *magick[] = {
2061 "Display integer register contents." 2080 "Display integer register contents."
2062 (interactive) 2081 (interactive)
2063 (gdb-display-buffer 2082 (gdb-display-buffer
2064 (gdb-get-create-buffer 'gdb-registers-buffer))) 2083 (gdb-get-buffer-create 'gdb-registers-buffer)))
2065 2084
2066(defun gdb-frame-registers-buffer () 2085(defun gdb-frame-registers-buffer ()
2067 "Display integer register contents in a new frame." 2086 "Display integer register contents in a new frame."
2068 (interactive) 2087 (interactive)
2069 (let ((special-display-regexps (append special-display-regexps '(".*"))) 2088 (let ((special-display-regexps (append special-display-regexps '(".*")))
2070 (special-display-frame-alist gdb-frame-parameters)) 2089 (special-display-frame-alist gdb-frame-parameters))
2071 (display-buffer (gdb-get-create-buffer 'gdb-registers-buffer)))) 2090 (display-buffer (gdb-get-buffer-create 'gdb-registers-buffer))))
2072 2091
2073(defun gdb-all-registers () 2092(defun gdb-all-registers ()
2074 "Toggle the display of floating-point registers (pre GDB 6.4 only)." 2093 "Toggle the display of floating-point registers (pre GDB 6.4 only)."
@@ -2077,10 +2096,10 @@ static char *magick[] = {
2077 (if gdb-all-registers 2096 (if gdb-all-registers
2078 (progn 2097 (progn
2079 (setq gdb-all-registers nil) 2098 (setq gdb-all-registers nil)
2080 (with-current-buffer (gdb-get-create-buffer 'gdb-registers-buffer) 2099 (with-current-buffer (gdb-get-buffer-create 'gdb-registers-buffer)
2081 (setq mode-name "Registers"))) 2100 (setq mode-name "Registers")))
2082 (setq gdb-all-registers t) 2101 (setq gdb-all-registers t)
2083 (with-current-buffer (gdb-get-create-buffer 'gdb-registers-buffer) 2102 (with-current-buffer (gdb-get-buffer-create 'gdb-registers-buffer)
2084 (setq mode-name "Registers:All"))) 2103 (setq mode-name "Registers:All")))
2085 (message (format "Display of floating-point registers %sabled" 2104 (message (format "Display of floating-point registers %sabled"
2086 (if gdb-all-registers "en" "dis"))) 2105 (if gdb-all-registers "en" "dis")))
@@ -2385,14 +2404,14 @@ corresponding to the mode line clicked."
2385 "Display memory contents." 2404 "Display memory contents."
2386 (interactive) 2405 (interactive)
2387 (gdb-display-buffer 2406 (gdb-display-buffer
2388 (gdb-get-create-buffer 'gdb-memory-buffer))) 2407 (gdb-get-buffer-create 'gdb-memory-buffer)))
2389 2408
2390(defun gdb-frame-memory-buffer () 2409(defun gdb-frame-memory-buffer ()
2391 "Display memory contents in a new frame." 2410 "Display memory contents in a new frame."
2392 (interactive) 2411 (interactive)
2393 (let ((special-display-regexps (append special-display-regexps '(".*"))) 2412 (let ((special-display-regexps (append special-display-regexps '(".*")))
2394 (special-display-frame-alist gdb-frame-parameters)) 2413 (special-display-frame-alist gdb-frame-parameters))
2395 (display-buffer (gdb-get-create-buffer 'gdb-memory-buffer)))) 2414 (display-buffer (gdb-get-buffer-create 'gdb-memory-buffer))))
2396 2415
2397 2416
2398;; Locals buffer. 2417;; Locals buffer.
@@ -2450,12 +2469,15 @@ corresponding to the mode line clicked."
2450 (and buf 2469 (and buf
2451 (with-current-buffer buf 2470 (with-current-buffer buf
2452 (let* ((window (get-buffer-window buf 0)) 2471 (let* ((window (get-buffer-window buf 0))
2472 (start (window-start window))
2453 (p (window-point window)) 2473 (p (window-point window))
2454 (buffer-read-only nil)) 2474 (buffer-read-only nil))
2455 (erase-buffer) 2475 (erase-buffer)
2456 (insert-buffer-substring (gdb-get-create-buffer 2476 (insert-buffer-substring (gdb-get-buffer-create
2457 'gdb-partial-output-buffer)) 2477 'gdb-partial-output-buffer))
2458 (set-window-point window p))))) 2478 (set-window-start window start)
2479 (set-window-point window p))
2480)))
2459 (run-hooks 'gdb-info-locals-hook)) 2481 (run-hooks 'gdb-info-locals-hook))
2460 2482
2461(defvar gdb-locals-mode-map 2483(defvar gdb-locals-mode-map
@@ -2489,14 +2511,14 @@ corresponding to the mode line clicked."
2489 "Display local variables of current stack and their values." 2511 "Display local variables of current stack and their values."
2490 (interactive) 2512 (interactive)
2491 (gdb-display-buffer 2513 (gdb-display-buffer
2492 (gdb-get-create-buffer 'gdb-locals-buffer))) 2514 (gdb-get-buffer-create 'gdb-locals-buffer)))
2493 2515
2494(defun gdb-frame-locals-buffer () 2516(defun gdb-frame-locals-buffer ()
2495 "Display local variables of current stack and their values in a new frame." 2517 "Display local variables of current stack and their values in a new frame."
2496 (interactive) 2518 (interactive)
2497 (let ((special-display-regexps (append special-display-regexps '(".*"))) 2519 (let ((special-display-regexps (append special-display-regexps '(".*")))
2498 (special-display-frame-alist gdb-frame-parameters)) 2520 (special-display-frame-alist gdb-frame-parameters))
2499 (display-buffer (gdb-get-create-buffer 'gdb-locals-buffer)))) 2521 (display-buffer (gdb-get-buffer-create 'gdb-locals-buffer))))
2500 2522
2501 2523
2502;;;; Window management 2524;;;; Window management
@@ -2619,7 +2641,7 @@ corresponding to the mode line clicked."
2619 (split-window-horizontally) 2641 (split-window-horizontally)
2620 (other-window 1) 2642 (other-window 1)
2621 (gdb-set-window-buffer 2643 (gdb-set-window-buffer
2622 (gdb-get-create-buffer 'gdb-inferior-io))) 2644 (gdb-get-buffer-create 'gdb-inferior-io)))
2623 (other-window 1) 2645 (other-window 1)
2624 (gdb-set-window-buffer (gdb-stack-buffer-name)) 2646 (gdb-set-window-buffer (gdb-stack-buffer-name))
2625 (split-window-horizontally) 2647 (split-window-horizontally)
@@ -2707,7 +2729,7 @@ buffers."
2707 (setq gdb-macro-info t)) 2729 (setq gdb-macro-info t))
2708 (if gdb-many-windows 2730 (if gdb-many-windows
2709 (gdb-setup-windows) 2731 (gdb-setup-windows)
2710 (gdb-get-create-buffer 'gdb-breakpoints-buffer) 2732 (gdb-get-buffer-create 'gdb-breakpoints-buffer)
2711 (if gdb-show-main 2733 (if gdb-show-main
2712 (let ((pop-up-windows t)) 2734 (let ((pop-up-windows t))
2713 (display-buffer (gud-find-file gdb-main-file)))))) 2735 (display-buffer (gud-find-file gdb-main-file))))))
@@ -2960,7 +2982,7 @@ BUFFER nil or omitted means use the current buffer."
2960 (interactive) 2982 (interactive)
2961 (setq gdb-previous-frame nil) 2983 (setq gdb-previous-frame nil)
2962 (gdb-display-buffer 2984 (gdb-display-buffer
2963 (gdb-get-create-buffer 'gdb-assembler-buffer))) 2985 (gdb-get-buffer-create 'gdb-assembler-buffer)))
2964 2986
2965(defun gdb-frame-assembler-buffer () 2987(defun gdb-frame-assembler-buffer ()
2966 "Display disassembly view in a new frame." 2988 "Display disassembly view in a new frame."
@@ -2968,7 +2990,7 @@ BUFFER nil or omitted means use the current buffer."
2968 (setq gdb-previous-frame nil) 2990 (setq gdb-previous-frame nil)
2969 (let ((special-display-regexps (append special-display-regexps '(".*"))) 2991 (let ((special-display-regexps (append special-display-regexps '(".*")))
2970 (special-display-frame-alist gdb-frame-parameters)) 2992 (special-display-frame-alist gdb-frame-parameters))
2971 (display-buffer (gdb-get-create-buffer 'gdb-assembler-buffer)))) 2993 (display-buffer (gdb-get-buffer-create 'gdb-assembler-buffer))))
2972 2994
2973;; modified because if gdb-frame-address has changed value a new command 2995;; modified because if gdb-frame-address has changed value a new command
2974;; must be enqueued to update the buffer with the new output 2996;; must be enqueued to update the buffer with the new output
@@ -3166,11 +3188,14 @@ value=\\(\".*?\"\\),type=\"\\(.+?\\)\"}")
3166 (concat register-values register-string))) 3188 (concat register-values register-string)))
3167 (let ((buf (gdb-get-buffer 'gdb-registers-buffer))) 3189 (let ((buf (gdb-get-buffer 'gdb-registers-buffer)))
3168 (with-current-buffer buf 3190 (with-current-buffer buf
3169 (let ((p (window-point (get-buffer-window buf 0))) 3191 (let* ((window (get-buffer-window buf 0))
3170 (buffer-read-only nil)) 3192 (start (window-start window))
3193 (p (window-point window))
3194 (buffer-read-only nil))
3171 (erase-buffer) 3195 (erase-buffer)
3172 (insert register-values) 3196 (insert register-values)
3173 (set-window-point (get-buffer-window buf 0) p)))))) 3197 (set-window-start window start)
3198 (set-window-point window p))))))
3174 (gdb-data-list-register-values-custom)) 3199 (gdb-data-list-register-values-custom))
3175 3200
3176(defun gdb-data-list-register-values-custom () 3201(defun gdb-data-list-register-values-custom ()
@@ -3255,6 +3280,7 @@ value=\\(\".*?\"\\),type=\"\\(.+?\\)\"}")
3255 (let ((buf (gdb-get-buffer 'gdb-locals-buffer))) 3280 (let ((buf (gdb-get-buffer 'gdb-locals-buffer)))
3256 (and buf (with-current-buffer buf 3281 (and buf (with-current-buffer buf
3257 (let* ((window (get-buffer-window buf 0)) 3282 (let* ((window (get-buffer-window buf 0))
3283 (start (window-start window))
3258 (p (window-point window)) 3284 (p (window-point window))
3259 (buffer-read-only nil)) 3285 (buffer-read-only nil))
3260 (erase-buffer) 3286 (erase-buffer)
@@ -3270,6 +3296,7 @@ value=\\(\".*?\"\\),type=\"\\(.+?\\)\"}")
3270 (insert 3296 (insert
3271 (concat name "\t" (nth 1 local) 3297 (concat name "\t" (nth 1 local)
3272 "\t" (nth 2 local) "\n"))) 3298 "\t" (nth 2 local) "\n")))
3299 (set-window-start window start)
3273 (set-window-point window p))))))) 3300 (set-window-point window p)))))))
3274 3301
3275(defun gdb-get-register-names () 3302(defun gdb-get-register-names ()