Mercurial > emacs
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)))) |