aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Roberts2009-09-11 11:55:11 +0000
committerNick Roberts2009-09-11 11:55:11 +0000
commitdf1bfa9d0051bb00c02504400debe3f640e40ec9 (patch)
tree49b41f373af738660860c0ce7263a0cb59f23d93
parentac243a409086b037dc49ca3f9b38aa1ab5f8606d (diff)
downloademacs-df1bfa9d0051bb00c02504400debe3f640e40ec9.tar.gz
emacs-df1bfa9d0051bb00c02504400debe3f640e40ec9.zip
(gdb-var-update-regexp): Delete.
(gdb-var-update-handler): Use json parsing.
-rw-r--r--lisp/progmodes/gdb-mi.el22
1 files changed, 9 insertions, 13 deletions
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 09290deb905..17e0c1c8872 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1136,29 +1136,25 @@ numchild=\"\\(.+?\\)\".*?,value=\\(\"\"\\|\".*?[^\\]\"\\)\
1136 (list "-var-update --all-values *" 'gdb-var-update-handler))) 1136 (list "-var-update --all-values *" 'gdb-var-update-handler)))
1137 (gdb-add-pending 'gdb-var-update)) 1137 (gdb-add-pending 'gdb-var-update))
1138 1138
1139(defconst gdb-var-update-regexp
1140 "{.*?name=\"\\(.*?\\)\".*?,\\(?:value=\\(\".*?\"\\),\\)?.*?\
1141in_scope=\"\\(.*?\\)\".*?}")
1142
1143(defun gdb-var-update-handler () 1139(defun gdb-var-update-handler ()
1140 (let ((changelist (gdb-get-field (gdb-json-partial-output) 'changelist)))
1144 (dolist (var gdb-var-list) 1141 (dolist (var gdb-var-list)
1145 (setcar (nthcdr 5 var) nil)) 1142 (setcar (nthcdr 5 var) nil))
1146 (goto-char (point-min)) 1143 (dolist (change changelist)
1147 (while (re-search-forward gdb-var-update-regexp nil t) 1144 (let* ((varnum (gdb-get-field change 'name))
1148 (let* ((varnum (match-string 1))
1149 (var (assoc varnum gdb-var-list))) 1145 (var (assoc varnum gdb-var-list)))
1150 (when var 1146 (when var
1151 (let ((match (match-string 3))) 1147 (let ((scope (gdb-get-field change 'in_scope)))
1152 (cond ((string-equal match "false") 1148 (cond ((string-equal scope "false")
1153 (if gdb-delete-out-of-scope 1149 (if gdb-delete-out-of-scope
1154 (gdb-var-delete-1 varnum) 1150 (gdb-var-delete-1 varnum)
1155 (setcar (nthcdr 5 var) 'out-of-scope))) 1151 (setcar (nthcdr 5 var) 'out-of-scope)))
1156 ((string-equal match "true") 1152 ((string-equal scope "true")
1157 (setcar (nthcdr 5 var) 'changed) 1153 (setcar (nthcdr 5 var) 'changed)
1158 (setcar (nthcdr 4 var) 1154 (setcar (nthcdr 4 var)
1159 (read (match-string 2)))) 1155 (gdb-get-field change 'value)))
1160 ((string-equal match "invalid") 1156 ((string-equal scope "invalid")
1161 (gdb-var-delete-1 varnum))))))) 1157 (gdb-var-delete-1 varnum))))))))
1162 (gdb-delete-pending 'gdb-var-update) 1158 (gdb-delete-pending 'gdb-var-update)
1163 (gdb-speedbar-update)) 1159 (gdb-speedbar-update))
1164 1160