diff options
| author | Nick Roberts | 2009-09-12 00:03:29 +0000 |
|---|---|---|
| committer | Nick Roberts | 2009-09-12 00:03:29 +0000 |
| commit | 51908af6af60ca2dd1c51de3febd741ee1834f4f (patch) | |
| tree | 901078d2f10cfeee5786efd4a0468f95f6bff00a | |
| parent | dad61164c93ac4ea576df662374ec5fafc365a0a (diff) | |
| download | emacs-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.el | 23 |
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=\"\\(.+?\\)\".*?,\ | ||
| 1059 | numchild=\"\\(.+?\\)\".*?,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)) |