# HG changeset patch # User Nick Roberts # Date 1132629053 0 # Node ID 430a3ff7880b7b862030b04dc379ccceed5f7c5f # Parent cd4f2c07ccbc5d7c2a7985810cd4750da822587d (gdb-locals-watch-keymap): New local map. (gdb-struct-string, gdb-array-string): New constants. (gdb-info-locals-handler): Use them. (gdb-reset): Reset gdb-var-list to nil. diff -r cd4f2c07ccbc -r 430a3ff7880b lisp/progmodes/gdb-ui.el --- a/lisp/progmodes/gdb-ui.el Mon Nov 21 23:33:01 2005 +0000 +++ b/lisp/progmodes/gdb-ui.el Tue Nov 22 03:10:53 2005 +0000 @@ -75,9 +75,11 @@ ;; of 'info registers'. ;; 3) Use tree-widget.el instead of the speedbar for watch-expressions? ;; 4) Mark breakpoint locations on scroll-bar of source buffer? -;; 5) After release of 22.1 use '-var-list-children --all-values' -;; and '-stack-list-locals 2' which need GDB 6.1 onwards. -;; 6) With gud-print and gud-pstar, print the variable name in the GUD +;; 5) After release of 22.1, use "-var-list-children --all-values" +;; and "-stack-list-locals --simple-values" which need GDB 6.1 onwards. +;; 6) After release of 22.1, use "-var-update --all-values" which needs +;; GDB 6.4 onwards. +;; 7) With gud-print and gud-pstar, print the variable name in the GUD ;; buffer instead of the value's history number. ;;; Code: @@ -2230,6 +2232,27 @@ "server info locals\n" gdb-info-locals-handler) +(defvar gdb-locals-watch-keymap + (let ((map (make-sparse-keymap))) + (define-key map [mouse-2] '(lambda (event) (interactive "e") + (mouse-set-point event) + (beginning-of-line) + (gud-watch))) + map) + "Keymap to create watch expression of a complex data type local variable.") + +(defconst gdb-struct-string + (concat (propertize "[struct/union];" + 'mouse-face 'highlight + 'help-echo "mouse-2: create watch expression" + 'local-map gdb-locals-watch-keymap) "\n")) + +(defconst gdb-array-string + (concat " " (propertize "[array];" + 'mouse-face 'highlight + 'help-echo "mouse-2: create watch expression" + 'local-map gdb-locals-watch-keymap) "\n")) + ;; Abbreviate for arrays and structures. ;; These can be expanded using gud-display. (defun gdb-info-locals-handler () @@ -2242,10 +2265,10 @@ (replace-match "" nil nil)) (goto-char (point-min)) (while (re-search-forward "{\\(.*=.*\n\\|\n\\)" nil t) - (replace-match "(structure);\n" nil nil)) + (replace-match gdb-struct-string nil nil)) (goto-char (point-min)) (while (re-search-forward "\\s-*{.*\n" nil t) - (replace-match " (array);\n" nil nil)))) + (replace-match gdb-array-string nil nil)))) (let ((buf (gdb-get-buffer 'gdb-locals-buffer))) (and buf (with-current-buffer buf @@ -2504,6 +2527,7 @@ (delq 'gdb-overlay-arrow-position overlay-arrow-variable-list)) (setq gud-running nil) (setq gdb-active-process nil) + (setq gdb-var-list nil) (remove-hook 'after-save-hook 'gdb-create-define-alist t)) (defun gdb-source-info ()