aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Roberts2009-09-12 00:03:29 +0000
committerNick Roberts2009-09-12 00:03:29 +0000
commit51908af6af60ca2dd1c51de3febd741ee1834f4f (patch)
tree901078d2f10cfeee5786efd4a0468f95f6bff00a
parentdad61164c93ac4ea576df662374ec5fafc365a0a (diff)
downloademacs-51908af6af60ca2dd1c51de3febd741ee1834f4f.tar.gz
emacs-51908af6af60ca2dd1c51de3febd741ee1834f4f.zip
(gdb-var-list-children-regexp): Delete.
(gdb-var-list-children): Use json parsing.
-rw-r--r--lisp/progmodes/gdb-mi.el23
1 files changed, 9 insertions, 14 deletions
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 17e0c1c8872..dcf154da788 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1054,25 +1054,20 @@ With arg, enter name of variable to be watched in the minibuffer."
1054 varnum) 1054 varnum)
1055 `(lambda () (gdb-var-list-children-handler ,varnum))))) 1055 `(lambda () (gdb-var-list-children-handler ,varnum)))))
1056 1056
1057(defconst gdb-var-list-children-regexp
1058 "child={.*?name=\"\\(.+?\\)\".*?,exp=\"\\(.+?\\)\".*?,\
1059numchild=\"\\(.+?\\)\".*?,value=\\(\"\"\\|\".*?[^\\]\"\\)\
1060\\(}\\|.*?,\\(type=\"\\(.+?\\)\"\\)?.*?}\\)")
1061
1062(defun gdb-var-list-children-handler (varnum) 1057(defun gdb-var-list-children-handler (varnum)
1063 (goto-char (point-min)) 1058 (let ((var-list nil)
1064 (let ((var-list nil)) 1059 (children (gdb-get-field (gdb-json-partial-output "child") 'children)))
1065 (catch 'child-already-watched 1060 (catch 'child-already-watched
1066 (dolist (var gdb-var-list) 1061 (dolist (var gdb-var-list)
1067 (if (string-equal varnum (car var)) 1062 (if (string-equal varnum (car var))
1068 (progn 1063 (progn
1069 (push var var-list) 1064 (push var var-list)
1070 (while (re-search-forward gdb-var-list-children-regexp nil t) 1065 (dolist (child children)
1071 (let ((varchild (list (match-string 1) 1066 (let ((varchild (list (gdb-get-field child 'name)
1072 (match-string 2) 1067 (gdb-get-field child 'exp)
1073 (match-string 3) 1068 (gdb-get-field child 'numchild)
1074 (match-string 7) 1069 (gdb-get-field child 'type)
1075 (read (match-string 4)) 1070 (gdb-get-field child 'value)
1076 nil))) 1071 nil)))
1077 (if (assoc (car varchild) gdb-var-list) 1072 (if (assoc (car varchild) gdb-var-list)
1078 (throw 'child-already-watched nil)) 1073 (throw 'child-already-watched nil))