comparison lisp/gdb-ui.el @ 51693:04628db4db1a

(gdb-display-number-end): Don't re-initialise local variables to preserve array slices. (gdb-array-slice): Rename gdb-mouse-array-slice. (gdb-array-slice): Interactive function bound to "\r" for text terminals. (gdb-view-source): Rename gdb-view-source-function. Set uninitialised variables (defvars) to nil.
author Nick Roberts <nickrob@snap.net.nz>
date Sun, 29 Jun 2003 13:52:50 +0000
parents cef03ad7bf21
children 10f90558dc89
comparison
equal deleted inserted replaced
51692:f7d85dcfebeb 51693:04628db4db1a
708 (defun gdb-display-begin (ignored) 708 (defun gdb-display-begin (ignored)
709 (gdb-set-output-sink 'emacs) 709 (gdb-set-output-sink 'emacs)
710 (gdb-clear-partial-output) 710 (gdb-clear-partial-output)
711 (setq gdb-display-in-progress t)) 711 (setq gdb-display-in-progress t))
712 712
713 (defvar gdb-expression-buffer-name) 713 (defvar gdb-expression-buffer-name nil)
714 (defvar gdb-display-number) 714 (defvar gdb-display-number nil)
715 (defvar gdb-dive-display-number) 715 (defvar gdb-dive-display-number nil)
716 716
717 (defun gdb-display-number-end (ignored) 717 (defun gdb-display-number-end (ignored)
718 (set-buffer (gdb-get-buffer 'gdb-partial-output-buffer)) 718 (set-buffer (gdb-get-buffer 'gdb-partial-output-buffer))
719 (setq gdb-display-number (buffer-string)) 719 (setq gdb-display-number (buffer-string))
720 (setq gdb-expression-buffer-name 720 (setq gdb-expression-buffer-name
728 (switch-to-buffer 728 (switch-to-buffer
729 (set-buffer (get-buffer-create gdb-expression-buffer-name))) 729 (set-buffer (get-buffer-create gdb-expression-buffer-name)))
730 (gdb-expressions-mode) 730 (gdb-expressions-mode)
731 (setq gdb-dive-display-number number))) 731 (setq gdb-dive-display-number number)))
732 (set-buffer (get-buffer-create gdb-expression-buffer-name)) 732 (set-buffer (get-buffer-create gdb-expression-buffer-name))
733 (gdb-expressions-mode) 733 (if (display-graphic-p)
734 (if (and (display-graphic-p) (not gdb-dive))
735 (catch 'frame-exists 734 (catch 'frame-exists
736 (dolist (frame (frame-list)) 735 (dolist (frame (frame-list))
737 (if (string-equal (frame-parameter frame 'name) 736 (if (string-equal (frame-parameter frame 'name)
738 gdb-expression-buffer-name) 737 gdb-expression-buffer-name)
739 (throw 'frame-exists nil))) 738 (throw 'frame-exists nil)))
739 (gdb-expressions-mode)
740 (make-frame `((height . ,gdb-window-height) 740 (make-frame `((height . ,gdb-window-height)
741 (width . ,gdb-window-width) 741 (width . ,gdb-window-width)
742 (tool-bar-lines . nil) 742 (tool-bar-lines . nil)
743 (menu-bar-lines . nil) 743 (menu-bar-lines . nil)
744 (minibuffer . nil)))) 744 (minibuffer . nil))))
745 (gdb-expressions-mode)
745 (gdb-display-buffer (get-buffer gdb-expression-buffer-name))))) 746 (gdb-display-buffer (get-buffer gdb-expression-buffer-name)))))
746 (set-buffer (gdb-get-buffer 'gdb-partial-output-buffer)) 747 (set-buffer (gdb-get-buffer 'gdb-partial-output-buffer))
747 (setq gdb-dive nil)) 748 (setq gdb-dive nil))
748 749
749 (defvar gdb-nesting-level) 750 (defvar gdb-nesting-level nil)
750 (defvar gdb-expression) 751 (defvar gdb-expression nil)
751 (defvar gdb-point) 752 (defvar gdb-point nil)
752 (defvar gdb-annotation-arg) 753 (defvar gdb-annotation-arg nil)
753 754
754 (defun gdb-delete-line () 755 (defun gdb-delete-line ()
755 "Delete the current line." 756 "Delete the current line."
756 (delete-region (line-beginning-position) (line-beginning-position 2))) 757 (delete-region (line-beginning-position) (line-beginning-position 2)))
757 758
952 'mouse-face 'highlight) 953 'mouse-face 'highlight)
953 (put-text-property (- (point) (- end start)) (- (point) 1) 954 (put-text-property (- (point) (- end start)) (- (point) 1)
954 'local-map gdb-dive-map))) 955 'local-map gdb-dive-map)))
955 (delete-region start end))) 956 (delete-region start end)))
956 957
957 (defvar gdb-values) 958 (defvar gdb-values nil)
958 959
959 (defun gdb-array-format () 960 (defun gdb-array-format ()
960 (while (re-search-forward "##" nil t) 961 (while (re-search-forward "##" nil t)
961 ;; keep making recursive calls... 962 ;; keep making recursive calls...
962 (if (looking-at "array-section-begin") 963 (if (looking-at "array-section-begin")
978 ;;else get rid of ##array-section-end etc 979 ;;else get rid of ##array-section-end etc
979 (gdb-delete-line) 980 (gdb-delete-line)
980 (setq gdb-nesting-level (- gdb-nesting-level 1)) 981 (setq gdb-nesting-level (- gdb-nesting-level 1))
981 (gdb-array-format))))) 982 (gdb-array-format)))))
982 983
983 (defvar gdb-array-start) 984 (defvar gdb-array-start nil)
984 (defvar gdb-array-stop) 985 (defvar gdb-array-stop nil)
985 986
986 (defvar gdb-array-slice-map 987 (defvar gdb-array-slice-map
987 (let ((map (make-sparse-keymap))) 988 (let ((map (make-sparse-keymap)))
988 (define-key map [mouse-2] 'gdb-array-slice) 989 (define-key map "\r" 'gdb-array-slice)
990 (define-key map [mouse-2] 'gdb-mouse-array-slice)
989 map)) 991 map))
990 992
991 (defun gdb-array-slice (event) 993 (defun gdb-mouse-array-slice (event)
992 "Select an array slice to display." 994 "Select an array slice to display."
993 (interactive "e") 995 (interactive "e")
994 (mouse-set-point event) 996 (mouse-set-point event)
997 (gdb-array-slice))
998
999 (defun gdb-array-slice ()
1000 (interactive)
995 (save-excursion 1001 (save-excursion
996 (let ((n -1) (stop 0) (start 0) (point (point))) 1002 (let ((n -1) (stop 0) (start 0) (point (point)))
997 (beginning-of-line) 1003 (beginning-of-line)
998 (while (search-forward "[" point t) 1004 (while (search-forward "[" point t)
999 (setq n (+ n 1))) 1005 (setq n (+ n 1)))
1001 (aset gdb-array-start n start) 1007 (aset gdb-array-start n start)
1002 (setq stop (string-to-int (read-string "Stop index: "))) 1008 (setq stop (string-to-int (read-string "Stop index: ")))
1003 (aset gdb-array-stop n stop))) 1009 (aset gdb-array-stop n stop)))
1004 (gdb-array-format1)) 1010 (gdb-array-format1))
1005 1011
1006 (defvar gdb-display-string) 1012 (defvar gdb-display-string nil)
1007 (defvar gdb-array-size) 1013 (defvar gdb-array-size nil)
1008 1014
1009 (defun gdb-array-format1 () 1015 (defun gdb-array-format1 ()
1010 (setq gdb-display-string "") 1016 (setq gdb-display-string "")
1011 (let ((buffer-read-only nil)) 1017 (let ((buffer-read-only nil))
1012 (delete-region (point-min) (point-max)) 1018 (delete-region (point-min) (point-max))
2000 (define-key gud-menu-map [gdb-many-windows] 2006 (define-key gud-menu-map [gdb-many-windows]
2001 (menu-bar-make-toggle gdb-many-windows gdb-many-windows 2007 (menu-bar-make-toggle gdb-many-windows gdb-many-windows
2002 "Display other windows" "Many Windows %s" 2008 "Display other windows" "Many Windows %s"
2003 "Display locals, stack and breakpoint information")) 2009 "Display locals, stack and breakpoint information"))
2004 2010
2005 (let ((menu (make-sparse-keymap "GDB-Frames"))) 2011 (let ((menu (make-sparse-keymap "GDB-Frames")))
2006 (define-key gud-menu-map [frames] 2012 (define-key gud-menu-map [frames]
2007 `(menu-item "GDB-Frames" ,menu :visible (eq gud-minor-mode 'gdba))) 2013 `(menu-item "GDB-Frames" ,menu :visible (eq gud-minor-mode 'gdba)))
2008 (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer)) 2014 (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer))
2009 (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer)) 2015 (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer))
2010 (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer)) 2016 (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer))
2034 ; :help "Display both source and assembler" 2040 ; :help "Display both source and assembler"
2035 ; :button (:radio . (eq gdb-selected-view 'both)))) 2041 ; :button (:radio . (eq gdb-selected-view 'both))))
2036 (define-key menu [assembler] '(menu-item "Assembler" gdb-view-assembler 2042 (define-key menu [assembler] '(menu-item "Assembler" gdb-view-assembler
2037 :help "Display assembler only" 2043 :help "Display assembler only"
2038 :button (:radio . (eq gdb-selected-view 'assembler)))) 2044 :button (:radio . (eq gdb-selected-view 'assembler))))
2039 (define-key menu [source] '(menu-item "Source" gdb-view-source 2045 (define-key menu [source] '(menu-item "Source" gdb-view-source-function
2040 :help "Display source only" 2046 :help "Display source only"
2041 :button (:radio . (eq gdb-selected-view 'source))))) 2047 :button (:radio . (eq gdb-selected-view 'source)))))
2042 2048
2043 (defun gdb-frame-gdb-buffer () 2049 (defun gdb-frame-gdb-buffer ()
2044 (interactive) 2050 (interactive)
2050 (gdb-display-buffer 2056 (gdb-display-buffer
2051 (gdb-get-create-buffer 'gdba))) 2057 (gdb-get-create-buffer 'gdba)))
2052 2058
2053 (defvar gdb-main-file nil "Source file from which program execution begins.") 2059 (defvar gdb-main-file nil "Source file from which program execution begins.")
2054 2060
2055 (defun gdb-view-source() 2061 (defun gdb-view-source-function ()
2056 (interactive) 2062 (interactive)
2057 (if gdb-view-source 2063 (if gdb-view-source
2058 (if gud-last-last-frame 2064 (if gud-last-last-frame
2059 (set-window-buffer gdb-source-window 2065 (set-window-buffer gdb-source-window
2060 (gud-find-file (car gud-last-last-frame))) 2066 (gud-find-file (car gud-last-last-frame)))