comparison lisp/progmodes/gdb-ui.el @ 72392:17d65e848c72

(gdb-info-stack-custom): Indicate selected frame with fringe arrow. Suggested by Simon Marshall <simon.marshall@misys.com>. (gdb-stack-position): New variable. (gdb-starting, gdb-exited): Reset gdb-stack-position to nil. (gdb-frames-mode): Set gdb-stack-position to nil. Add to overlay-arrow-variable-list (gdb-reset): Delete gdb-stack-position from above list.
author Nick Roberts <nickrob@snap.net.nz>
date Tue, 15 Aug 2006 00:01:16 +0000
parents 37cc9e9df5a4
children ae19dce6b114 7f3f771c85fa
comparison
equal deleted inserted replaced
72391:b2e68179adaa 72392:17d65e848c72
113 where STATUS is nil (unchanged), `changed' or `out-of-scope', FP the frame 113 where STATUS is nil (unchanged), `changed' or `out-of-scope', FP the frame
114 address for root variables.") 114 address for root variables.")
115 (defvar gdb-main-file nil "Source file from which program execution begins.") 115 (defvar gdb-main-file nil "Source file from which program execution begins.")
116 (defvar gud-old-arrow nil) 116 (defvar gud-old-arrow nil)
117 (defvar gdb-overlay-arrow-position nil) 117 (defvar gdb-overlay-arrow-position nil)
118 (defvar gdb-stack-position nil)
118 (defvar gdb-server-prefix nil) 119 (defvar gdb-server-prefix nil)
119 (defvar gdb-flush-pending-output nil) 120 (defvar gdb-flush-pending-output nil)
120 (defvar gdb-location-alist nil 121 (defvar gdb-location-alist nil
121 "Alist of breakpoint numbers and full filenames.") 122 "Alist of breakpoint numbers and full filenames.")
122 (defvar gdb-active-process nil "GUD tooltips display variable values when t, \ 123 (defvar gdb-active-process nil "GUD tooltips display variable values when t, \
1294 (propertize gdb-inferior-status 'face font-lock-type-face)) 1295 (propertize gdb-inferior-status 'face font-lock-type-face))
1295 (gdb-remove-text-properties) 1296 (gdb-remove-text-properties)
1296 (setq gud-old-arrow gud-overlay-arrow-position) 1297 (setq gud-old-arrow gud-overlay-arrow-position)
1297 (setq gud-overlay-arrow-position nil) 1298 (setq gud-overlay-arrow-position nil)
1298 (setq gdb-overlay-arrow-position nil) 1299 (setq gdb-overlay-arrow-position nil)
1300 (setq gdb-stack-position nil)
1299 (if gdb-use-separate-io-buffer 1301 (if gdb-use-separate-io-buffer
1300 (setq gdb-output-sink 'inferior)))) 1302 (setq gdb-output-sink 'inferior))))
1301 (t 1303 (t
1302 (gdb-resync) 1304 (gdb-resync)
1303 (error "Unexpected `starting' annotation"))))) 1305 (error "Unexpected `starting' annotation")))))
1328 function is used to change the focus of GUD tooltips to #define 1330 function is used to change the focus of GUD tooltips to #define
1329 directives." 1331 directives."
1330 (setq gdb-active-process nil) 1332 (setq gdb-active-process nil)
1331 (setq gud-overlay-arrow-position nil) 1333 (setq gud-overlay-arrow-position nil)
1332 (setq gdb-overlay-arrow-position nil) 1334 (setq gdb-overlay-arrow-position nil)
1335 (setq gdb-stack-position nil)
1333 (setq gud-old-arrow nil) 1336 (setq gud-old-arrow nil)
1334 (setq gdb-inferior-status "exited") 1337 (setq gdb-inferior-status "exited")
1335 (gdb-force-mode-line-update 1338 (gdb-force-mode-line-update
1336 (propertize gdb-inferior-status 'face font-lock-warning-face)) 1339 (propertize gdb-inferior-status 'face font-lock-warning-face))
1337 (gdb-stopping ignored)) 1340 (gdb-stopping ignored))
2035 '(mouse-face highlight 2038 '(mouse-face highlight
2036 help-echo "mouse-2, RET: Select frame"))) 2039 help-echo "mouse-2, RET: Select frame")))
2037 (goto-char bl) 2040 (goto-char bl)
2038 (when (looking-at "^#\\([0-9]+\\)") 2041 (when (looking-at "^#\\([0-9]+\\)")
2039 (when (string-equal (match-string 1) gdb-frame-number) 2042 (when (string-equal (match-string 1) gdb-frame-number)
2040 (put-text-property bl (+ bl 4) 2043 (if (> (car (window-fringes)) 0)
2041 'face '(:inverse-video t))) 2044 (progn
2045 (or gdb-stack-position
2046 (setq gdb-stack-position (make-marker)))
2047 (set-marker gdb-stack-position (point)))
2048 (set-marker gdb-stack-position nil)
2049 (put-text-property bl (+ bl 4)
2050 'face '(:inverse-video t))))
2042 (when (re-search-forward 2051 (when (re-search-forward
2043 (concat 2052 (concat
2044 (if (string-equal (match-string 1) "0") "" " in ") 2053 (if (string-equal (match-string 1) "0") "" " in ")
2045 "\\([^ ]+\\) (") el t) 2054 "\\([^ ]+\\) (") el t)
2046 (put-text-property (match-beginning 1) (match-end 1) 2055 (put-text-property (match-beginning 1) (match-end 1)
2107 2116
2108 \\{gdb-frames-mode-map}" 2117 \\{gdb-frames-mode-map}"
2109 (kill-all-local-variables) 2118 (kill-all-local-variables)
2110 (setq major-mode 'gdb-frames-mode) 2119 (setq major-mode 'gdb-frames-mode)
2111 (setq mode-name "Frames") 2120 (setq mode-name "Frames")
2121 (setq gdb-stack-position nil)
2122 (add-to-list 'overlay-arrow-variable-list 'gdb-stack-position)
2112 (setq buffer-read-only t) 2123 (setq buffer-read-only t)
2113 (use-local-map gdb-frames-mode-map) 2124 (use-local-map gdb-frames-mode-map)
2114 (run-mode-hooks 'gdb-frames-mode-hook) 2125 (run-mode-hooks 'gdb-frames-mode-hook)
2115 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba) 2126 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
2116 'gdb-invalidate-frames 2127 'gdb-invalidate-frames
2910 (kill-buffer nil) 2921 (kill-buffer nil)
2911 (gdb-remove-breakpoint-icons (point-min) (point-max) t) 2922 (gdb-remove-breakpoint-icons (point-min) (point-max) t)
2912 (setq gud-minor-mode nil) 2923 (setq gud-minor-mode nil)
2913 (kill-local-variable 'tool-bar-map) 2924 (kill-local-variable 'tool-bar-map)
2914 (kill-local-variable 'gdb-define-alist)))))) 2925 (kill-local-variable 'gdb-define-alist))))))
2915 (when (markerp gdb-overlay-arrow-position) 2926 (setq gdb-overlay-arrow-position nil)
2916 (move-marker gdb-overlay-arrow-position nil)
2917 (setq gdb-overlay-arrow-position nil))
2918 (setq overlay-arrow-variable-list 2927 (setq overlay-arrow-variable-list
2919 (delq 'gdb-overlay-arrow-position overlay-arrow-variable-list)) 2928 (delq 'gdb-overlay-arrow-position overlay-arrow-variable-list))
2920 (setq fringe-indicator-alist '((overlay-arrow . right-triangle))) 2929 (setq fringe-indicator-alist '((overlay-arrow . right-triangle)))
2930 (setq gdb-stack-position nil)
2931 (setq overlay-arrow-variable-list
2932 (delq 'gdb-stack-position overlay-arrow-variable-list))
2921 (if (boundp 'speedbar-frame) (speedbar-timer-fn)) 2933 (if (boundp 'speedbar-frame) (speedbar-timer-fn))
2922 (setq gud-running nil) 2934 (setq gud-running nil)
2923 (setq gdb-active-process nil) 2935 (setq gdb-active-process nil)
2924 (setq gdb-var-list nil) 2936 (setq gdb-var-list nil)
2925 (remove-hook 'after-save-hook 'gdb-create-define-alist t)) 2937 (remove-hook 'after-save-hook 'gdb-create-define-alist t))
3137 (if (string-equal gdb-frame-number "0") 3149 (if (string-equal gdb-frame-number "0")
3138 nil 3150 nil
3139 '((overlay-arrow . hollow-right-triangle)))) 3151 '((overlay-arrow . hollow-right-triangle))))
3140 (or gdb-overlay-arrow-position 3152 (or gdb-overlay-arrow-position
3141 (setq gdb-overlay-arrow-position (make-marker))) 3153 (setq gdb-overlay-arrow-position (make-marker)))
3142 (set-marker gdb-overlay-arrow-position 3154 (set-marker gdb-overlay-arrow-position (point))))))
3143 (point) (current-buffer))))))
3144 ;; remove all breakpoint-icons in assembler buffer before updating. 3155 ;; remove all breakpoint-icons in assembler buffer before updating.
3145 (gdb-remove-breakpoint-icons (point-min) (point-max)))) 3156 (gdb-remove-breakpoint-icons (point-min) (point-max))))
3146 (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer) 3157 (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer)
3147 (goto-char (point-min)) 3158 (goto-char (point-min))
3148 (while (< (point) (- (point-max) 1)) 3159 (while (< (point) (- (point-max) 1))