comparison lisp/progmodes/gdb-mi.el @ 104782:7d4483022eb4

(gdb-var-create-handler): Remove redundant MI command -var-evaluate-expression. (gdb-var-list-children-regexp): Update from regexp-1 in gdb-ui.el and tweak for case of string child. (gdb-var-list-children-handler): Update from handler-1 in gdb-ui.el.
author Nick Roberts <nickrob@snap.net.nz>
date Tue, 01 Sep 2009 10:18:00 +0000
parents 468b7fa34d2c
children 6c9368500317
comparison
equal deleted inserted replaced
104781:fba3984b43f5 104782:7d4483022eb4
1029 nil))) 1029 nil)))
1030 (push var gdb-var-list) 1030 (push var gdb-var-list)
1031 (speedbar 1) 1031 (speedbar 1)
1032 (unless (string-equal 1032 (unless (string-equal
1033 speedbar-initial-expansion-list-name "GUD") 1033 speedbar-initial-expansion-list-name "GUD")
1034 (speedbar-change-initial-expansion-list "GUD")) 1034 (speedbar-change-initial-expansion-list "GUD")))
1035 (gdb-input
1036 (list
1037 (concat "-var-evaluate-expression " (car var))
1038 `(lambda () (gdb-var-evaluate-expression-handler
1039 ,(car var) nil)))))
1040 (message-box "No symbol \"%s\" in current context." expr)))) 1035 (message-box "No symbol \"%s\" in current context." expr))))
1041 1036
1042 (defun gdb-speedbar-update () 1037 (defun gdb-speedbar-update ()
1043 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame) 1038 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)
1044 (not (gdb-pending-p 'gdb-speedbar-timer))) 1039 (not (gdb-pending-p 'gdb-speedbar-timer)))
1071 varnum) 1066 varnum)
1072 `(lambda () (gdb-var-list-children-handler ,varnum))))) 1067 `(lambda () (gdb-var-list-children-handler ,varnum)))))
1073 1068
1074 (defconst gdb-var-list-children-regexp 1069 (defconst gdb-var-list-children-regexp
1075 "child={.*?name=\"\\(.+?\\)\".*?,exp=\"\\(.+?\\)\".*?,\ 1070 "child={.*?name=\"\\(.+?\\)\".*?,exp=\"\\(.+?\\)\".*?,\
1076 numchild=\"\\(.+?\\)\".*?,value=\\(\".*?\"\\).*?,type=\"\\(.+?\\)\".*?}") 1071 numchild=\"\\(.+?\\)\".*?,value=\\(\"\"\\|\".*?[^\\]\"\\)\
1072 \\(}\\|.*?,\\(type=\"\\(.+?\\)\"\\)?.*?}\\)")
1077 1073
1078 (defun gdb-var-list-children-handler (varnum) 1074 (defun gdb-var-list-children-handler (varnum)
1079 (goto-char (point-min)) 1075 (goto-char (point-min))
1080 (let ((var-list nil)) 1076 (let ((var-list nil))
1081 (catch 'child-already-watched 1077 (catch 'child-already-watched
1085 (push var var-list) 1081 (push var var-list)
1086 (while (re-search-forward gdb-var-list-children-regexp nil t) 1082 (while (re-search-forward gdb-var-list-children-regexp nil t)
1087 (let ((varchild (list (match-string 1) 1083 (let ((varchild (list (match-string 1)
1088 (match-string 2) 1084 (match-string 2)
1089 (match-string 3) 1085 (match-string 3)
1090 (match-string 5) 1086 (match-string 7)
1091 (read (match-string 4)) 1087 (read (match-string 4))
1092 nil))) 1088 nil)))
1093 (if (assoc (car varchild) gdb-var-list) 1089 (if (assoc (car varchild) gdb-var-list)
1094 (throw 'child-already-watched nil)) 1090 (throw 'child-already-watched nil))
1095 (push varchild var-list)))) 1091 (push varchild var-list))))